change move to line start to act like in Eclipse and Netbeans

This commit is contained in:
Fabian Jakobs 2010-10-20 12:52:21 +02:00
commit 5f0213b110
2 changed files with 19 additions and 1 deletions

View file

@ -249,10 +249,21 @@ var Document = function(text, mode) {
}
};
/**
* Get a verbatim copy of the given line as it is in the document
*/
this.getLine = function(row) {
return this.lines[row] || "";
};
/**
* Get a line as it is displayed on screen. Tabs are replaced by spaces.
*/
this.getDisplayLine = function(row) {
var tab = new Array(this.getTabSize()+1).join(" ");
return this.lines[row].replace(/\t/g, tab);
};
this.getLines = function(firstRow, lastRow) {
return this.lines.slice(firstRow, lastRow+1);
};

View file

@ -281,7 +281,14 @@ var Selection = function(doc) {
};
this.moveCursorLineStart = function() {
this.moveCursorTo(this.selectionLead.row, 0);
var row = this.selectionLead.row;
var column = this.selectionLead.column;
var beforeCursor = this.doc.getDisplayLine(row).slice(0, column);
var leadingSpace = beforeCursor.match(/^\s+/);
if (!leadingSpace || leadingSpace[0].length >= column)
this.moveCursorTo(this.selectionLead.row, 0);
else
this.moveCursorTo(this.selectionLead.row, leadingSpace[0].length);
};
this.moveCursorLineEnd = function() {