Ответ 1
Конечно, есть. Быстрый просмотр содержимого последней версии remoting-lint.js(https://github.com/marijnh/CodeMirror/commit/27f097ed75561e846bdb955f13f8dd2bcf0b589e) показывает, что это был не более чем запрос JQuery AJAX, который вызывает обратный вызов, предоставляемый функции в качестве параметра. Этот обратный вызов будет передан только в том случае, если опция "async" предоставляется плагину lint. Обратите внимание, что у меня есть некоторые опции, которые передаются - в CodeMirror, которые могут не иметь отношения к вам. Вариантами, связанными с линией, являются "водостоки" и "lintWith".
Обратите внимание, что Python представляет только одну ошибку за раз, но что добавление lint допускает список ошибок. Из-за первого, последний будет иметь только один элемент, самое большее.
function python_validator(cm, updateLinting, options) {
var text = cm.getValue() + "\n";
if(text.trim() == "")
{
updateLinting(cm, []);
return;
}
function result_cb(error)
{
var found = [];
if(error != null) {
var start_line = error.line_no;
var start_char = error.column_no;
var end_line = error.line_no;
var end_char = error.column_no;
var message = error.message;
found.push({
from: CodeMirror.Pos(start_line - 1, start_char),
to: CodeMirror.Pos(end_line - 1, end_char),
message: message
});
}
updateLinting(cm, found);
}
check_python_syntax(text, result_cb)
};
var text_obj = $discriminator_text.get()[0];
var editor = CodeMirror.fromTextArea(text_obj, {
mode: { name: "python",
version: 2,
singleLineStringErrors: false },
lineNumbers: true,
indentUnit: 4,
tabMode: "shift",
matchBrackets: true,
styleActiveLine: true,
lineWrapping: false,
gutters: ["CodeMirror-lint-markers"],
lintWith: {
"getAnnotations": python_validator,
"async" : true,
},
});
Я опубликовал очень простой проект, чтобы сделать это более простым: https://github.com/dsoprea/CodeMirrorRemoteValidator