aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_scripts/bg_utils.coffee14
-rw-r--r--background_scripts/commands.coffee57
2 files changed, 32 insertions, 39 deletions
diff --git a/background_scripts/bg_utils.coffee b/background_scripts/bg_utils.coffee
index 27ecb0cc..26033476 100644
--- a/background_scripts/bg_utils.coffee
+++ b/background_scripts/bg_utils.coffee
@@ -77,18 +77,12 @@ BgUtils =
logElement.value += "#{dateString}: #{message}\n"
logElement.scrollTop = 2000000000
- # Remove comments from a list of lines and merge lines where the last character on the preceding line is "\".
- parseLines: (lines) ->
- previousText = []
- for line in lines
- line = line.replace /^\s+/g, ''
+ # Remove comments and leading/trailing whitespace from a list of lines, and merge lines where the last
+ # character on the preceding line is "\".
+ parseLines: (text) ->
+ for line in text.replace(/\\\n/g, "").split("\n").map((line) -> line.trim())
continue if line.length == 0
continue if line[0] in '#"'
- if line[line.length-1] == "\\"
- previousText.push line[...line.length-1]
- continue
- line = previousText.join(" ") + line
- previousText = []
line
root.BgUtils = BgUtils
diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee
index d24bdb05..6aa8ca0d 100644
--- a/background_scripts/commands.coffee
+++ b/background_scripts/commands.coffee
@@ -61,35 +61,34 @@ Commands =
[key[0], @parseKeySequence(key[1..])...]
parseCustomKeyMappings: (customKeyMappings) ->
- for line in BgUtils.parseLines customKeyMappings.split "\n"
- unless line[0] == "\"" or line[0] == "#"
- tokens = line.replace(/\s+$/, "").split /\s+/
- switch tokens[0]
- when "map"
- [ _, key, command, optionList... ] = tokens
- keySequence = @parseKeySequence key
- if command? and @availableCommands[command]
- key = keySequence.join ""
- BgUtils.log "mapping [\"#{keySequence.join '", "'}\"] to #{command}"
- @mapKeyToCommand { key, command, keySequence, options: @parseCommandOptions command, optionList }
- else
- BgUtils.log "skipping [\"#{keySequence.join '", "'}\"] for #{command} -- something is not right"
-
- when "unmap"
- if tokens.length == 2
- keySequence = @parseKeySequence tokens[1]
- key = keySequence.join ""
- BgUtils.log "Unmapping #{key}"
- delete @keyToCommandRegistry[key]
-
- when "unmapAll"
- @keyToCommandRegistry = {}
-
- when "mapkey"
- if tokens.length == 3
- fromChar = @parseKeySequence tokens[1]
- toChar = @parseKeySequence tokens[2]
- @mapKeyRegistry[fromChar[0]] = toChar[0] if fromChar.length == toChar.length == 1
+ for line in BgUtils.parseLines customKeyMappings
+ tokens = line.split /\s+/
+ switch tokens[0]
+ when "map"
+ [ _, key, command, optionList... ] = tokens
+ keySequence = @parseKeySequence key
+ if command? and @availableCommands[command]
+ key = keySequence.join ""
+ BgUtils.log "mapping [\"#{keySequence.join '", "'}\"] to #{command}"
+ @mapKeyToCommand { key, command, keySequence, options: @parseCommandOptions command, optionList }
+ else
+ BgUtils.log "skipping [\"#{keySequence.join '", "'}\"] for #{command} -- something is not right"
+
+ when "unmap"
+ if tokens.length == 2
+ keySequence = @parseKeySequence tokens[1]
+ key = keySequence.join ""
+ BgUtils.log "Unmapping #{key}"
+ delete @keyToCommandRegistry[key]
+
+ when "unmapAll"
+ @keyToCommandRegistry = {}
+
+ when "mapkey"
+ if tokens.length == 3
+ fromChar = @parseKeySequence tokens[1]
+ toChar = @parseKeySequence tokens[2]
+ @mapKeyRegistry[fromChar[0]] = toChar[0] if fromChar.length == toChar.length == 1
# Push the key mapping for passNextKey into Settings so that it's available in the front end for insert
# mode. We exclude single-key mappings (that is, printable keys) because when users press printable keys