Wie integriere ich die Syntaxprüfung im Ace Editor im benutzerdefinierten Modus?
Ich bin neu in ace-editor und habe den benutzerdefinierten Modus zur Überprüfung meines Codes hinzugefügt. Jede Zeile sollte mit einem Semikolon enden. Wenn in meiner Abfrage aus Versehen kein Semikolon enthalten ist, sollte der Editor die Warnung "Fehlendes Semikolon" aufgeben ".
define('ace/mode/javascript-custom', [], function(require, exports, module) {
var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var ExampleHighlightRules = require("ace/mode/example_highlight_rules").ExampleHighlightRules;
var Mode = function() {
this.HighlightRules = ExampleHighlightRules;
};
oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = "--";
this.blockComment = {
start: "->",
end: "<-"
};
}).call(Mode.prototype);
exports.Mode = Mode;
});
define('ace/mode/example_highlight_rules', [], function(require, exports, module) {
var oop = require("ace/lib/oop");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var ExampleHighlightRules = function() {
var keywordMapper = this.createKeywordMapper({
"variable.language": "this",
"keyword": "one|two",
"constant.language": "true|false|null"
}, "text", true);
this.$rules = {
"start": [{
token: "comment",
regex: "->",
next: [{
regex: "<-",
token: "comment",
next: "start"
}, {
defaultToken: "comment"
}]
}, {
regex: "\\w+\\b",
token: keywordMapper
}, {
token: "comment",
regex: "--.*"
}, {
token: "string",
regex: '"',
next: [{
regex: /\\./,
token: "escape.character"
}, {
regex: '"',
token: "string",
next: "start"
}, {
defaultToken: "string"
}]
}, {
token: "numbers",
regex: /\d+(?:[.](\d)*)?|[.]\d+/
}]
};
this.normalizeRules()
};
oop.inherits(ExampleHighlightRules, TextHighlightRules);
exports.ExampleHighlightRules = ExampleHighlightRules;
});
var langTools = ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/javascript-custom");
editor.setOptions({
enableBasicAutocompletion: true,
enableLiveAutocompletion: true
});
editor.setTheme("ace/theme/monokai");
var lines = editor.session.doc.getAllLines();
var errors = [];
for (var i = 0; i < lines.length; i++) {
if (/[\w\d{(['"]/.test(lines[i])) {
alert("hello");
errors.push({
row: i,
column: lines[i].length,
text: "Missing Semicolon",
type: "error"
});
}
}
<script src="https://ajaxorg.github.io/ace-builds/src/ext-language_tools.js"></script>
<script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<div id="editor" style="height: 200px; width: 400px"></div>
<div id="commandline" style="position: absolute; bottom: 10px; height: 20px; width: 800px;"></div>
AKTUALISIEREN
Die folgenden js-Dateien werden aus ace generiert und zu meiner Rails-Anwendung hinzugefügt. Die Dateien werden in die Rails-App geladen, aber die Funktionalität (Semikolonprüfung) scheint nicht zu funktionieren.
worker-semicolonlineend -http: //pastebin.com/2kZ2fYr mode-semicolonlineend -http: //pastebin.com/eBY5VvN
Aktualisieren
Geben Sie im Ass-Editor eine Abfrage1, Abfrage2 in Zeile 1 bzw. Zeile 2 ein.Lasse die dritte Zeile leerNun in der vierten Zeile geben Sie am Ende eine Abfrage ohne Semikolon ein, in der dritten Zeile erscheint die Markierung x. 5 Und wenn in der fünften Zeile auch kein Semikolon steht, wird die Markierung x bei der vierten Abfrage angezeigt.