From 0ea9428cd8a18c5d5e8127550f70e13fa286b33b Mon Sep 17 00:00:00 2001 From: Robert Krahn Date: Sun, 26 May 2013 21:04:34 -0700 Subject: [PATCH] emacs: C-u C-x C-x fix (exchangePointAndMark) --- lib/ace/keyboard/emacs.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/ace/keyboard/emacs.js b/lib/ace/keyboard/emacs.js index 9b649600..2c2cf34d 100644 --- a/lib/ace/keyboard/emacs.js +++ b/lib/ace/keyboard/emacs.js @@ -458,17 +458,25 @@ exports.handler.addCommands({ multiSelectAction: "forEach" }, exchangePointAndMark: { - exec: function(editor) { + exec: function(editor, args) { var sel = editor.selection; + if (args.count) { + var pos = editor.getCursorPosition(); + sel.clearSelection(); + sel.moveCursorToPosition(editor.popEmacsMark()); + editor.pushEmacsMark(pos); + return; + } + var lastMark = editor.getLastEmacsMark(); var range = sel.getRange(); if (range.isEmpty()) { - var lastMark = editor.getLastEmacsMark(); sel.selectToPosition(lastMark); return; } - editor.selection.setSelectionRange(range, !editor.selection.isBackwards()); + sel.setSelectionRange(range, !sel.isBackwards()); }, readonly: true, + handlesCount: true, multiSelectAction: "forEach" }, killWord: {