aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_visual.coffee
diff options
context:
space:
mode:
authorStephen Blott2015-01-21 19:35:24 +0000
committerStephen Blott2015-01-21 22:24:31 +0000
commitc4735264f46fdc62020c81bd8ff6f67ebd1dad9a (patch)
tree98b6d4a3e01a2b7a71eacec3e2acacb843a8ea60 /content_scripts/mode_visual.coffee
parent0ec38c1050b00845abaa2faa9f56d04c9d2b8992 (diff)
downloadvimium-c4735264f46fdc62020c81bd8ff6f67ebd1dad9a.tar.bz2
Edit mode: first working visual mode.
Diffstat (limited to 'content_scripts/mode_visual.coffee')
-rw-r--r--content_scripts/mode_visual.coffee45
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