diff --git a/build/demo/kitchen-sink/kitchen-sink-uncompressed.js b/build/demo/kitchen-sink/kitchen-sink-uncompressed.js index 4bec89f0..fe315e8d 100644 --- a/build/demo/kitchen-sink/kitchen-sink-uncompressed.js +++ b/build/demo/kitchen-sink/kitchen-sink-uncompressed.js @@ -11860,9 +11860,26 @@ var Selection = function(session) { this.selectionLead.row, this.selectionLead.column ); - var screenCol = (chars == 0 && this.$desiredColumn) || screenPos.column; + + var screenCol = (chars === 0 && this.$desiredColumn) || screenPos.column; + + // so here is the deal. First checkout what the content of ur current and ur target line is + var currentLine = (this.session.getLines(screenPos.row, screenPos.row) || [""])[0], + targetLine = (this.session.getLines(screenPos.row + rows, screenPos.row + rows) || [""])[0]; + + // if you are at the EOL of your current line, and your targetline is all whitespace + if (currentLine && targetLine && + currentLine.length === screenPos.column && targetLine.match(/^\s*$/)) { + // set the new column to the EOL of the target line + screenCol = this.session.getTabString(targetLine).length; + // update the chars so we are sure that the desired column will be updated + chars = 1; + }; + var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenCol); - this.moveCursorTo(docPos.row, docPos.column + chars, chars == 0); + + // move the cursor and update the desired column + this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); }; this.moveCursorToPosition = function(position) { diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index ab059f20..78fbd883 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -548,95 +548,6 @@ exports.launch = function(env) { } }); - canon.addCommand({ - name: "fold", - bindKey: { - win: "Alt-L", - mac: "Alt-L", - sender: "editor" - }, - exec: function(env) { - toggleFold(env, false); - } - }); - - canon.addCommand({ - name: "unfold", - bindKey: { - win: "Alt-Shift-L", - mac: "Alt-Shift-L", - sender: "editor" - }, - exec: function(env) { - toggleFold(env, true); - } - }); - - function isCommentRow(row) { - var session = env.editor.session; - var token; - var tokens = session.getTokens(row, row)[0].tokens; - var c = 0; - for (var i = 0; i < tokens.length; i++) { - token = tokens[i]; - if (/^comment/.test(token.type)) { - return c; - } else if (!/^text/.test(token.type)) { - return false; - } - c += token.value.length; - } - return false; - } - - function toggleFold(env, tryToUnfold) { - var session = env.editor.session; - var selection = env.editor.selection; - var range = selection.getRange(); - var addFold; - - if(range.isEmpty()) { - var br = session.findMatchingBracket(range.start); - var fold = session.getFoldAt(range.start.row, range.start.column); - var column; - - if (fold) { - session.expandFold(fold); - selection.setSelectionRange(fold.range); - } else if (br) { - if (range.compare(br.row, br.column) == 1) - range.end = br; - else - range.start = br; - addFold = true; - } else if ((column = isCommentRow(range.start.row)) !== false) { - var firstCommentRow = range.start.row; - var lastCommentRow = range.start.row; - var t; - while ((t = isCommentRow(firstCommentRow - 1)) !== false) { - firstCommentRow --; - column = t; - } - while (isCommentRow(lastCommentRow + 1) !== false) { - lastCommentRow ++; - } - range.start.row = firstCommentRow; - range.start.column = column + 2; - range.end.row = lastCommentRow; - range.end.column = session.getLine(lastCommentRow).length - 1; - addFold = true; - } - } else { - addFold = true; - } - if (addFold) { - var placeHolder = session.getTextRange(range); - if(placeHolder.length < 3) - return; - placeHolder = placeHolder.trim().substring(0, 3).replace(' ','','g') + "..."; - session.addFold(placeHolder, range); - } - } }; var themes = {}; diff --git a/index.html b/index.html index 0edc5a36..5a270e39 100644 --- a/index.html +++ b/index.html @@ -55,6 +55,8 @@