From 353958b98cdc21f64c77105defb5ec84c7e73124 Mon Sep 17 00:00:00 2001 From: Robert Krahn Date: Sun, 26 May 2013 18:56:13 -0700 Subject: [PATCH] emacs: exchangePointAndMark uses last mark if selection empty --- lib/ace/keyboard/emacs.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ace/keyboard/emacs.js b/lib/ace/keyboard/emacs.js index f0df7d87..25f22a52 100644 --- a/lib/ace/keyboard/emacs.js +++ b/lib/ace/keyboard/emacs.js @@ -429,7 +429,13 @@ exports.handler.addCommands({ }, exchangePointAndMark: { exec: function(editor) { - var range = editor.selection.getRange(); + var sel = editor.selection; + var range = sel.getRange(); + if (range.isEmpty()) { + var lastMark = editor.getLastEmacsMark(); + sel.selectToPosition(lastMark); + return; + } editor.selection.setSelectionRange(range, !editor.selection.isBackwards()); }, readonly: true,