Codemirror-掉毛 - 是否有触发显式地掉毛一个事件?

问题描述 投票:4回答:4

我设计使用CodeMirror附带工具栏的应用程序。由于性能原因,我也不通过异步或非同步模式下执行的棉绒。

我已经在工具栏中提供的图标,在单击该我做的分析和构建错误。但我坚持我怎么能在编辑器更新皮棉错误?

任何指针将是很有益的。

javascript codemirror
4个回答
7
投票

棉绒插件增加了一个“扩展”的方法称为performLint所有编辑器的情况下,与lint: { lintOnChange: false }的编辑选项合并,然后你可以通过调用mirror.performLint()调用棉短绒。

如果你定义自己的皮棉方法ALA

CodeMirror.registerHelper('lint', 'mode', (text) => { /* your cool stuff here */ })

那会被调用上performLint()


3
投票

您是否尝试动态地设置掉毛值使用下面的代码?

//enable
editor.setOption("lint",true);

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

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


2
投票

这听起来像没有出现存在一个很好的功能。

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

例如[无信用] 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;
}

然而,这并不呈现在CodeMirror编辑器中的验证消息的行号排水沟,这是什么OP一直在寻找可以显示。

要做到这一点,你可以自定义棉绒附加代码。例如,从在标准插件提供的JSON-皮棉[https://github.com/codemirror/CodeMirror/blob/master/addon/lint/json-lint.js]

1.Extract 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;
}
  1. 关闭与自动皮棉CodeMirror选项。 lintOnChange:假
  2. 然后,当你想皮棉,调用mylinthandler(editor.getValue())

1
投票

要在一行触发皮棉:

// 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);
    }
  });
© www.soinside.com 2019 - 2024. All rights reserved.