Tự động chạy org-lint thông qua flycheck


12

Tôi đã có một đống tệp chế độ org mà tôi xuất bản thành HTML cho cơ sở tri thức, đôi khi việc xuất bản bị sập do liên kết bị hỏng hoặc một cái gì đó và thật khó để tìm ra vấn đề.

Gần đây tôi đã sử dụng org-lint để tìm các vấn đề. Có cách nào để chạy cái này tự động thông qua flycheck không?


1
Tại sao không chạy nó thông qua org-export-before-process-hook? Tôi nghĩ để sử dụng flycheck bạn cần một chương trình bên ngoài để linting. Có vẻ như có thể viết các hàm elisp trong trình kiểm tra flycheck-xác định-chung-hoạt động với org-lint và làm những gì bạn muốn trong flycheck.
John Kitchin

Có lẽ chạy nó trước khi bạn xuất sẽ đủ tốt? Nếu bạn kiểm tra mỗi lần bạn tiết kiệm thì sẽ quá đắt.
xji

@JohnKitchin: Các chương trình bên ngoài là phổ biến nhưng không cần thiết, mặc dù trong trường hợp này, chương trình bên ngoài tự nhiên để chạy sẽ là chính nó :)
Clément

Câu trả lời:


6

Tôi đã cố gắng hạn chế linting cho một người kiểm tra (org-lint '(link-to-local-file)), tuy nhiên việc phân tích cú pháp vẫn sẽ gây ra sự chậm trễ đáng chú ý. Có thể giới hạn người nói dối với cây con hiện tại hoặc sử dụng asyncthư viện có thể cải thiện hiệu suất. Dù sao, bên dưới là một thiết lập flycheck khá đơn giản cho 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
Tôi gặp lỗi này khi sử dụng mã này; Lỗi trong khi kiểm tra cú pháp tự động: (void-function org-lint-link-to-local-file). Tôi đã phải thay đổi dòng đó thành (org-lint '(liên kết đến tệp cục bộ)) và nó hoạt động. Cảm ơn
map7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.