use tokenIterator to find comment range
This commit is contained in:
parent
77dfd0b29c
commit
2424261f7a
2 changed files with 22 additions and 19 deletions
|
|
@ -41,6 +41,7 @@ define(function(require, exports, module) {
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
var FoldLine = require("./fold_line").FoldLine;
|
var FoldLine = require("./fold_line").FoldLine;
|
||||||
var Fold = require("./fold").Fold;
|
var Fold = require("./fold").Fold;
|
||||||
|
var TokenIterator = require("../token_iterator").TokenIterator;
|
||||||
|
|
||||||
function Folding() {
|
function Folding() {
|
||||||
/**
|
/**
|
||||||
|
|
@ -533,24 +534,26 @@ function Folding() {
|
||||||
|
|
||||||
range.start.column++;
|
range.start.column++;
|
||||||
} else {
|
} else {
|
||||||
var token = this.getTokenAt(cursor.row, cursor.column);
|
var iterator = new TokenIterator(this, cursor.row, cursor.column);
|
||||||
|
var token = iterator.getCurrentToken();
|
||||||
if (token && /^comment|string/.test(token.type)) {
|
if (token && /^comment|string/.test(token.type)) {
|
||||||
var startRow = cursor.row;
|
do {
|
||||||
var endRow = cursor.row;
|
t = iterator.stepBackward();
|
||||||
var t = token;
|
} while(t && t.type == token.type)
|
||||||
while ((t = this.getTokenAt(startRow - 1)) && t.type == token.type) {
|
|
||||||
startRow --;
|
iterator.stepForward();
|
||||||
token = t;
|
range.start.row = iterator.getCurrentTokenRow();
|
||||||
}
|
range.start.column = iterator.getCurrentTokenColumn() + 2;
|
||||||
range.start.row = startRow;
|
|
||||||
range.start.column = token.start + 2;
|
var iterator = new TokenIterator(this, cursor.row, cursor.column);
|
||||||
|
|
||||||
while ((t = this.getTokenAt(endRow + 1, 0)) && t.type == token.type) {
|
do {
|
||||||
endRow ++;
|
t = iterator.stepForward();
|
||||||
token = t;
|
} while(t && t.type == token.type)
|
||||||
}
|
t = iterator.stepBackward();
|
||||||
range.end.row = endRow;
|
|
||||||
range.end.column = token.start + token.value.length - 1;
|
range.end.row = iterator.getCurrentTokenRow();
|
||||||
|
range.end.column = iterator.getCurrentTokenColumn() + t.value.length - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -264,11 +264,11 @@ var VirtualRenderer = function(container, theme) {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$onGutterClick = function(e) {
|
this.$onGutterClick = function(e) {
|
||||||
var pageX = event.getDocumentX(e);
|
|
||||||
var pageY = event.getDocumentY(e);
|
var pageY = event.getDocumentY(e);
|
||||||
|
var row = this.screenToTextCoordinates(0, pageY).row;
|
||||||
|
|
||||||
this._dispatchEvent("gutter" + e.type, {
|
this._dispatchEvent("gutter" + e.type, {
|
||||||
row: this.screenToTextCoordinates(pageX, pageY).row,
|
row: row,
|
||||||
htmlEvent: e
|
htmlEvent: e
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue