diff options
| -rw-r--r-- | content_scripts/mode_edit.coffee | 37 | ||||
| -rw-r--r-- | content_scripts/mode_visual.coffee | 26 | ||||
| -rw-r--r-- | content_scripts/mode_visual_edit.coffee (renamed from content_scripts/mode_movement.coffee) | 60 | ||||
| -rw-r--r-- | manifest.json | 4 |
4 files changed, 60 insertions, 67 deletions
diff --git a/content_scripts/mode_edit.coffee b/content_scripts/mode_edit.coffee deleted file mode 100644 index 0b17044a..00000000 --- a/content_scripts/mode_edit.coffee +++ /dev/null @@ -1,37 +0,0 @@ - -class EditMode extends Movement - @activeElements = [] - - constructor: (options = {}) -> - defaults = - name: "edit" - exitOnEscape: true - alterMethod: "move" - keydown: (event) => if @isActive() then @handleKeydown event else @continueBubbling - keypress: (event) => if @isActive() then @handleKeypress event else @continueBubbling - keyup: (event) => if @isActive() then @handleKeyup event else @continueBubbling - - @element = document.activeElement - if @element and DomUtils.isEditable @element - super extend defaults, options - - handleKeydown: (event) -> - @stopBubblingAndTrue - handleKeypress: (event) -> - @suppressEvent - handleKeyup: (event) -> - @stopBubblingAndTrue - - isActive: -> - document.activeElement and DomUtils.isDOMDescendant @element, document.activeElement - - exit: (event, target) -> - super() - @element.blur() if target? and DomUtils.isDOMDescendant @element, target - EditMode.activeElements = EditMode.activeElements.filter (element) => element != @element - - updateBadge: (badge) -> - badge.badge = "E" if @isActive() - -root = exports ? window -root.EditMode = EditMode diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee deleted file mode 100644 index 64463a67..00000000 --- a/content_scripts/mode_visual.coffee +++ /dev/null @@ -1,26 +0,0 @@ - -class VisualMode extends Movement - constructor: (options = {}) -> - defaults = - name: "visual" - badge: "V" - exitOnEscape: true - exitOnBlur: options.targetElement - alterMethod: "extend" - - keypress: (event) => - @alwaysContinueBubbling => - unless event.metaKey or event.ctrlKey or event.altKey - switch String.fromCharCode event.charCode - when "y" - chrome.runtime.sendMessage - handler: "copyToClipboard" - data: window.getSelection().toString() - @exit() - # TODO(smblott). Suppress next keyup. - - super extend defaults, options - @debug = true - -root = exports ? window -root.VisualMode = VisualMode diff --git a/content_scripts/mode_movement.coffee b/content_scripts/mode_visual_edit.coffee index 5f35449c..3a8f5839 100644 --- a/content_scripts/mode_movement.coffee +++ b/content_scripts/mode_visual_edit.coffee @@ -71,5 +71,63 @@ class Movement extends MaintainCount else if "function" == typeof @movements[keyChar] @movements[keyChar]() +class VisualMode extends Movement + constructor: (options = {}) -> + defaults = + name: "visual" + badge: "V" + exitOnEscape: true + exitOnBlur: options.targetElement + alterMethod: "extend" + + keypress: (event) => + @alwaysContinueBubbling => + unless event.metaKey or event.ctrlKey or event.altKey + switch String.fromCharCode event.charCode + when "y" + chrome.runtime.sendMessage + handler: "copyToClipboard" + data: window.getSelection().toString() + @exit() + # TODO(smblott). Suppress next keyup. + + super extend defaults, options + @debug = true + +class EditMode extends Movement + @activeElements = [] + + constructor: (options = {}) -> + defaults = + name: "edit" + exitOnEscape: true + alterMethod: "move" + keydown: (event) => if @isActive() then @handleKeydown event else @continueBubbling + keypress: (event) => if @isActive() then @handleKeypress event else @continueBubbling + keyup: (event) => if @isActive() then @handleKeyup event else @continueBubbling + + @element = document.activeElement + if @element and DomUtils.isEditable @element + super extend defaults, options + + handleKeydown: (event) -> + @stopBubblingAndTrue + handleKeypress: (event) -> + @suppressEvent + handleKeyup: (event) -> + @stopBubblingAndTrue + + isActive: -> + document.activeElement and DomUtils.isDOMDescendant @element, document.activeElement + + exit: (event, target) -> + super() + @element.blur() if target? and DomUtils.isDOMDescendant @element, target + EditMode.activeElements = EditMode.activeElements.filter (element) => element != @element + + updateBadge: (badge) -> + badge.badge = "E" if @isActive() + root = exports ? window -root.Movement = Movement +root.VisualMode = VisualMode +root.EditMode = EditMode diff --git a/manifest.json b/manifest.json index 23c9c1e3..beb68530 100644 --- a/manifest.json +++ b/manifest.json @@ -47,9 +47,7 @@ "content_scripts/mode_insert.js", "content_scripts/mode_passkeys.js", "content_scripts/mode_find.js", - "content_scripts/mode_movement.js", - "content_scripts/mode_visual.js", - "content_scripts/mode_edit.js", + "content_scripts/mode_visual_edit.js", "content_scripts/vimium_frontend.js" ], "css": ["content_scripts/vimium.css"], |
