toggleLineComment no longer has to return the remove characters
Also make the change as minimal as possible
This commit is contained in:
parent
12d8da86d8
commit
cfc553f66f
8 changed files with 61 additions and 51 deletions
|
|
@ -69,16 +69,16 @@ oop.inherits(Mode, TextMode);
|
||||||
var deleteRange = new Range(0, 0, 0, 0);
|
var deleteRange = new Range(0, 0, 0, 0);
|
||||||
for (var i=startRow; i<= endRow; i++)
|
for (var i=startRow; i<= endRow; i++)
|
||||||
{
|
{
|
||||||
var line = doc.getLine(i).replace(re, "$1");
|
var line = doc.getLine(i);
|
||||||
|
var m = line.match(re);
|
||||||
deleteRange.start.row = i;
|
deleteRange.start.row = i;
|
||||||
deleteRange.end.row = i;
|
deleteRange.end.row = i;
|
||||||
deleteRange.end.column = line.length + 2;
|
deleteRange.end.column = m[0].length;
|
||||||
doc.replace(deleteRange, line);
|
doc.replace(deleteRange, m[1]);
|
||||||
}
|
}
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return doc.indentRows(startRow, endRow, "//");
|
doc.indentRows(startRow, endRow, "//");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,52 +37,63 @@
|
||||||
|
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
var Tokenizer = require("ace/tokenizer").Tokenizer
|
var Tokenizer = require("ace/tokenizer").Tokenizer;
|
||||||
, Rules = require("ace/mode/coffee_highlight_rules").CoffeeHighlightRules
|
var Rules = require("ace/mode/coffee_highlight_rules").CoffeeHighlightRules;
|
||||||
, Outdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent
|
var Outdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent;
|
||||||
, Range = require("ace/range").Range
|
var Range = require("ace/range").Range;
|
||||||
;
|
var TextMode = require("ace/mode/text").Mode;
|
||||||
require("pilot/oop").inherits(CoffeeMode, require("ace/mode/text").Mode);
|
var oop = require("pilot/oop")
|
||||||
|
|
||||||
function CoffeeMode() {
|
function CoffeeMode() {
|
||||||
this.$tokenizer = new Tokenizer(new Rules().getRules());
|
this.$tokenizer = new Tokenizer(new Rules().getRules());
|
||||||
this.$outdent = new Outdent();
|
this.$outdent = new Outdent();
|
||||||
}
|
};
|
||||||
var proto = CoffeeMode.prototype
|
|
||||||
, indenter = /(?:[({[=:]|[-=]>|\b(?:else|switch|try|catch(?:\s*[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$/
|
oop.inherits(CoffeeMode, TextMode);
|
||||||
, commentLine = /^(\s*)#/
|
|
||||||
, hereComment = /^\s*###(?!#)/
|
var proto = CoffeeMode.prototype;
|
||||||
, indentation = /^\s*/
|
var indenter = /(?:[({[=:]|[-=]>|\b(?:else|switch|try|catch(?:\s*[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$/;
|
||||||
;
|
var commentLine = /^(\s*)#/;
|
||||||
proto.getNextLineIndent = function(state, line, tab){
|
var hereComment = /^\s*###(?!#)/;
|
||||||
var indent = this.$getIndent(line)
|
var indentation = /^\s*/;
|
||||||
, tokens = this.$tokenizer.getLineTokens(line, state).tokens
|
|
||||||
;
|
proto.getNextLineIndent = function(state, line, tab) {
|
||||||
|
var indent = this.$getIndent(line);
|
||||||
|
var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
|
||||||
|
|
||||||
if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&
|
if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&
|
||||||
state === 'start' && indenter.test(line))
|
state === 'start' && indenter.test(line))
|
||||||
indent += tab;
|
indent += tab;
|
||||||
return indent;
|
return indent;
|
||||||
};
|
};
|
||||||
|
|
||||||
proto.toggleCommentLines = function(state, doc, startRow, endRow){
|
proto.toggleCommentLines = function(state, doc, startRow, endRow){
|
||||||
var out, range = new Range(0, 0, 0, 0);
|
console.log("toggle");
|
||||||
|
var range = new Range(0, 0, 0, 0);
|
||||||
for (var i = startRow; i <= endRow; ++i) {
|
for (var i = startRow; i <= endRow; ++i) {
|
||||||
var line = doc.getLine(i);
|
var line = doc.getLine(i);
|
||||||
if (hereComment.test(line)) continue;
|
if (hereComment.test(line))
|
||||||
line = (out = commentLine.test(line))
|
continue;
|
||||||
? line.replace(commentLine, '$1')
|
|
||||||
: line.replace(indentation, '$&#');
|
if (commentLine.test(line))
|
||||||
|
line = line.replace(commentLine, '$1');
|
||||||
|
else
|
||||||
|
line = line.replace(indentation, '$&#');
|
||||||
|
|
||||||
range.end.row = range.start.row = i;
|
range.end.row = range.start.row = i;
|
||||||
range.end.column = line.length + 1;
|
range.end.column = line.length + 1;
|
||||||
doc.replace(range, line);
|
doc.replace(range, line);
|
||||||
}
|
}
|
||||||
return 1 - out * 2;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
proto.checkOutdent = function(state, line, input) {
|
proto.checkOutdent = function(state, line, input) {
|
||||||
return this.$outdent.checkOutdent(line, input);
|
return this.$outdent.checkOutdent(line, input);
|
||||||
};
|
};
|
||||||
|
|
||||||
proto.autoOutdent = function(state, doc, row) {
|
proto.autoOutdent = function(state, doc, row) {
|
||||||
return this.$outdent.autoOutdent(doc, row);
|
return this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.Mode = CoffeeMode;
|
exports.Mode = CoffeeMode;
|
||||||
});
|
|
||||||
|
});
|
||||||
|
|
@ -55,7 +55,7 @@ oop.inherits(Mode, TextMode);
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
this.toggleCommentLines = function(state, doc, startRow, endRow) {
|
this.toggleCommentLines = function(state, doc, startRow, endRow) {
|
||||||
return this.$delegate("toggleCommentLines", arguments, function() {
|
this.$delegate("toggleCommentLines", arguments, function() {
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -69,16 +69,16 @@ oop.inherits(Mode, TextMode);
|
||||||
var deleteRange = new Range(0, 0, 0, 0);
|
var deleteRange = new Range(0, 0, 0, 0);
|
||||||
for (var i=startRow; i<= endRow; i++)
|
for (var i=startRow; i<= endRow; i++)
|
||||||
{
|
{
|
||||||
var line = doc.getLine(i).replace(re, "$1");
|
var line = doc.getLine(i);
|
||||||
|
var m = line.match(re);
|
||||||
deleteRange.start.row = i;
|
deleteRange.start.row = i;
|
||||||
deleteRange.end.row = i;
|
deleteRange.end.row = i;
|
||||||
deleteRange.end.column = line.length + 2;
|
deleteRange.end.column = m[0].length;
|
||||||
doc.replace(deleteRange, line);
|
doc.replace(deleteRange, m[1]);
|
||||||
}
|
}
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return doc.indentRows(startRow, endRow, "//");
|
doc.indentRows(startRow, endRow, "//");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,16 +68,16 @@ oop.inherits(Mode, TextMode);
|
||||||
var deleteRange = new Range(0, 0, 0, 0);
|
var deleteRange = new Range(0, 0, 0, 0);
|
||||||
for (var i=startRow; i<= endRow; i++)
|
for (var i=startRow; i<= endRow; i++)
|
||||||
{
|
{
|
||||||
var line = doc.getLine(i).replace(re, "$1");
|
var line = doc.getLine(i);
|
||||||
|
var m = line.match(re);
|
||||||
deleteRange.start.row = i;
|
deleteRange.start.row = i;
|
||||||
deleteRange.end.row = i;
|
deleteRange.end.row = i;
|
||||||
deleteRange.end.column = line.length + 2;
|
deleteRange.end.column = m[0].length;
|
||||||
doc.replace(deleteRange, line);
|
doc.replace(deleteRange, m[1]);
|
||||||
}
|
}
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return doc.indentRows(startRow, endRow, "#");
|
doc.indentRows(startRow, endRow, "#");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,16 +69,16 @@ oop.inherits(Mode, TextMode);
|
||||||
var deleteRange = new Range(0, 0, 0, 0);
|
var deleteRange = new Range(0, 0, 0, 0);
|
||||||
for (var i=startRow; i<= endRow; i++)
|
for (var i=startRow; i<= endRow; i++)
|
||||||
{
|
{
|
||||||
var line = doc.getLine(i).replace(re, "$1");
|
var line = doc.getLine(i);
|
||||||
|
var m = line.match(re);
|
||||||
deleteRange.start.row = i;
|
deleteRange.start.row = i;
|
||||||
deleteRange.end.row = i;
|
deleteRange.end.row = i;
|
||||||
deleteRange.end.column = line.length + 2;
|
deleteRange.end.column = m[0].length;
|
||||||
doc.replace(deleteRange, line);
|
doc.replace(deleteRange, m[1]);
|
||||||
}
|
}
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return doc.indentRows(startRow, endRow, "#");
|
doc.indentRows(startRow, endRow, "#");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,16 +69,16 @@ oop.inherits(Mode, TextMode);
|
||||||
var deleteRange = new Range(0, 0, 0, 0);
|
var deleteRange = new Range(0, 0, 0, 0);
|
||||||
for (var i=startRow; i<= endRow; i++)
|
for (var i=startRow; i<= endRow; i++)
|
||||||
{
|
{
|
||||||
var line = doc.getLine(i).replace(re, "$1");
|
var line = doc.getLine(i);
|
||||||
|
var m = line.match(re);
|
||||||
deleteRange.start.row = i;
|
deleteRange.start.row = i;
|
||||||
deleteRange.end.row = i;
|
deleteRange.end.row = i;
|
||||||
deleteRange.end.column = line.length + 2;
|
deleteRange.end.column = m[0].length;
|
||||||
doc.replace(deleteRange, line);
|
doc.replace(deleteRange, m[1]);
|
||||||
}
|
}
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return doc.indentRows(startRow, endRow, "#");
|
doc.indentRows(startRow, endRow, "#");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,6 @@ var Mode = function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.toggleCommentLines = function(state, doc, startRow, endRow) {
|
this.toggleCommentLines = function(state, doc, startRow, endRow) {
|
||||||
return 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getNextLineIndent = function(state, line, tab) {
|
this.getNextLineIndent = function(state, line, tab) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue