Add autocompletion for language keywords
Conflicts: lib/ace/edit_session.js
This commit is contained in:
parent
818dba5dba
commit
69e41521e6
33 changed files with 182 additions and 90 deletions
|
|
@ -243,7 +243,7 @@ var Autocomplete = function() {
|
||||||
editor.on("changeSelection", this.$changeListener);
|
editor.on("changeSelection", this.$changeListener);
|
||||||
editor.on("blur", this.$blurListener);
|
editor.on("blur", this.$blurListener);
|
||||||
|
|
||||||
worker.attachToDocument(editor.session.getDocument(), {cursor: editor.getCursorPosition()}, true);
|
worker.attachToDocument(editor.session.getDocument(), {cursor: editor.getCursorPosition(), keywords: editor.session.getMode().$keywordList}, true);
|
||||||
|
|
||||||
worker.on("complete", function(data) {
|
worker.on("complete", function(data) {
|
||||||
var matches = data.data.matches;
|
var matches = data.data.matches;
|
||||||
|
|
|
||||||
|
|
@ -74,14 +74,14 @@ oop.inherits(AutocompleteWorker, Mirror);
|
||||||
|
|
||||||
var doc = this.doc.getValue();
|
var doc = this.doc.getValue();
|
||||||
var pos = this.data.cursor;
|
var pos = this.data.cursor;
|
||||||
var part = SyntaxDetector.getContextSyntaxPart(this.doc, this.data.cursor, "javascript");
|
var part = SyntaxDetector.getContextSyntaxPart(this.doc, this.data.cursor);
|
||||||
var language = part.language;
|
var language = part.language;
|
||||||
|
|
||||||
var currentPos = { line: pos.row, col: pos.column };
|
var currentPos = { line: pos.row, col: pos.column };
|
||||||
var currentNode = null;
|
var currentNode = null;
|
||||||
var matches = [], ast = null;
|
var matches = [], ast = null;
|
||||||
|
|
||||||
completer.complete(_self.doc, ast, this.data.cursor, currentNode, function(identifier, completions) {
|
completer.complete(_self.doc, ast, this.data.cursor, this.data.keywords, currentNode, function(identifier, completions) {
|
||||||
if (completions)
|
if (completions)
|
||||||
matches = matches.concat(completions);
|
matches = matches.concat(completions);
|
||||||
removeDuplicateMatches(matches);
|
removeDuplicateMatches(matches);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
var completeUtil = require("./complete_util");
|
var completeUtil = require("./complete_util");
|
||||||
var SPLIT_REGEX = /[^a-zA-Z_0-9\$]+/;
|
var SPLIT_REGEX = /[^a-zA-Z_0-9\$]+/;
|
||||||
|
var MAX_SCORE = 1000000;
|
||||||
|
|
||||||
var completer = module.exports;
|
var completer = module.exports;
|
||||||
|
|
||||||
|
|
@ -9,7 +10,7 @@ define(function(require, exports, module) {
|
||||||
};
|
};
|
||||||
|
|
||||||
// For the current document, gives scores to identifiers not on frequency, but on distance from the current prefix
|
// For the current document, gives scores to identifiers not on frequency, but on distance from the current prefix
|
||||||
function wordDistanceAnalyzer(doc, pos, prefix) {
|
function wordDistanceAnalyzer(doc, pos, prefix, keywords) {
|
||||||
var text = doc.getValue().trim();
|
var text = doc.getValue().trim();
|
||||||
|
|
||||||
// Determine cursor's word index
|
// Determine cursor's word index
|
||||||
|
|
@ -32,24 +33,28 @@ define(function(require, exports, module) {
|
||||||
var distance = Math.max(prefixPosition, i) - Math.min(prefixPosition, i);
|
var distance = Math.max(prefixPosition, i) - Math.min(prefixPosition, i);
|
||||||
// Score substracted from 100000 to force descending ordering
|
// Score substracted from 100000 to force descending ordering
|
||||||
if (Object.prototype.hasOwnProperty.call(identDict, ident))
|
if (Object.prototype.hasOwnProperty.call(identDict, ident))
|
||||||
identDict[ident] = Math.max(1000000-distance, identDict[ident]);
|
identDict[ident] = Math.max(MAX_SCORE-distance, identDict[ident]);
|
||||||
else
|
else
|
||||||
identDict[ident] = 1000000-distance;
|
identDict[ident] = MAX_SCORE-distance;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (var k = 0, l = keywords.length; k < l; k++) {
|
||||||
|
identDict[keywords[k]] = MAX_SCORE;
|
||||||
|
}
|
||||||
return identDict;
|
return identDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
function analyze(doc, pos) {
|
function analyze(doc, pos, keywords) {
|
||||||
var line = doc.getLine(pos.row);
|
var line = doc.getLine(pos.row);
|
||||||
var identifier = completeUtil.retrievePrecedingIdentifier(line, pos.column);
|
var identifier = completeUtil.retrievePrecedingIdentifier(line, pos.column);
|
||||||
|
|
||||||
var analysisCache = wordDistanceAnalyzer(doc, pos, identifier);
|
var analysisCache = wordDistanceAnalyzer(doc, pos, identifier, keywords);
|
||||||
return analysisCache;
|
return analysisCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
completer.complete = function(doc, fullAst, pos, currentNode, callback) {
|
completer.complete = function(doc, fullAst, pos, keywords, currentNode, callback) {
|
||||||
var identDict = analyze(doc, pos);
|
var identDict = analyze(doc, pos, keywords);
|
||||||
var line = doc.getLine(pos.row);
|
var line = doc.getLine(pos.row);
|
||||||
var identifier = completeUtil.retrievePrecedingIdentifier(line, pos.column);
|
var identifier = completeUtil.retrievePrecedingIdentifier(line, pos.column);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,9 @@ var TextMode = require("./text").Mode;
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
||||||
function Mode() {
|
function Mode() {
|
||||||
this.$tokenizer = new Tokenizer(new Rules().getRules());
|
var highlighter = new Rules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = new Rules(rules.$keywordList);
|
||||||
this.foldingRules = new FoldMode();
|
this.foldingRules = new FoldMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,13 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new c_cppHighlightRules().getRules());
|
var highlighter = new c_cppHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
|
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,9 @@ var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensO
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new ClojureHighlightRules().getRules());
|
var highlighter = new ClojureHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = new Rules(rules.$keywordList);
|
||||||
this.$outdent = new MatchingParensOutdent();
|
this.$outdent = new MatchingParensOutdent();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,10 @@ var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
||||||
function Mode() {
|
function Mode() {
|
||||||
this.$tokenizer = new Tokenizer(new Rules().getRules());
|
var highlighter = new Rules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new Outdent();
|
this.$outdent = new Outdent();
|
||||||
|
this.$keywordList = new Rules(rules.$keywordList);
|
||||||
this.foldingRules = new FoldMode();
|
this.foldingRules = new FoldMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,11 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new CSharpHighlightRules().getRules());
|
var highlighter = new CSharpHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,11 @@ var CssBehaviour = require("./behaviour/css").CssBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules());
|
var highlighter = new CssHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CssBehaviour();
|
this.$behaviour = new CssBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ var Mode = function() {
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, CMode);
|
oop.inherits(Mode, CMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,12 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new glslHighlightRules().getRules());
|
var highlighter = new glslHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, CMode);
|
oop.inherits(Mode, CMode);
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,24 @@
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var TextMode = require("./text").Mode;
|
var TextMode = require("./text").Mode;
|
||||||
var Tokenizer = require("../tokenizer").Tokenizer;
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
|
var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new GolangHighlightRules().getRules());
|
var highlighter = new GolangHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
this.lineCommentStart = "//";
|
this.lineCommentStart = "//";
|
||||||
this.blockComment = {start: "/*", end: "*/"};
|
this.blockComment = {start: "/*", end: "*/"};
|
||||||
|
|
@ -49,7 +52,7 @@ oop.inherits(Mode, TextMode);
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,9 @@ var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRu
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
JavaScriptMode.call(this);
|
JavaScriptMode.call(this);
|
||||||
this.$tokenizer = new Tokenizer(new GroovyHighlightRules().getRules());
|
var highlighter = new GroovyHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, JavaScriptMode);
|
oop.inherits(Mode, JavaScriptMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,12 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HaxeHighlightRules().getRules());
|
var highlighter = new HaxeHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,10 @@ var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
JavaScriptMode.call(this);
|
JavaScriptMode.call(this);
|
||||||
|
var highlighter = new JavaHighlightRules();
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(new JavaHighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, JavaScriptMode);
|
oop.inherits(Mode, JavaScriptMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,12 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new JavaScriptHighlightRules().getRules());
|
var highlighter = new JavaScriptHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,10 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new LiquidHighlightRules().getRules());
|
var highlighter = new LiquidHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ var Mode = function() {
|
||||||
var highlighter = new LispHighlightRules();
|
var highlighter = new LispHighlightRules();
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,11 @@ var Range = require("../range").Range;
|
||||||
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new LuaHighlightRules().getRules());
|
var highlighter = new LuaHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.foldingRules = new LuaFoldMode();
|
this.foldingRules = new LuaFoldMode();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ var Mode = function() {
|
||||||
this.foldingRules = new FoldMode();
|
this.foldingRules = new FoldMode();
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,11 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new OcamlHighlightRules().getRules());
|
var highlighter = new OcamlHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,12 @@ var Range = require("../range").Range;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new PerlHighlightRules().getRules());
|
var highlighter = new PerlHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"});
|
this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"});
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,18 +30,21 @@
|
||||||
|
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var TextMode = require("../mode/text").Mode;
|
var TextMode = require("../mode/text").Mode;
|
||||||
var Tokenizer = require("../tokenizer").Tokenizer;
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules;
|
var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules;
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new PgsqlHighlightRules().getRules());
|
var highlighter = new PgsqlHighlightRules();
|
||||||
};
|
|
||||||
oop.inherits(Mode, TextMode);
|
|
||||||
|
|
||||||
(function() {
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
|
};
|
||||||
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
(function() {
|
||||||
this.lineCommentStart = "--";
|
this.lineCommentStart = "--";
|
||||||
this.blockComment = {start: "/*", end: "*/"};
|
this.blockComment = {start: "/*", end: "*/"};
|
||||||
|
|
||||||
|
|
@ -53,7 +56,7 @@ oop.inherits(Mode, TextMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,10 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new PowershellHighlightRules().getRules());
|
var highlighter = new PowershellHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"});
|
this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"});
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,9 @@ var PythonFoldMode = require("./folding/pythonic").FoldMode;
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new PythonHighlightRules().getRules());
|
var highlighter = new PythonHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.foldingRules = new PythonFoldMode("\\:");
|
this.foldingRules = new PythonFoldMode("\\:");
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,10 @@ var Range = require("../range").Range;
|
||||||
var FoldMode = require("./folding/coffee").FoldMode;
|
var FoldMode = require("./folding/coffee").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new RubyHighlightRules().getRules());
|
var highlighter = new RubyHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.foldingRules = new FoldMode();
|
this.foldingRules = new FoldMode();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,10 @@ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new scadHighlightRules().getRules());
|
var highlighter = new scadHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
this.$outdent = new MatchingBraceOutdent();
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
this.$behaviour = new CstyleBehaviour();
|
this.$behaviour = new CstyleBehaviour();
|
||||||
this.foldingRules = new CStyleFoldMode();
|
this.foldingRules = new CStyleFoldMode();
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@ var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
JavaScriptMode.call(this);
|
JavaScriptMode.call(this);
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(new ScalaHighlightRules().getRules());
|
var highlighter = new ScalaHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, JavaScriptMode);
|
oop.inherits(Mode, JavaScriptMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,10 @@ var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules;
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new ShHighlightRules().getRules());
|
var highlighter = new ShHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,10 @@ var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules;
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new SqlHighlightRules().getRules());
|
var highlighter = new SqlHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ var Mode = function() {
|
||||||
this.foldingRules = new FoldMode();
|
this.foldingRules = new FoldMode();
|
||||||
|
|
||||||
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$keywordList = highlighter.$keywordList;
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, TextMode);
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -326,6 +326,24 @@ var Mode = function() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.getKeywords = function() {
|
||||||
|
var rules = this.$tokenizer.rules;
|
||||||
|
var keywords = [];
|
||||||
|
for (var rule in rules) {
|
||||||
|
var ruleItr = rules[rule];
|
||||||
|
for (var r = 0, l = ruleItr.length; r < l; r++) {
|
||||||
|
if (typeof ruleItr[r].token === "string") {
|
||||||
|
if (/keyword/.test(ruleItr[r].token))
|
||||||
|
keywords.push(ruleItr[r].regex);
|
||||||
|
else if (/support/.test(ruleItr[r].token))
|
||||||
|
keywords.push(ruleItr[r].regex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return keywords.concat(this.$keywordList || []);
|
||||||
|
};
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,7 @@ var TextHighlightRules = function() {
|
||||||
for (var i = list.length; i--; )
|
for (var i = list.length; i--; )
|
||||||
keywords[list[i]] = className;
|
keywords[list[i]] = className;
|
||||||
});
|
});
|
||||||
|
this.$keywordList = Object.keys(keywords);
|
||||||
map = null;
|
map = null;
|
||||||
return ignoreCase
|
return ignoreCase
|
||||||
? function(value) {return keywords[value.toLowerCase()] || defaultToken }
|
? function(value) {return keywords[value.toLowerCase()] || defaultToken }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue