summaryrefslogtreecommitdiff
path: root/codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js
diff options
context:
space:
mode:
Diffstat (limited to 'codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js')
-rw-r--r--codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js b/codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js
new file mode 100644
index 0000000..2a57e2f
--- /dev/null
+++ b/codemirror_ui/lib/CodeMirror-2.3/keymap/emacs.js
@@ -0,0 +1,29 @@
+// TODO number prefixes
+(function() {
+ // Really primitive kill-ring implementation.
+ var killRing = [];
+ function addToRing(str) {
+ killRing.push(str);
+ if (killRing.length > 50) killRing.shift();
+ }
+ function getFromRing() { return killRing[killRing.length - 1] || ""; }
+ function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }
+
+ CodeMirror.keyMap.emacs = {
+ "Ctrl-X": function(cm) {cm.setOption("keyMap", "emacs-Ctrl-X");},
+ "Ctrl-W": function(cm) {addToRing(cm.getSelection()); cm.replaceSelection("");},
+ "Ctrl-Alt-W": function(cm) {addToRing(cm.getSelection()); cm.replaceSelection("");},
+ "Alt-W": function(cm) {addToRing(cm.getSelection());},
+ "Ctrl-Y": function(cm) {cm.replaceSelection(getFromRing());},
+ "Alt-Y": function(cm) {cm.replaceSelection(popFromRing());},
+ "Ctrl-/": "undo", "Shift-Ctrl--": "undo", "Shift-Alt-,": "goDocStart", "Shift-Alt-.": "goDocEnd",
+ "Ctrl-S": "findNext", "Ctrl-R": "findPrev", "Ctrl-G": "clearSearch", "Shift-Alt-5": "replace",
+ "Ctrl-Z": "undo", "Cmd-Z": "undo", "Alt-/": "autocomplete",
+ fallthrough: ["basic", "emacsy"]
+ };
+
+ CodeMirror.keyMap["emacs-Ctrl-X"] = {
+ "Ctrl-S": "save", "Ctrl-W": "save", "S": "saveAll", "F": "open", "U": "undo", "K": "close",
+ auto: "emacs", nofallthrough: true
+ };
+})();