Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/test/emacs_test.js
1293 views
(function() {1"use strict";23var Pos = CodeMirror.Pos;4namespace = "emacs_";56var eventCache = {};7function fakeEvent(keyName) {8var event = eventCache[key];9if (event) return event;1011var ctrl, shift, alt;12var key = keyName.replace(/\w+-/g, function(type) {13if (type == "Ctrl-") ctrl = true;14else if (type == "Alt-") alt = true;15else if (type == "Shift-") shift = true;16return "";17});18var code;19for (var c in CodeMirror.keyNames)20if (CodeMirror.keyNames[c] == key) { code = c; break; }21if (c == null) throw new Error("Unknown key: " + key);2223return eventCache[keyName] = {24type: "keydown", keyCode: code, ctrlKey: ctrl, shiftKey: shift, altKey: alt,25preventDefault: function(){}, stopPropagation: function(){}26};27}2829function sim(name, start /*, actions... */) {30var keys = Array.prototype.slice.call(arguments, 2);31testCM(name, function(cm) {32for (var i = 0; i < keys.length; ++i) {33var cur = keys[i];34if (cur instanceof Pos) cm.setCursor(cur);35else if (cur.call) cur(cm);36else cm.triggerOnKeyDown(fakeEvent(cur));37}38}, {keyMap: "emacs", value: start, mode: "javascript"});39}4041function at(line, ch) { return function(cm) { eqPos(cm.getCursor(), Pos(line, ch)); }; }42function txt(str) { return function(cm) { eq(cm.getValue(), str); }; }4344sim("motionHSimple", "abc", "Ctrl-F", "Ctrl-F", "Ctrl-B", at(0, 1));45sim("motionHMulti", "abcde",46"Ctrl-4", "Ctrl-F", at(0, 4), "Ctrl--", "Ctrl-2", "Ctrl-F", at(0, 2),47"Ctrl-5", "Ctrl-B", at(0, 0));4849sim("motionHWord", "abc. def ghi",50"Alt-F", at(0, 3), "Alt-F", at(0, 8),51"Ctrl-B", "Alt-B", at(0, 5), "Alt-B", at(0, 0));52sim("motionHWordMulti", "abc. def ghi ",53"Ctrl-3", "Alt-F", at(0, 12), "Ctrl-2", "Alt-B", at(0, 5),54"Ctrl--", "Alt-B", at(0, 8));5556sim("motionVSimple", "a\nb\nc\n", "Ctrl-N", "Ctrl-N", "Ctrl-P", at(1, 0));57sim("motionVMulti", "a\nb\nc\nd\ne\n",58"Ctrl-2", "Ctrl-N", at(2, 0), "Ctrl-F", "Ctrl--", "Ctrl-N", at(1, 1),59"Ctrl--", "Ctrl-3", "Ctrl-P", at(4, 1));6061sim("killYank", "abc\ndef\nghi",62"Ctrl-F", "Ctrl-Space", "Ctrl-N", "Ctrl-N", "Ctrl-W", "Ctrl-E", "Ctrl-Y",63txt("ahibc\ndef\ng"));64sim("killRing", "abcdef",65"Ctrl-Space", "Ctrl-F", "Ctrl-W", "Ctrl-Space", "Ctrl-F", "Ctrl-W",66"Ctrl-Y", "Alt-Y",67txt("acdef"));68sim("copyYank", "abcd",69"Ctrl-Space", "Ctrl-E", "Alt-W", "Ctrl-Y",70txt("abcdabcd"));7172sim("killLineSimple", "foo\nbar", "Ctrl-F", "Ctrl-K", txt("f\nbar"));73sim("killLineEmptyLine", "foo\n \nbar", "Ctrl-N", "Ctrl-K", txt("foo\nbar"));74sim("killLineMulti", "foo\nbar\nbaz",75"Ctrl-F", "Ctrl-F", "Ctrl-K", "Ctrl-K", "Ctrl-K", "Ctrl-A", "Ctrl-Y",76txt("o\nbarfo\nbaz"));7778sim("moveByParagraph", "abc\ndef\n\n\nhij\nklm\n\n",79"Ctrl-F", "Ctrl-Down", at(2, 0), "Ctrl-Down", at(6, 0),80"Ctrl-N", "Ctrl-Up", at(3, 0), "Ctrl-Up", at(0, 0),81Pos(1, 2), "Ctrl-Down", at(2, 0), Pos(4, 2), "Ctrl-Up", at(3, 0));82sim("moveByParagraphMulti", "abc\n\ndef\n\nhij\n\nklm",83"Ctrl-U", "2", "Ctrl-Down", at(3, 0),84"Shift-Alt-.", "Ctrl-3", "Ctrl-Up", at(1, 0));8586sim("moveBySentence", "sentence one! sentence\ntwo\n\nparagraph two",87"Alt-E", at(0, 13), "Alt-E", at(1, 3), "Ctrl-F", "Alt-A", at(0, 13));8889sim("moveByExpr", "function foo(a, b) {}",90"Ctrl-Alt-F", at(0, 8), "Ctrl-Alt-F", at(0, 12), "Ctrl-Alt-F", at(0, 18),91"Ctrl-Alt-B", at(0, 12), "Ctrl-Alt-B", at(0, 9));92sim("moveByExprMulti", "foo bar baz bug",93"Ctrl-2", "Ctrl-Alt-F", at(0, 7),94"Ctrl--", "Ctrl-Alt-F", at(0, 4),95"Ctrl--", "Ctrl-2", "Ctrl-Alt-B", at(0, 11));96sim("delExpr", "var x = [\n a,\n b\n c\n];",97Pos(0, 8), "Ctrl-Alt-K", txt("var x = ;"), "Ctrl-/",98Pos(4, 1), "Ctrl-Alt-Backspace", txt("var x = ;"));99sim("delExprMulti", "foo bar baz",100"Ctrl-2", "Ctrl-Alt-K", txt(" baz"),101"Ctrl-/", "Ctrl-E", "Ctrl-2", "Ctrl-Alt-Backspace", txt("foo "));102103sim("justOneSpace", "hi bye ",104Pos(0, 4), "Alt-Space", txt("hi bye "),105Pos(0, 4), "Alt-Space", txt("hi b ye "),106"Ctrl-A", "Alt-Space", "Ctrl-E", "Alt-Space", txt(" hi b ye "));107108sim("openLine", "foo bar", "Alt-F", "Ctrl-O", txt("foo\n bar"))109110sim("transposeChar", "abcd\n\ne",111"Ctrl-F", "Ctrl-T", "Ctrl-T", txt("bcad\n\ne"), at(0, 3),112"Ctrl-F", "Ctrl-T", "Ctrl-T", "Ctrl-T", txt("bcda\n\ne"), at(0, 4),113"Ctrl-F", "Ctrl-T", txt("bcd\na\ne"), at(1, 1));114115sim("manipWordCase", "foo BAR bAZ",116"Alt-C", "Alt-L", "Alt-U", txt("Foo bar BAZ"),117"Ctrl-A", "Alt-U", "Alt-L", "Alt-C", txt("FOO bar Baz"));118sim("manipWordCaseMulti", "foo Bar bAz",119"Ctrl-2", "Alt-U", txt("FOO BAR bAz"),120"Ctrl-A", "Ctrl-3", "Alt-C", txt("Foo Bar Baz"));121122sim("upExpr", "foo {\n bar[];\n baz(blah);\n}",123Pos(2, 7), "Ctrl-Alt-U", at(2, 5), "Ctrl-Alt-U", at(0, 4));124sim("transposeExpr", "do foo[bar] dah",125Pos(0, 6), "Ctrl-Alt-T", txt("do [bar]foo dah"));126127sim("clearMark", "abcde", Pos(0, 2), "Ctrl-Space", "Ctrl-F", "Ctrl-F",128"Ctrl-G", "Ctrl-W", txt("abcde"));129130testCM("save", function(cm) {131var saved = false;132CodeMirror.commands.save = function(cm) { saved = cm.getValue(); };133cm.triggerOnKeyDown(fakeEvent("Ctrl-X"));134cm.triggerOnKeyDown(fakeEvent("Ctrl-S"));135is(saved, "hi");136}, {value: "hi", keyMap: "emacs"});137})();138139140