aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content_scripts/marks.coffee12
1 files changed, 9 insertions, 3 deletions
diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee
index ac653a52..fb1d1b1d 100644
--- a/content_scripts/marks.coffee
+++ b/content_scripts/marks.coffee
@@ -2,6 +2,7 @@
Marks =
previousPositionRegisters: [ "`", "'" ]
localRegisters: {}
+ currentRegistryEntry: null
mode: null
exit: (continuation = null) ->
@@ -26,10 +27,14 @@ Marks =
# If <Shift> is depressed, then it's a global mark, otherwise it's a local mark. This is consistent
# vim's [A-Z] for global marks and [a-z] for local marks. However, it also admits other non-Latin
# characters. The exceptions are "`" and "'", which are always considered local marks.
+ # The "swap" command option inverts global and local marks.
isGlobalMark: (event, keyChar) ->
- event.shiftKey and keyChar not in @previousPositionRegisters
+ shiftKey = event.shiftKey
+ shiftKey = not shiftKey if @currentRegistryEntry.options.swap
+ shiftKey and keyChar not in @previousPositionRegisters
- activateCreateMode: ->
+ activateCreateMode: (count, {registryEntry}) ->
+ @currentRegistryEntry = registryEntry
@mode = new Mode
name: "create-mark"
indicator: "Create mark..."
@@ -54,7 +59,8 @@ Marks =
@showMessage "Created local mark", keyChar
handlerStack.suppressEvent
- activateGotoMode: ->
+ activateGotoMode: (count, {registryEntry}) ->
+ @currentRegistryEntry = registryEntry
@mode = new Mode
name: "goto-mark"
indicator: "Go to mark..."