   TL Ctrl-Up
   WI Ctrl-Pause
 '''.split('\n').forEach (l) ->
-  [xx, keys...] = l.split /\s+/; createCommand xx; keys.forEach (key) -> CodeMirror.keyMap.dyalog[key] = xx; return
-
-# CodeMirror provides a goLineStartSmart but not a goLineEndSmart command.
-CodeMirror.keyMap.dyalog.End = 'goLineEndSmart'
-CodeMirror.commands.goLineEndSmart = (cm) ->
+  [xx, keys...] = l.split /\s+/; createCommand xx; keys.forEach (key) -> CodeMirror.keyMap.dyalogDefault[key] = xx; return
+
+CodeMirror.commands.goLineEndSmart = (cm) -> # CodeMirror provides a goLineStartSmart but not a goLineEndSmart command.
   cm.extendSelectionsBy(
     ->
       c = cm.getCursor(); l = c.line; s = cm.getLine l; n = s.length; m = s.replace(/\ +$/, '').length


ctid = 0 # backquote completion timeout id

CodeMirror.keyMap.dyalog = inherit fallthrough: 'default', F1: (cm) ->
  c = cm.getCursor(); s = cm.getLine(c.line).toLowerCase()
  u =
    if      m = /^ *(\)[a-z]+).*$/.exec s then helpurls[m[1]] || helpurls.WELCOME

window.onhelp = -> false # prevent IE from acting silly on F1

prefs.prefixKey (x, old) -> # change listener
  if x != old then m = CodeMirror.keyMap.dyalogDefault; m["'#{x}'"] = m["'#{old}'"]; delete m["'#{old}'"]
  return

squiggleDescriptions =
