1{"version":3,"sources":["../../node_modules/codemirror/keymap/emacs.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","Pos","posEq","a","b","line","ch","killRing","addToRing","str","push","length","shift","growRingTop","getFromRing","n","Math","min","popFromRing","pop","lastKill","kill","cm","from","to","ring","text","getRange","pos","isClean","gen","replaceRange","changeGeneration","byChar","dir","findPosH","byWord","byLine","findPosV","doc","sel","goalColumn","byPage","byParagraph","no","getLine","sawText","test","slice","fst","firstLine","lst","lastLine","clipPos","hasText","bySentence","sawWord","next","charAt","byExpr","wrap","findMatchingBracket","strict","match","forward","first","token","getTokenAt","after","start","end","string","newPos","getPrefix","precise","digits","state","emacsPrefix","clearPrefix","Number","repeated","cmd","f","execCommand","prefix","i","findEnd","by","move","extendSelection","getCursor","motion","killTo","selections","listSelections","cursor","head","killRegion","somethingSelected","selection","anchor","addPrefix","digit","on","maybeClearPrefix","maybeDuplicateInput","prefixPreservingKeys","Alt-G","Ctrl-X","Ctrl-Q","Ctrl-U","arg","emacsPrefixMap","hasOwnProperty","off","event","dup","origin","one","join","txt","replaceSelection","addPrefixMap","addKeyMap","prefixMap","maybeRemovePrefixMap","removeKeyMap","setMark","setCursor","setExtending","getExtending","clearMark","getInput","msg","openDialog","bottom","prompt","operateOnWord","op","toEnclosingExpr","stack","quit","emacs","keyMap","normalizeKeyMap","Ctrl-W","Ctrl-K","Alt-W","getSelection","Ctrl-Y","setSelection","Alt-Y","Ctrl-Space","Ctrl-Shift-2","Ctrl-F","Ctrl-B","Right","Left","Ctrl-D","Delete","Ctrl-H","Backspace","Alt-F","Alt-B","Alt-Right","Alt-Left","Alt-D","Alt-Backspace","Ctrl-N","Ctrl-P","Down","Up","Ctrl-A","Ctrl-E","End","Home","Alt-V","Ctrl-V","PageUp","PageDown","Ctrl-Up","Ctrl-Down","Alt-A","Alt-E","Alt-K","Ctrl-Alt-K","Ctrl-Alt-Backspace","Ctrl-Alt-F","Ctrl-Alt-B","Shift-Ctrl-Alt-2","Ctrl-Alt-T","leftStart","leftEnd","rightEnd","rightStart","Ctrl-Alt-U","Alt-Space","Ctrl-O","Ctrl-T","Alt-C","w","letter","search","toUpperCase","toLowerCase","Alt-U","Alt-L","Alt-;","Ctrl-/","Shift-Ctrl--","Ctrl-Z","Cmd-Z","Shift-Ctrl-Z","Shift-Alt-,","Shift-Alt-.","Ctrl-S","Ctrl-R","Ctrl-G","Shift-Alt-5","Alt-/","Enter","Ctrl-J","Tab","Alt-G G","num","isNaN","Ctrl-X Tab","indentSelection","getOption","Ctrl-X Ctrl-X","Ctrl-X Ctrl-S","Ctrl-X Ctrl-W","Ctrl-X S","Ctrl-X F","Ctrl-X U","Ctrl-X K","Ctrl-X Delete","Ctrl-X H","Ctrl-Q Tab","fallthrough","regPrefix","d","String"],"mappings":"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","file":"emacs.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n\n  // Kill 'ring'\n\n  var killRing = [];\n  function addToRing(str) {\n    killRing.push(str);\n    if (killRing.length > 50) killRing.shift();\n  }\n  function growRingTop(str) {\n    if (!killRing.length) return addToRing(str);\n    killRing[killRing.length - 1] += str;\n  }\n  function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || \"\"; }\n  function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }\n\n  var lastKill = null;\n\n  function kill(cm, from, to, ring, text) {\n    if (text == null) text = cm.getRange(from, to);\n\n    if (ring == \"grow\" && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))\n      growRingTop(text);\n    else if (ring !== false)\n      addToRing(text);\n    cm.replaceRange(\"\", from, to, \"+delete\");\n\n    if (ring == \"grow\") lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};\n    else lastKill = null;\n  }\n\n  // Boundaries of various units\n\n  function byChar(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"char\", true);\n  }\n\n  function byWord(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"word\", true);\n  }\n\n  function byLine(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"line\", cm.doc.sel.goalColumn);\n  }\n\n  function byPage(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"page\", cm.doc.sel.goalColumn);\n  }\n\n  function byParagraph(cm, pos, dir) {\n    var no = pos.line, line = cm.getLine(no);\n    var sawText = /\\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch));\n    var fst = cm.firstLine(), lst = cm.lastLine();\n    for (;;) {\n      no += dir;\n      if (no < fst || no > lst)\n        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));\n      line = cm.getLine(no);\n      var hasText = /\\S/.test(line);\n      if (hasText) sawText = true;\n      else if (sawText) return Pos(no, 0);\n    }\n  }\n\n  function bySentence(cm, pos, dir) {\n    var line = pos.line, ch = pos.ch;\n    var text = cm.getLine(pos.line), sawWord = false;\n    for (;;) {\n      var next = text.charAt(ch + (dir < 0 ? -1 : 0));\n      if (!next) { // End/beginning of line reached\n        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch);\n        text = cm.getLine(line + dir);\n        if (!/\\S/.test(text)) return Pos(line, ch);\n        line += dir;\n        ch = dir < 0 ? text.length : 0;\n        continue;\n      }\n      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0));\n      if (!sawWord) sawWord = /\\w/.test(next);\n      ch += dir;\n    }\n  }\n\n  function byExpr(cm, pos, dir) {\n    var wrap;\n    if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, {strict: true}))\n        && wrap.match && (wrap.forward ? 1 : -1) == dir)\n      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;\n\n    for (var first = true;; first = false) {\n      var token = cm.getTokenAt(pos);\n      var after = Pos(pos.line, dir < 0 ? token.start : token.end);\n      if (first && dir > 0 && token.end == pos.ch || !/\\w/.test(token.string)) {\n        var newPos = cm.findPosH(after, dir, \"char\");\n        if (posEq(after, newPos)) return pos;\n        else pos = newPos;\n      } else {\n        return after;\n      }\n    }\n  }\n\n  // Prefixes (only crudely supported)\n\n  function getPrefix(cm, precise) {\n    var digits = cm.state.emacsPrefix;\n    if (!digits) return precise ? null : 1;\n    clearPrefix(cm);\n    return digits == \"-\" ? -1 : Number(digits);\n  }\n\n  function repeated(cmd) {\n    var f = typeof cmd == \"string\" ? function(cm) { cm.execCommand(cmd); } : cmd;\n    return function(cm) {\n      var prefix = getPrefix(cm);\n      f(cm);\n      for (var i = 1; i < prefix; ++i) f(cm);\n    };\n  }\n\n  function findEnd(cm, pos, by, dir) {\n    var prefix = getPrefix(cm);\n    if (prefix < 0) { dir = -dir; prefix = -prefix; }\n    for (var i = 0; i < prefix; ++i) {\n      var newPos = by(cm, pos, dir);\n      if (posEq(newPos, pos)) break;\n      pos = newPos;\n    }\n    return pos;\n  }\n\n  function move(by, dir) {\n    var f = function(cm) {\n      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));\n    };\n    f.motion = true;\n    return f;\n  }\n\n  function killTo(cm, by, dir, ring) {\n    var selections = cm.listSelections(), cursor;\n    var i = selections.length;\n    while (i--) {\n      cursor = selections[i].head;\n      kill(cm, cursor, findEnd(cm, cursor, by, dir), ring);\n    }\n  }\n\n  function killRegion(cm, ring) {\n    if (cm.somethingSelected()) {\n      var selections = cm.listSelections(), selection;\n      var i = selections.length;\n      while (i--) {\n        selection = selections[i];\n        kill(cm, selection.anchor, selection.head, ring);\n      }\n      return true;\n    }\n  }\n\n  function addPrefix(cm, digit) {\n    if (cm.state.emacsPrefix) {\n      if (digit != \"-\") cm.state.emacsPrefix += digit;\n      return;\n    }\n    // Not active yet\n    cm.state.emacsPrefix = digit;\n    cm.on(\"keyHandled\", maybeClearPrefix);\n    cm.on(\"inputRead\", maybeDuplicateInput);\n  }\n\n  var prefixPreservingKeys = {\"Alt-G\": true, \"Ctrl-X\": true, \"Ctrl-Q\": true, \"Ctrl-U\": true};\n\n  function maybeClearPrefix(cm, arg) {\n    if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg))\n      clearPrefix(cm);\n  }\n\n  function clearPrefix(cm) {\n    cm.state.emacsPrefix = null;\n    cm.off(\"keyHandled\", maybeClearPrefix);\n    cm.off(\"inputRead\", maybeDuplicateInput);\n  }\n\n  function maybeDuplicateInput(cm, event) {\n    var dup = getPrefix(cm);\n    if (dup > 1 && event.origin == \"+input\") {\n      var one = event.text.join(\"\\n\"), txt = \"\";\n      for (var i = 1; i < dup; ++i) txt += one;\n      cm.replaceSelection(txt);\n    }\n  }\n\n  function addPrefixMap(cm) {\n    cm.state.emacsPrefixMap = true;\n    cm.addKeyMap(prefixMap);\n    cm.on(\"keyHandled\", maybeRemovePrefixMap);\n    cm.on(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  function maybeRemovePrefixMap(cm, arg) {\n    if (typeof arg == \"string\" && (/^\\d$/.test(arg) || arg == \"Ctrl-U\")) return;\n    cm.removeKeyMap(prefixMap);\n    cm.state.emacsPrefixMap = false;\n    cm.off(\"keyHandled\", maybeRemovePrefixMap);\n    cm.off(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  // Utilities\n\n  function setMark(cm) {\n    cm.setCursor(cm.getCursor());\n    cm.setExtending(!cm.getExtending());\n    cm.on(\"change\", function() { cm.setExtending(false); });\n  }\n\n  function clearMark(cm) {\n    cm.setExtending(false);\n    cm.setCursor(cm.getCursor());\n  }\n\n  function getInput(cm, msg, f) {\n    if (cm.openDialog)\n      cm.openDialog(msg + \": <input type=\\\"text\\\" style=\\\"width: 10em\\\"/>\", f, {bottom: true});\n    else\n      f(prompt(msg, \"\"));\n  }\n\n  function operateOnWord(cm, op) {\n    var start = cm.getCursor(), end = cm.findPosH(start, 1, \"word\");\n    cm.replaceRange(op(cm.getRange(start, end)), start, end);\n    cm.setCursor(end);\n  }\n\n  function toEnclosingExpr(cm) {\n    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;\n    var stack = [];\n    while (line >= cm.firstLine()) {\n      var text = cm.getLine(line);\n      for (var i = ch == null ? text.length : ch; i > 0;) {\n        var ch = text.charAt(--i);\n        if (ch == \")\")\n          stack.push(\"(\");\n        else if (ch == \"]\")\n          stack.push(\"[\");\n        else if (ch == \"}\")\n          stack.push(\"{\");\n        else if (/[\\(\\{\\[]/.test(ch) && (!stack.length || stack.pop() != ch))\n          return cm.extendSelection(Pos(line, i));\n      }\n      --line; ch = null;\n    }\n  }\n\n  function quit(cm) {\n    cm.execCommand(\"clearSearch\");\n    clearMark(cm);\n  }\n\n  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated};\n\n  // Actual keymap\n\n  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({\n    \"Ctrl-W\": function(cm) {kill(cm, cm.getCursor(\"start\"), cm.getCursor(\"end\"), true);},\n    \"Ctrl-K\": repeated(function(cm) {\n      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));\n      var text = cm.getRange(start, end);\n      if (!/\\S/.test(text)) {\n        text += \"\\n\";\n        end = Pos(start.line + 1, 0);\n      }\n      kill(cm, start, end, \"grow\", text);\n    }),\n    \"Alt-W\": function(cm) {\n      addToRing(cm.getSelection());\n      clearMark(cm);\n    },\n    \"Ctrl-Y\": function(cm) {\n      var start = cm.getCursor();\n      cm.replaceRange(getFromRing(getPrefix(cm)), start, start, \"paste\");\n      cm.setSelection(start, cm.getCursor());\n    },\n    \"Alt-Y\": function(cm) {cm.replaceSelection(popFromRing(), \"around\", \"paste\");},\n\n    \"Ctrl-Space\": setMark, \"Ctrl-Shift-2\": setMark,\n\n    \"Ctrl-F\": move(byChar, 1), \"Ctrl-B\": move(byChar, -1),\n    \"Right\": move(byChar, 1), \"Left\": move(byChar, -1),\n    \"Ctrl-D\": function(cm) { killTo(cm, byChar, 1, false); },\n    \"Delete\": function(cm) { killRegion(cm, false) || killTo(cm, byChar, 1, false); },\n    \"Ctrl-H\": function(cm) { killTo(cm, byChar, -1, false); },\n    \"Backspace\": function(cm) { killRegion(cm, false) || killTo(cm, byChar, -1, false); },\n\n    \"Alt-F\": move(byWord, 1), \"Alt-B\": move(byWord, -1),\n    \"Alt-Right\": move(byWord, 1), \"Alt-Left\": move(byWord, -1),\n    \"Alt-D\": function(cm) { killTo(cm, byWord, 1, \"grow\"); },\n    \"Alt-Backspace\": function(cm) { killTo(cm, byWord, -1, \"grow\"); },\n\n    \"Ctrl-N\": move(byLine, 1), \"Ctrl-P\": move(byLine, -1),\n    \"Down\": move(byLine, 1), \"Up\": move(byLine, -1),\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStart\",\n\n    \"Alt-V\": move(byPage, -1), \"Ctrl-V\": move(byPage, 1),\n    \"PageUp\": move(byPage, -1), \"PageDown\": move(byPage, 1),\n\n    \"Ctrl-Up\": move(byParagraph, -1), \"Ctrl-Down\": move(byParagraph, 1),\n\n    \"Alt-A\": move(bySentence, -1), \"Alt-E\": move(bySentence, 1),\n    \"Alt-K\": function(cm) { killTo(cm, bySentence, 1, \"grow\"); },\n\n    \"Ctrl-Alt-K\": function(cm) { killTo(cm, byExpr, 1, \"grow\"); },\n    \"Ctrl-Alt-Backspace\": function(cm) { killTo(cm, byExpr, -1, \"grow\"); },\n    \"Ctrl-Alt-F\": move(byExpr, 1), \"Ctrl-Alt-B\": move(byExpr, -1, \"grow\"),\n\n    \"Shift-Ctrl-Alt-2\": function(cm) {\n      var cursor = cm.getCursor();\n      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);\n    },\n    \"Ctrl-Alt-T\": function(cm) {\n      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1);\n      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1);\n      cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) +\n                      cm.getRange(leftStart, leftEnd), leftStart, rightEnd);\n    },\n    \"Ctrl-Alt-U\": repeated(toEnclosingExpr),\n\n    \"Alt-Space\": function(cm) {\n      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line);\n      while (from && /\\s/.test(text.charAt(from - 1))) --from;\n      while (to < text.length && /\\s/.test(text.charAt(to))) ++to;\n      cm.replaceRange(\" \", Pos(pos.line, from), Pos(pos.line, to));\n    },\n    \"Ctrl-O\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"start\"); }),\n    \"Ctrl-T\": repeated(function(cm) {\n      cm.execCommand(\"transposeChars\");\n    }),\n\n    \"Alt-C\": repeated(function(cm) {\n      operateOnWord(cm, function(w) {\n        var letter = w.search(/\\w/);\n        if (letter == -1) return w;\n        return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase();\n      });\n    }),\n    \"Alt-U\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toUpperCase(); });\n    }),\n    \"Alt-L\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toLowerCase(); });\n    }),\n\n    \"Alt-;\": \"toggleComment\",\n\n    \"Ctrl-/\": repeated(\"undo\"), \"Shift-Ctrl--\": repeated(\"undo\"),\n    \"Ctrl-Z\": repeated(\"undo\"), \"Cmd-Z\": repeated(\"undo\"),\n    \"Shift-Ctrl-Z\": \"redo\",\n    \"Shift-Alt-,\": \"goDocStart\", \"Shift-Alt-.\": \"goDocEnd\",\n    \"Ctrl-S\": \"findPersistentNext\", \"Ctrl-R\": \"findPersistentPrev\", \"Ctrl-G\": quit, \"Shift-Alt-5\": \"replace\",\n    \"Alt-/\": \"autocomplete\",\n    \"Enter\": \"newlineAndIndent\",\n    \"Ctrl-J\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"end\"); }),\n    \"Tab\": \"indentAuto\",\n\n    \"Alt-G G\": function(cm) {\n      var prefix = getPrefix(cm, true);\n      if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1);\n\n      getInput(cm, \"Goto line\", function(str) {\n        var num;\n        if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)\n          cm.setCursor(num - 1);\n      });\n    },\n\n    \"Ctrl-X Tab\": function(cm) {\n      cm.indentSelection(getPrefix(cm, true) || cm.getOption(\"indentUnit\"));\n    },\n    \"Ctrl-X Ctrl-X\": function(cm) {\n      cm.setSelection(cm.getCursor(\"head\"), cm.getCursor(\"anchor\"));\n    },\n    \"Ctrl-X Ctrl-S\": \"save\",\n    \"Ctrl-X Ctrl-W\": \"save\",\n    \"Ctrl-X S\": \"saveAll\",\n    \"Ctrl-X F\": \"open\",\n    \"Ctrl-X U\": repeated(\"undo\"),\n    \"Ctrl-X K\": \"close\",\n    \"Ctrl-X Delete\": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), \"grow\"); },\n    \"Ctrl-X H\": \"selectAll\",\n\n    \"Ctrl-Q Tab\": repeated(\"insertTab\"),\n    \"Ctrl-U\": addPrefixMap,\n    \"fallthrough\": \"default\"\n  });\n\n  var prefixMap = {\"Ctrl-G\": clearPrefix};\n  function regPrefix(d) {\n    prefixMap[d] = function(cm) { addPrefix(cm, d); };\n    keyMap[\"Ctrl-\" + d] = function(cm) { addPrefix(cm, d); };\n    prefixPreservingKeys[\"Ctrl-\" + d] = true;\n  }\n  for (var i = 0; i < 10; ++i) regPrefix(String(i));\n  regPrefix(\"-\");\n});\n"]}