diff options
| author | anekos | 2011-07-15 07:56:11 +0900 | 
|---|---|---|
| committer | anekos | 2011-07-15 07:56:11 +0900 | 
| commit | f22218425207c8c3e6afc479b414d7001a6ef112 (patch) | |
| tree | 2e1bcc32612a783f75f37991a847b51bec5f60e4 | |
| parent | bb318316d7b62770036550431f9688818eb2038b (diff) | |
| download | vimperator-plugins-f22218425207c8c3e6afc479b414d7001a6ef112.tar.bz2 | |
入力欄を閉じたりできるさ
| -rw-r--r-- | google-plus-commando.js | 49 | 
1 files changed, 43 insertions, 6 deletions
diff --git a/google-plus-commando.js b/google-plus-commando.js index 45bc04d..8188747 100644 --- a/google-plus-commando.js +++ b/google-plus-commando.js @@ -35,7 +35,7 @@ THE POSSIBILITY OF SUCH DAMAGE.  // INFO {{{  let INFO =  <> -  <plugin name="GooglePlusCommando" version="1.5.0" +  <plugin name="GooglePlusCommando" version="1.6.0"            href="http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/google-plus-commando.js"            summary="The handy commands for Google+"            lang="en-US" @@ -49,7 +49,6 @@ let INFO =  </>;  // }}} -  (function () {    // Utils {{{ @@ -82,6 +81,14 @@ let INFO =    // }}} +  // State {{{ + +  const State = { +    cancel: null +  }; + +  // }}} +    // Elements {{{    const Names = { @@ -100,6 +107,7 @@ let INFO =        ||        Elements.postForm.querySelector('.editable').parentNode      ), +    get cancelPost () Elements.postEditor.querySelector('div.om[id$=".c"]'),      get submitButton () Elements.postForm.querySelector('[role="button"]'),      get notification () Elements.doc.querySelector('#gbi1'),      get viewer () MakeElement(Viewer, Elements.doc.querySelector('.' + Names.viewer)), @@ -113,6 +121,7 @@ let INFO =    function Entry (root) {      let self = { +      get root () root,        get permlink () [          e          for ([, e] in Iterator(A(root.querySelectorAll('a')))) @@ -131,7 +140,8 @@ let INFO =        get comment() (self.commentEditor || self.commentButton),        get plusone () root.querySelector('[g\\:type="plusone"]'),        get share () self.buttons[1], -      get menu () root.querySelector('[role="menu"]') +      get menu () root.querySelector('[role="menu"]'), +      get cancel () root.querySelector('[role="button"][id$=".cancel"]')      };      return self;    } @@ -189,12 +199,17 @@ let INFO =                             : ['k', ['vkeypress'], Elements.doc]        );      }), -    comment: function() click(Elements.currentEntry.comment), +    comment: function() { +      let entry = Elements.currentEntry; +      click(entry.comment); +      State.cancel = function () click(entry.cancel); +    },      plusone: function() click(Elements.currentEntry.plusone),      share: function() click(Elements.currentEntry.share),      post: function() {        buffer.scrollTop();        click(Elements.postEditor); +      State.cancel = function () click(Elements.cancelPost);      },      yank: function () {        let e = Elements.currentEntry.permlink; @@ -230,6 +245,9 @@ let INFO =    // Define mappiings {{{ +  const MatchingUrls = RegExp('^https://plus\\.google\\.com/*'); +  const MappingDescriptionSuffix = ' - Google plus Commando'; +    'comment plusone share next prev post yank notification cancel submit unfold'.split(/\s/).forEach(function (cmd) {      let gv =        liberator.globalVariables[ @@ -242,7 +260,7 @@ let INFO =      mappings.addUserMap(        [modes.NORMAL],        gv.split(/\s+/), -      cmd + ' - Google plus Commando', +      cmd + MappingDescriptionSuffix,        function (count) {          try {            func(count); @@ -252,11 +270,30 @@ let INFO =        },        {          count: func.length === 1, -        matchingUrls: RegExp('^https://plus\\.google\\.com/*') +        matchingUrls: MatchingUrls        }      );    }); +  mappings.addUserMap( +    [modes.INSERT], +    ['<Esc>'], +    'Escape from input area', +    function () { +      if (!liberator.focus && State.cancel) { +        State.cancel(); +        State.cancel = null; +        modes.reset(); +        return; +      } +      let esc = mappings.getDefault(modes.NORMAL, '<Esc>'); +      esc.action.apply(esc, arguments); +    }, +    { +      matchingUrls: MatchingUrls +    } +  ); +    // }}}    // Define hints {{{  | 
