codemmirror -检查-是否有一个事件显式地触发检查
Codemirror- linting - Is there a event to trigger linting explictly?
我正在设计一个使用工具栏附带的CodeMirror的应用程序。由于性能原因,我没有通过async或asynch模式执行lint。
我在工具栏中提供了一个图标,在单击这个图标时,我正在进行解析和构造错误。但是我被困在如何更新编辑器中的lint错误?
lint插件为所有名为performLint
的Editor实例添加了一个"extension"方法,结合lint: { lintOnChange: false }
的编辑器选项,然后您可以通过调用mirror.performLint()
来调用linter。
如果你定义了自己的lint方法ala
CodeMirror.registerHelper('lint', 'mode', (text) => { /* your cool stuff here */ })
将被performLint()
调用
你试过使用下面的代码动态设置lint值吗?
//enable
editor.setOption("lint",true);
//disable
editor.setOption("lint",false);
您可以在这里看到一个演示JSFiddle链接
在一行中触发lint:
// trigger registered lint handler
editor.setOption("lint", {});
// trigger custom lint handler defined on the fly
editor.setOption("lint", {
getAnnotations: function() { /* some smart code */ return found; }
});
如果你想知道为什么它会工作,看看addon/lint/lint.js,特别是以下几行:
CodeMirror.defineOption("lint", false, function(cm, val, old) {
...
if (val) {
...
startLinting(cm);
}
});
这听起来像是一个似乎不存在的好功能。
创建一个按钮来从外部按钮启动验证是很简单的。
例如[no credit] https://jsfiddle.net/q43drhyk/
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;
}
然而,这并没有呈现codemmirror编辑器中的验证消息,以显示在linenumber沟中,这是OP正在寻找的。
要做到这一点,你可以自定义lint附加代码。例如,从json-lint提供的标准插件[https://github.com/codemirror/CodeMirror/blob/master/addon/lint/json-lint.js]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;
}
使用。
关闭自动检测CodeMirror选项lintOnChange:假
当你想要检查时,呼叫
mylinthandler(editor.getValue())
相关文章:
- 主干-不管怎样,检查事件以前是否绑定过
- 使用onkeyup JS事件检查输入的值是否唯一
- 检查事件处理程序参数
- jQuery复选框(在ul>li下)检查事件
- 如何使用javascript检查事件是否应用于元素
- 复选框检查事件验证没有 Javascript
- 使用 JavaScript 检查事件日期是否有效
- 引导开关已检查事件
- 检查事件是否已绑定(KEYUP)
- 如何在 JS 中检查事件处理程序的属性
- 检查事件目标是否有特定的祖先
- 检查事件是否被初始化,是否有监听器
- 检查事件-rsvp状态并显示禁用/启用rsvp按钮
- 检查事件函数中的组件状态是否有效
- 检查事件目标是否为超链接
- 如何检查事件是否被触发一次
- 用javascript检查事件处理程序是否被添加到属性中
- 检查事件是否由人触发
- Handel复选框's在javascript中检查/取消检查事件
- Javascript函数来检查事件的开始和结束时间之间的实际时间