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: {