我想计算掉色错误的数量和类型,并在页面的其他位置显示摘要。为此,我想知道linter何时完成执行,以便我不必轮询更改。
什么是基于事件的解决方案?
感谢您的时间! (我赞成所有有效的尝试......当然不是明显错误的)
这是我的错误计数器代码段(coffeescript):
for eachError in doc.getAllMarks()
numStaticErrors++ if eachError.className is "CodeMirror-lint-mark-error"
numStaticErrors++ if eachError.className is "CodeMirror-lint-marker-warning"
numStaticErrors++ if eachError.className is "CodeMirror-lint-marker-multiple"
答案 0 :(得分:3)
目前,通知linting事件的唯一方法是将"lintWith"
选项设置为包含onUpdateLinting
属性的对象,该属性是将使用linting列表调用的回调错误/警告作为标记更新时的第一个参数。
答案 1 :(得分:1)
很多感谢Marijn编写优秀的CodeMirror并对其提供支持。这个答案旨在提供一个完整的解释/解决方案(结合Marijn的答案)。
具体而言,以下特征/要求:
在CoffeeScript中(因为它更清楚):
options =
mode: "javascript"
lineNumbers: true
gutters: ["CodeMirror-lint-markers"]
lintWith:
getAnnotations: CodeMirror.javascriptValidator
onUpdateLinting: (lintErrorsWarnings) ->
# Do something with the linter's errors and warnings
CodeMirror $("#editor"), options
linter的完成回调接受一个参数,其中包含一个对象数组,如下例所示:
[
{
from: Pos
ch: 0
line: 0
message: "Expected an assignment or function call and instead saw an expression."
severity: "error"
to: Pos
ch: 5
line: 0
},
{
from: Pos
ch: 5
line: 0
message: "Missing semicolon."
severity: "error"
to: Pos
ch: 6
line: 0
}
]