我正在设计一个使用带有工具栏的CodeMirror的应用程序。由于性能原因,我不会通过异步或异步模式执行lint。
我已经在工具栏中提供了一个图标,单击此图标后,我将执行解析和构造错误。但是我被如何在编辑器中更新lint错误所困扰?
任何指针都会非常有用。
发布于 2016-11-09 06:40:19
lint插件为所有名为performLint的编辑器实例添加了一个“扩展”方法,并与lint: { lintOnChange: false }的编辑器选项相结合,然后您可以通过调用mirror.performLint()来调用林特。
如果您将自己的lint方法定义为
CodeMirror.registerHelper('lint', 'mode', (text) => { /* your cool stuff here */ })这将在performLint()上调用。
发布于 2014-07-04 20:21:53
您是否尝试过使用下面的代码动态设置lint值?
//enable
editor.setOption("lint",true);
//disable
editor.setOption("lint",false);你可以在这里看到一个演示JSFiddle link
发布于 2015-10-08 16:11:46
这听起来像是一个看起来并不存在的好功能。
创建一个按钮来从外部按钮启动验证是很简单的。
function checkFormat(editor) {
var success = JSHINT(editor.getValue());
var output = '';
if (!success) {
output = "Check format error:\n\n";
for (var i in JSHINT.errors) {
var err = JSHINT.errors[i];
if (null != err) {
output += err.line + '[' + err.character + ']: ' + err.reason + '\n';
} else {
output += "Check format unknown error:\n";
}
}
alert(output);
}
return success;
}但是,这并不会在CodeMirror编辑器中呈现验证消息,使其显示在行号间隔中,而这正是OP所要寻找的。
要做到这一点,您可以定制lint附加代码。例如,来自标准插件[https://github.com/codemirror/CodeMirror/blob/master/addon/lint/json-lint.js]中提供的json-lint
1.将registerHelper()的主体提取到一个重新生成现有函数的新函数中:
CodeMirror.registerHelper("lint", "json", function(text) {
return mylinthandler(text)
}
mylinthandler(text) {
var found = [];
jsonlint.parseError = function(str, hash) {
var loc = hash.loc;
found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),
to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),
message: str});
};
try { jsonlint.parse(text); }
catch(e) {}
return found;
}mylinthandler(editor.getValue()):lintOnChange: false
https://stackoverflow.com/questions/24568105
复制相似问题