flycheckを介してorg-lintを自動的に実行する


12

ナレッジベースのためにHTMLに公開する組織モードファイルのヒープを持っています。リンクが壊れているなどの理由で公開がクラッシュし、問題を見つけるのが難しい場合があります。

私は最近、org-lintを使用して問題を見つけています。flycheckを通じてこれを自動的に実行する方法はありますか?


1
org-export-before-processing-hookを介して実行しないのはなぜですか?flycheckを使用するには、リンティング用の外部プログラムが必要だと思います。org-lintで動作し、flycheckで必要なことを実行するflycheck-define-generic-checkerでelisp関数を記述できる可能性があるようです。
John Kitchin、

エクスポートする前に実行すれば十分でしょうか?保存するたびに確認すると、高額になります。
xji

@JohnKitchin:このケースで実行するために、自然の外部プログラムはEmacs自身:)だろうけれども、外部のプログラムは、一般的であるが必要ではない
クレマン

回答:


6

リンティングをで1つのチェッカーに制限しようとしました(org-lint '(link-to-local-file))が、構文解析はまだ顕著な遅延を引き起こします。リンターを現在のサブツリーに制限するか、asyncライブラリを使用すると、パフォーマンスが向上する可能性があります。とにかく、以下はのかなり単純なflycheck設定ですorg-lint

(flycheck-define-generic-checker 'org-lint
  "Syntax checker for org-lint."
  :start 'flycheck-org-lint-start
  :modes '(org-mode))

(defun flycheck-org-lint-start (checker callback)
    (funcall
     callback 'finished
     (save-excursion
       (mapcar
        (lambda (err)
          (goto-char (car err))
          (flycheck-error-new-at
           (org-current-line) (1+ (current-column))
           'warning (cadr err) :checker checker))
        (org-lint-link-to-local-file (org-element-parse-buffer))))))

(add-to-list 'flycheck-checkers 'org-lint)

1
このコードを使用すると、このエラーが発生します。構文を自動的に確認する際のエラー:(void-function org-lint-link-to-local-file)。その行を(org-lint '(link-to-local-file)))に変更する必要があり、機能します。ありがとう
map7 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.