From c4d6b7f6cd528966b170863438d3f645d82b9295 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 24 Feb 2016 15:39:04 +0000 Subject: [PATCH] keep cursor position when removing trailing space on save --- node_modules/ace/lib/ace/ext/whitespace.js | 21 +++++++++++++++++++-- package.json | 3 ++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/node_modules/ace/lib/ace/ext/whitespace.js b/node_modules/ace/lib/ace/ext/whitespace.js index eabefafb..7f39b092 100644 --- a/node_modules/ace/lib/ace/ext/whitespace.js +++ b/node_modules/ace/lib/ace/ext/whitespace.js @@ -117,16 +117,33 @@ exports.detectIndentation = function(session) { return indent; }; -exports.trimTrailingSpace = function(session, trimEmpty) { +/** + * EditSession session + * options.trimEmpty trim empty lines too + * options.keepCursorPosition do not trim whitespace before the cursor + */ +exports.trimTrailingSpace = function(session, options) { var doc = session.getDocument(); var lines = doc.getAllLines(); - var min = trimEmpty ? -1 : 0; + var min = options && options.trimEmpty ? -1 : 0; + var cursors = session.selection.rangeCount + ? session.selection.ranges.map(function(x) { return x.cursor; }) + : [session.selection.getCursor()]; + var ci = options && options.keepCursorPosition ? 0 : -1; + var cursorRow = cursors[ci] && cursors[ci].row; for (var i = 0, l=lines.length; i < l; i++) { var line = lines[i]; var index = line.search(/\s+$/); + if (i == cursorRow) { + if (index < cursors[ci].column) + index = min; + ci++; + cursorRow = cursors[ci] ? cursors[ci].row : -1; + } + if (index > min) doc.removeInLine(i, index, line.length); } diff --git a/package.json b/package.json index 99376f7f..a120d3a5 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "c9.ide.language.javascript.tern": "#bf1072b11a", "c9.ide.language.javascript.infer": "#0561c69d67", "c9.ide.language.jsonalyzer": "#bf12af3d0a", + "c9.ide.language.codeintel": "#undefined", "c9.ide.collab": "#00bd850bba", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", @@ -80,7 +81,7 @@ "c9.ide.ace.repl": "#4b88a85b7b", "c9.ide.ace.split": "#0ae0151c78", "c9.ide.ace.statusbar": "#3aab0b67e0", - "c9.ide.ace.stripws": "#cf0f42ac59", + "c9.ide.ace.stripws": "#8885016b9e", "c9.ide.behaviors": "#db32109ebc", "c9.ide.closeconfirmation": "#cee4674141", "c9.ide.configuration": "#528234d97d",