3

バックグラウンド

  • 現在 CodeMirror 3.13 を使用しています
  • ページに複数の編集者がいます (おそらく重要ではありません)

アスク

linting エラーの数と種類を数えて、ページの別の場所に概要を表示したいと考えています。そのためには、リンターがいつ実行を完了するかを知りたいので、変更をポーリングする必要はありません。

イベントベースのソリューションとは?

お時間をいただきありがとうございます!(私はすべての有効な試みに賛成票を投じます...もちろん明らかに間違っているわけではありません)

参考文献

これが私のエラーカウンタースニペット(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"
4

2 に答える 2

4

現在、linting イベントの通知を受ける唯一の方法は"lintWith"、プロパティを含むオブジェクトにオプションを設定するonUpdateLintingことです。これは、マーカーが更新されるたびに、linting エラー/警告のリストを最初の引数として呼び出されるコールバックです。

于 2013-06-12T07:57:31.333 に答える
1

完了コールバックを使用した CodeMirror での Javascript リンティング

優れた CodeMirror を作成し、サポートしてくれた Marijn に感謝しますこの回答は、完全な説明/解決策を提供することを目的としています(上記のMarijnの回答を組み込んでいます)。

具体的には、次の機能/要件:

  • CodeMirror の初期化
  • 含まれている JavaScript バリデーター (リンター) を適用します。
  • 組み込みのリンティング インターフェイスを使用する
  • リンターの完了コールバックを公開する

CodeMirror の初期化

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

lintErrorsWarnings の形式

リンターの完了コールバックは、次の例に示すように、オブジェクトの配列である単一のパラメーターを取ります。

[
  {
    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
  }
]
于 2013-08-11T00:44:14.917 に答える