aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/mode_insert.coffee27
-rw-r--r--content_scripts/vimium_frontend.coffee3
2 files changed, 30 insertions, 0 deletions
diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee
index 0b040e5d..8dd02530 100644
--- a/content_scripts/mode_insert.coffee
+++ b/content_scripts/mode_insert.coffee
@@ -98,5 +98,32 @@ class InsertMode extends Mode
@suppressedEvent: null
@suppressEvent: (event) -> @suppressedEvent = event
+# This implements the pasNexKey command.
+class PassNextKeyMode extends Mode
+ constructor: (count = 1) ->
+ seenKeyDown = false
+ keyDownCount = 0
+
+ super
+ name: "pass-next-key"
+ indicator: "Pass next key."
+ # We exit on blur because, once we lose the focus, we can no longer track key events.
+ exitOnBlur: window
+ keypress: =>
+ @stopBubblingAndTrue
+
+ keydown: =>
+ seenKeyDown = true
+ keyDownCount += 1
+ @stopBubblingAndTrue
+
+ keyup: =>
+ if seenKeyDown
+ unless 0 < --keyDownCount
+ unless 0 < --count
+ @exit()
+ @stopBubblingAndTrue
+
root = exports ? window
root.InsertMode = InsertMode
+root.PassNextKeyMode = PassNextKeyMode
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index f78b79b0..01bd4ebc 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -368,6 +368,9 @@ extend window,
enterVisualLineMode: ->
new VisualLineMode
+ passNextKey: (count) ->
+ new PassNextKeyMode count
+
focusInput: do ->
# Track the most recently focused input element.
recentlyFocusedElement = null