首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codemirror- linting -是否有明确触发linting的事件?

Codemirror- linting -是否有明确触发linting的事件?
EN

Stack Overflow用户
提问于 2014-07-04 14:37:40
回答 4查看 6.4K关注 0票数 5

我正在设计一个使用带有工具栏的CodeMirror的应用程序。由于性能原因,我不会通过异步或异步模式执行lint。

我已经在工具栏中提供了一个图标,单击此图标后,我将执行解析和构造错误。但是我被如何在编辑器中更新lint错误所困扰?

任何指针都会非常有用。

EN

回答 4

Stack Overflow用户

发布于 2016-11-09 06:40:19

lint插件为所有名为performLint的编辑器实例添加了一个“扩展”方法,并与lint: { lintOnChange: false }的编辑器选项相结合,然后您可以通过调用mirror.performLint()来调用林特。

如果您将自己的lint方法定义为

代码语言:javascript
复制
CodeMirror.registerHelper('lint', 'mode', (text) => { /* your cool stuff here */ })

这将在performLint()上调用。

票数 7
EN

Stack Overflow用户

发布于 2014-07-04 20:21:53

您是否尝试过使用下面的代码动态设置lint值?

代码语言:javascript
复制
//enable
editor.setOption("lint",true);

//disable
editor.setOption("lint",false);

你可以在这里看到一个演示JSFiddle link

票数 3
EN

Stack Overflow用户

发布于 2015-10-08 16:11:46

这听起来像是一个看起来并不存在的好功能。

创建一个按钮来从外部按钮启动验证是很简单的。

例如no credit

代码语言:javascript
复制
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()的主体提取到一个重新生成现有函数的新函数中:

代码语言:javascript
复制
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;
}

  1. 使用禁用自动粘合CodeMirror选项。

mylinthandler(editor.getValue()):lintOnChange: false

  • 然后,当您想要处理棉花时,调用false
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24568105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档