minor fixes
This commit is contained in:
parent
10860343ab
commit
9b489c752b
9 changed files with 88 additions and 69 deletions
|
|
@ -950,6 +950,9 @@ var EditSession = function(text, mode) {
|
||||||
|
|
||||||
|
|
||||||
if (!$isPlaceholder) {
|
if (!$isPlaceholder) {
|
||||||
|
// experimental method, used by c9 findiniles
|
||||||
|
if (mode.attachToSession)
|
||||||
|
mode.attachToSession(this);
|
||||||
this.$options.wrapMethod.set.call(this, this.$wrapMethod);
|
this.$options.wrapMethod.set.call(this, this.$wrapMethod);
|
||||||
this.$setFolding(mode.foldingRules);
|
this.$setFolding(mode.foldingRules);
|
||||||
this.bgTokenizer.start(0);
|
this.bgTokenizer.start(0);
|
||||||
|
|
@ -1731,9 +1734,10 @@ var EditSession = function(text, mode) {
|
||||||
// Inside of the foldLine range. Need to split stuff up.
|
// Inside of the foldLine range. Need to split stuff up.
|
||||||
if (cmp == 0) {
|
if (cmp == 0) {
|
||||||
foldLine = foldLine.split(start.row, start.column);
|
foldLine = foldLine.split(start.row, start.column);
|
||||||
|
if (foldLine) {
|
||||||
foldLine.shiftRow(len);
|
foldLine.shiftRow(len);
|
||||||
foldLine.addRemoveChars(
|
foldLine.addRemoveChars(lastRow, 0, end.column - start.column);
|
||||||
lastRow, 0, end.column - start.column);
|
}
|
||||||
} else
|
} else
|
||||||
// Infront of the foldLine but same row. Need to shift column.
|
// Infront of the foldLine but same row. Need to shift column.
|
||||||
if (cmp == -1) {
|
if (cmp == -1) {
|
||||||
|
|
|
||||||
|
|
@ -525,25 +525,23 @@ var Editor = function(renderer, session) {
|
||||||
this.$highlightPending = true;
|
this.$highlightPending = true;
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
self.$highlightPending = false;
|
self.$highlightPending = false;
|
||||||
|
var session = self.session;
|
||||||
var pos = self.session.findMatchingBracket(self.getCursorPosition());
|
if (!session || !session.bgTokenizer) return;
|
||||||
|
var pos = session.findMatchingBracket(self.getCursorPosition());
|
||||||
if (pos) {
|
if (pos) {
|
||||||
var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);
|
var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);
|
||||||
} else if (self.session.$mode.getMatching) {
|
} else if (session.$mode.getMatching) {
|
||||||
var range = self.session.$mode.getMatching(self.session);
|
var range = session.$mode.getMatching(self.session);
|
||||||
}
|
}
|
||||||
if (range)
|
if (range)
|
||||||
self.session.$bracketHighlight = self.session.addMarker(range, "ace_bracket", "text");
|
session.$bracketHighlight = session.addMarker(range, "ace_bracket", "text");
|
||||||
}, 50);
|
}, 50);
|
||||||
};
|
};
|
||||||
|
|
||||||
// todo: move to mode.getMatching
|
// todo: move to mode.getMatching
|
||||||
this.$highlightTags = function() {
|
this.$highlightTags = function() {
|
||||||
var session = this.session;
|
if (this.$highlightTagPending)
|
||||||
|
|
||||||
if (this.$highlightTagPending) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// perform highlight async to not block the browser during navigation
|
// perform highlight async to not block the browser during navigation
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
@ -551,6 +549,9 @@ var Editor = function(renderer, session) {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
self.$highlightTagPending = false;
|
self.$highlightTagPending = false;
|
||||||
|
|
||||||
|
var session = self.session;
|
||||||
|
if (!session || !session.bgTokenizer) return;
|
||||||
|
|
||||||
var pos = self.getCursorPosition();
|
var pos = self.getCursorPosition();
|
||||||
var iterator = new TokenIterator(self.session, pos.row, pos.column);
|
var iterator = new TokenIterator(self.session, pos.row, pos.column);
|
||||||
var token = iterator.getCurrentToken();
|
var token = iterator.getCurrentToken();
|
||||||
|
|
@ -2005,17 +2006,13 @@ var Editor = function(renderer, session) {
|
||||||
* Moves the cursor's row and column to the next matching bracket or HTML tag.
|
* Moves the cursor's row and column to the next matching bracket or HTML tag.
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
this.jumpToMatching = function(select) {
|
this.jumpToMatching = function(select, expand) {
|
||||||
var cursor = this.getCursorPosition();
|
var cursor = this.getCursorPosition();
|
||||||
var iterator = new TokenIterator(this.session, cursor.row, cursor.column);
|
var iterator = new TokenIterator(this.session, cursor.row, cursor.column);
|
||||||
var prevToken = iterator.getCurrentToken();
|
var prevToken = iterator.getCurrentToken();
|
||||||
var token = prevToken;
|
var token = prevToken || iterator.stepForward();
|
||||||
|
|
||||||
if (!token)
|
if (!token) return;
|
||||||
token = iterator.stepForward();
|
|
||||||
|
|
||||||
if (!token)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//get next closing tag or bracket
|
//get next closing tag or bracket
|
||||||
var matchType;
|
var matchType;
|
||||||
|
|
@ -2063,14 +2060,16 @@ var Editor = function(renderer, session) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (token && token.type.indexOf('tag-name') !== -1) {
|
}
|
||||||
|
else if (token && token.type.indexOf('tag-name') !== -1) {
|
||||||
if (isNaN(depth[token.value])) {
|
if (isNaN(depth[token.value])) {
|
||||||
depth[token.value] = 0;
|
depth[token.value] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prevToken.value === '<') {
|
if (prevToken.value === '<') {
|
||||||
depth[token.value]++;
|
depth[token.value]++;
|
||||||
} else if (prevToken.value === '</') {
|
}
|
||||||
|
else if (prevToken.value === '</') {
|
||||||
depth[token.value]--;
|
depth[token.value]--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2088,11 +2087,10 @@ var Editor = function(renderer, session) {
|
||||||
} while (token && !found);
|
} while (token && !found);
|
||||||
|
|
||||||
//no match found
|
//no match found
|
||||||
if (!matchType) {
|
if (!matchType)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
var range;
|
var range, pos;
|
||||||
if (matchType === 'bracket') {
|
if (matchType === 'bracket') {
|
||||||
range = this.session.getBracketRange(cursor);
|
range = this.session.getBracketRange(cursor);
|
||||||
if (!range) {
|
if (!range) {
|
||||||
|
|
@ -2102,19 +2100,18 @@ var Editor = function(renderer, session) {
|
||||||
iterator.getCurrentTokenRow(),
|
iterator.getCurrentTokenRow(),
|
||||||
iterator.getCurrentTokenColumn() + i - 1
|
iterator.getCurrentTokenColumn() + i - 1
|
||||||
);
|
);
|
||||||
if (!range)
|
pos = range.start;
|
||||||
return;
|
if (expand || pos.row === cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
||||||
var pos = range.start;
|
|
||||||
if (pos.row === cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
|
||||||
range = this.session.getBracketRange(pos);
|
range = this.session.getBracketRange(pos);
|
||||||
}
|
}
|
||||||
} else if(matchType==='tag') {
|
}
|
||||||
|
else if (matchType === 'tag') {
|
||||||
if (token && token.type.indexOf('tag-name') !== -1)
|
if (token && token.type.indexOf('tag-name') !== -1)
|
||||||
var tag = token.value;
|
var tag = token.value;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var range = new Range(
|
range = new Range(
|
||||||
iterator.getCurrentTokenRow(),
|
iterator.getCurrentTokenRow(),
|
||||||
iterator.getCurrentTokenColumn() - 2,
|
iterator.getCurrentTokenColumn() - 2,
|
||||||
iterator.getCurrentTokenRow(),
|
iterator.getCurrentTokenRow(),
|
||||||
|
|
@ -2136,7 +2133,8 @@ var Editor = function(renderer, session) {
|
||||||
if (token.value === tag && token.type.indexOf('tag-name') !== -1) {
|
if (token.value === tag && token.type.indexOf('tag-name') !== -1) {
|
||||||
if (prevToken.value === '<') {
|
if (prevToken.value === '<') {
|
||||||
depth[tag]++;
|
depth[tag]++;
|
||||||
} else if ( prevToken.value === '</') {
|
}
|
||||||
|
else if (prevToken.value === '</') {
|
||||||
depth[tag]--;
|
depth[tag]--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2149,7 +2147,7 @@ var Editor = function(renderer, session) {
|
||||||
|
|
||||||
//we found it
|
//we found it
|
||||||
if (token && token.type.indexOf('tag-name')) {
|
if (token && token.type.indexOf('tag-name')) {
|
||||||
var pos = range.start;
|
pos = range.start;
|
||||||
if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
||||||
pos = range.end;
|
pos = range.end;
|
||||||
}
|
}
|
||||||
|
|
@ -2158,10 +2156,13 @@ var Editor = function(renderer, session) {
|
||||||
pos = range && range.cursor || pos;
|
pos = range && range.cursor || pos;
|
||||||
if (pos) {
|
if (pos) {
|
||||||
if (select) {
|
if (select) {
|
||||||
if (range && range.isEqual(this.getSelectionRange()))
|
if (range && expand) {
|
||||||
|
this.selection.setRange(range);
|
||||||
|
} else if (range && range.isEqual(this.getSelectionRange())) {
|
||||||
this.clearSelection();
|
this.clearSelection();
|
||||||
else
|
} else {
|
||||||
this.selection.selectTo(pos.row, pos.column);
|
this.selection.selectTo(pos.row, pos.column);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.selection.moveTo(pos.row, pos.column);
|
this.selection.moveTo(pos.row, pos.column);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,11 +76,14 @@ exports.$detectIndentation = function(lines, fallback) {
|
||||||
var first = {score: 0, length: 0};
|
var first = {score: 0, length: 0};
|
||||||
var spaceIndents = 0;
|
var spaceIndents = 0;
|
||||||
for (var i = 1; i < 12; i++) {
|
for (var i = 1; i < 12; i++) {
|
||||||
|
var score = getScore(i);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
spaceIndents = getScore(i);
|
spaceIndents = score;
|
||||||
var score = stats.length && 1;
|
score = stats[1] ? 0.9 : 0.8;
|
||||||
|
if (!stats.length)
|
||||||
|
score = 0
|
||||||
} else
|
} else
|
||||||
var score = getScore(i) / spaceIndents;
|
score /= spaceIndents;
|
||||||
|
|
||||||
if (changes[i])
|
if (changes[i])
|
||||||
score += changes[i] / changesTotal;
|
score += changes[i] / changesTotal;
|
||||||
|
|
|
||||||
|
|
@ -426,7 +426,7 @@ module.exports = {
|
||||||
var column = util.getRightNthChar(editor, cursor, param, count || 1);
|
var column = util.getRightNthChar(editor, cursor, param, count || 1);
|
||||||
|
|
||||||
if (isRepeat && column == 0 && !(count > 1))
|
if (isRepeat && column == 0 && !(count > 1))
|
||||||
var column = util.getRightNthChar(editor, cursor, param, 2);
|
column = util.getRightNthChar(editor, cursor, param, 2);
|
||||||
|
|
||||||
if (typeof column === "number") {
|
if (typeof column === "number") {
|
||||||
cursor.column += column + (isSel ? 1 : 0);
|
cursor.column += column + (isSel ? 1 : 0);
|
||||||
|
|
@ -444,8 +444,8 @@ module.exports = {
|
||||||
var cursor = editor.getCursorPosition();
|
var cursor = editor.getCursorPosition();
|
||||||
var column = util.getLeftNthChar(editor, cursor, param, count || 1);
|
var column = util.getLeftNthChar(editor, cursor, param, count || 1);
|
||||||
|
|
||||||
if (isRepeat && column == 0 && !(count > 1))
|
if (isRepeat && column === 0 && !(count > 1))
|
||||||
var column = util.getLeftNthChar(editor, cursor, param, 2);
|
column = util.getLeftNthChar(editor, cursor, param, 2);
|
||||||
|
|
||||||
if (typeof column === "number") {
|
if (typeof column === "number") {
|
||||||
cursor.column -= column;
|
cursor.column -= column;
|
||||||
|
|
@ -558,7 +558,7 @@ module.exports = {
|
||||||
content += "\n";
|
content += "\n";
|
||||||
|
|
||||||
if (content.length) {
|
if (content.length) {
|
||||||
editor.navigateLineEnd()
|
editor.navigateLineEnd();
|
||||||
editor.insert(content);
|
editor.insert(content);
|
||||||
util.insertMode(editor);
|
util.insertMode(editor);
|
||||||
}
|
}
|
||||||
|
|
@ -575,7 +575,7 @@ module.exports = {
|
||||||
if (content.length) {
|
if (content.length) {
|
||||||
if(row > 0) {
|
if(row > 0) {
|
||||||
editor.navigateUp();
|
editor.navigateUp();
|
||||||
editor.navigateLineEnd()
|
editor.navigateLineEnd();
|
||||||
editor.insert(content);
|
editor.insert(content);
|
||||||
} else {
|
} else {
|
||||||
editor.session.insert({row: 0, column: 0}, content);
|
editor.session.insert({row: 0, column: 0}, content);
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ exports.createElement = function(tag, ns) {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.hasCssClass = function(el, name) {
|
exports.hasCssClass = function(el, name) {
|
||||||
var classes = el.className.split(/\s+/g);
|
var classes = (el.className || "").split(/\s+/g);
|
||||||
return classes.indexOf(name) !== -1;
|
return classes.indexOf(name) !== -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -720,7 +720,7 @@ var Editor = require("./editor").Editor;
|
||||||
* @param {Boolean} skip If `true`, removes the active selection range
|
* @param {Boolean} skip If `true`, removes the active selection range
|
||||||
* @method Editor.selectMore
|
* @method Editor.selectMore
|
||||||
**/
|
**/
|
||||||
this.selectMore = function(dir, skip) {
|
this.selectMore = function(dir, skip, stopAtFirst) {
|
||||||
var session = this.session;
|
var session = this.session;
|
||||||
var sel = session.multiSelect;
|
var sel = session.multiSelect;
|
||||||
|
|
||||||
|
|
@ -729,8 +729,8 @@ var Editor = require("./editor").Editor;
|
||||||
range = session.getWordRange(range.start.row, range.start.column);
|
range = session.getWordRange(range.start.row, range.start.column);
|
||||||
range.cursor = dir == -1 ? range.start : range.end;
|
range.cursor = dir == -1 ? range.start : range.end;
|
||||||
this.multiSelect.addRange(range);
|
this.multiSelect.addRange(range);
|
||||||
// todo add option for sublime like behavior
|
if (stopAtFirst)
|
||||||
// return;
|
return;
|
||||||
}
|
}
|
||||||
var needle = session.getTextRange(range);
|
var needle = session.getTextRange(range);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ var oop = require("./lib/oop");
|
||||||
/**
|
/**
|
||||||
* @class PlaceHolder
|
* @class PlaceHolder
|
||||||
*
|
*
|
||||||
*
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,7 +47,6 @@ var oop = require("./lib/oop");
|
||||||
* - mainClass (String):
|
* - mainClass (String):
|
||||||
* - othersClass (String):
|
* - othersClass (String):
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @constructor
|
* @constructor
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
@ -94,6 +92,10 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
var session = this.session;
|
var session = this.session;
|
||||||
var pos = this.$pos;
|
var pos = this.$pos;
|
||||||
|
|
||||||
|
this.selectionBefore = session.selection.toJSON();
|
||||||
|
if (session.selection.inMultiSelectMode)
|
||||||
|
session.selection.toSingleRange();
|
||||||
|
|
||||||
this.pos = doc.createAnchor(pos.row, pos.column);
|
this.pos = doc.createAnchor(pos.row, pos.column);
|
||||||
this.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);
|
this.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);
|
||||||
this.pos.on("change", function(event) {
|
this.pos.on("change", function(event) {
|
||||||
|
|
@ -218,7 +220,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
this.onCursorChange = function(event) {
|
this.onCursorChange = function(event) {
|
||||||
if (this.$updating) return;
|
if (this.$updating || !this.session) return;
|
||||||
var pos = this.session.selection.getCursor();
|
var pos = this.session.selection.getCursor();
|
||||||
if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {
|
if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {
|
||||||
this.showOtherMarkers();
|
this.showOtherMarkers();
|
||||||
|
|
@ -245,6 +247,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
this.others[i].detach();
|
this.others[i].detach();
|
||||||
}
|
}
|
||||||
this.session.setUndoSelect(true);
|
this.session.setUndoSelect(true);
|
||||||
|
this.session = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -261,6 +264,8 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
for (var i = 0; i < undosRequired; i++) {
|
for (var i = 0; i < undosRequired; i++) {
|
||||||
undoManager.undo(true);
|
undoManager.undo(true);
|
||||||
}
|
}
|
||||||
|
if (this.selectionBefore)
|
||||||
|
this.session.selection.fromJSON(this.selectionBefore);
|
||||||
};
|
};
|
||||||
}).call(PlaceHolder.prototype);
|
}).call(PlaceHolder.prototype);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -497,6 +497,10 @@ var SnippetManager = function() {
|
||||||
var snippetMap = this.snippetMap;
|
var snippetMap = this.snippetMap;
|
||||||
var snippetNameMap = this.snippetNameMap;
|
var snippetNameMap = this.snippetNameMap;
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
if (!snippets)
|
||||||
|
snippets = [];
|
||||||
|
|
||||||
function wrapRegexp(src) {
|
function wrapRegexp(src) {
|
||||||
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
||||||
src = "(?:" + src + ")";
|
src = "(?:" + src + ")";
|
||||||
|
|
@ -549,7 +553,7 @@ var SnippetManager = function() {
|
||||||
s.endTriggerRe = new RegExp(s.endTrigger, "", true);
|
s.endTriggerRe = new RegExp(s.endTrigger, "", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (snippets.content)
|
if (snippets && snippets.content)
|
||||||
addSnippet(snippets);
|
addSnippet(snippets);
|
||||||
else if (Array.isArray(snippets))
|
else if (Array.isArray(snippets))
|
||||||
snippets.forEach(addSnippet);
|
snippets.forEach(addSnippet);
|
||||||
|
|
|
||||||
|
|
@ -915,6 +915,8 @@ var VirtualRenderer = function(container, theme) {
|
||||||
this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);
|
this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);
|
||||||
// this.$loop.changes = 0;
|
// this.$loop.changes = 0;
|
||||||
this.desiredHeight = desiredHeight;
|
this.desiredHeight = desiredHeight;
|
||||||
|
|
||||||
|
this._signal("autosize");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue