diff options
| author | Stephen Blott | 2015-01-21 19:35:24 +0000 |
|---|---|---|
| committer | Stephen Blott | 2015-01-21 22:24:31 +0000 |
| commit | c4735264f46fdc62020c81bd8ff6f67ebd1dad9a (patch) | |
| tree | 98b6d4a3e01a2b7a71eacec3e2acacb843a8ea60 /content_scripts/mode_visual.coffee | |
| parent | 0ec38c1050b00845abaa2faa9f56d04c9d2b8992 (diff) | |
| download | vimium-c4735264f46fdc62020c81bd8ff6f67ebd1dad9a.tar.bz2 | |
Edit mode: first working visual mode.
Diffstat (limited to 'content_scripts/mode_visual.coffee')
| -rw-r--r-- | content_scripts/mode_visual.coffee | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee index 2580106d..36501f3e 100644 --- a/content_scripts/mode_visual.coffee +++ b/content_scripts/mode_visual.coffee @@ -1,20 +1,45 @@ -class VisualMode extends Mode - constructor: (element=null) -> - super +class VisualMode extends Movement + constructor: (options = {}) -> + defaults = name: "visual" badge: "V" exitOnEscape: true - exitOnBlur: element - - keydown: (event) => - return @suppressEvent + exitOnBlur: options.targetElement + alterMethod: "extend" + keydown: (event) => @handleKeyEvent event, KeyboardUtils.getKeyChar event + keyup: (event) => @handleKeyEvent event, KeyboardUtils.getKeyChar event keypress: (event) => - return @suppressEvent + keyChar = String.fromCharCode event.charCode + @handleKeyEvent event, keyChar, => @move keyChar + + super extend defaults, options + + handleKeyEvent: (event, keyChar, func = ->) -> + if event.metaKey or event.ctrlKey or event.altKey + @stopBubblingAndTrue + else if event.type == "keypress" and @isMoveChar event, keyChar + func keyChar + @suppressEvent + else if @handleVisualModeKey(keyChar) or @isMoveChar event, keyChar + DomUtils.suppressPropagation + @stopBubblingAndTrue + else if KeyboardUtils.isPrintable event + @suppressEvent + else + @stopBubblingAndTrue - keyup: (event) => - return @suppressEvent + handleVisualModeKey: (keyChar) -> + switch keyChar + when "y" + chrome.runtime.sendMessage + handler: "copyToClipboard" + data: window.getSelection().toString() + @exit() + true + else + false root = exports ? window root.VisualMode = VisualMode |
