branch: elpa/flycheck
commit 62570fafbedb8fa3f7d75a50a9364feca3b294ef
Author: Peter Oliver <[email protected]>
Commit: Bozhidar Batsov <[email protected]>
Add compatibility with Proselint 0.16
Proselint 0.16 changed its calling conventions and output format.
---
CHANGES.rst | 1 +
flycheck.el | 62 ++++++++++++++++++++++++++++++++++++++++++-------------------
2 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/CHANGES.rst b/CHANGES.rst
index 391b8c3a64b..d5c1c8d378b 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -6,6 +6,7 @@ New Features
------------
- [#2132]: Add the ``flycheck-shellcheck-infer-shell`` option to the
``sh-shellcheck`` checker.
+- [#2139]: Add compatibility with Proselint 0.16.
-----------
Bugs fixed
diff --git a/flycheck.el b/flycheck.el
index 9bd76ffe881..b6aa9ebfa58 100644
--- a/flycheck.el
+++ b/flycheck.el
@@ -10501,30 +10501,54 @@ CHECKER and BUFFER denoted the CHECKER that returned
OUTPUT and
the BUFFER that was checked respectively.
See URL `https://proselint.com/' for more information about proselint."
- (mapcar (lambda (err)
- (let-alist err
- (flycheck-error-new-at-pos
- .start
- (pcase .severity
- (`"suggestion" 'info)
- (`"warning" 'warning)
- (`"error" 'error)
- ;; Default to error
- (_ 'error))
- .message
- :id .check
- :buffer buffer
- :checker checker
- ;; See https://github.com/amperser/proselint/issues/1048
- :end-pos .end)))
- (let-alist (car (flycheck-parse-json output))
- .data.errors)))
+ (let ((response (flycheck-parse-json output)))
+ (if (eq (caaar response) 'data)
+ ;; Proselint versions <= 0.14.0:
+ (mapcar (lambda (err)
+ (let-alist err
+ (flycheck-error-new-at-pos
+ .start
+ (pcase .severity
+ (`"suggestion" 'info)
+ (`"warning" 'warning)
+ (`"error" 'error)
+ ;; Default to error
+ (_ 'error))
+ .message
+ :id .check
+ :buffer buffer
+ :checker checker
+ ;; See https://github.com/amperser/proselint/issues/1048
+ :end-pos .end)))
+ (let-alist (car response)
+ .data.errors))
+ ;; Proselint versions >= 0.16.0
+ (mapcar (lambda (err)
+ (let-alist err
+ (flycheck-error-new-at-pos
+ (nth 0 .span)
+ 'warning
+ .message
+ :id .check_path
+ :buffer buffer
+ :checker checker
+ :end-pos (nth 1 .span))))
+ (let-alist (car response)
+ .result.<stdin>.diagnostics)))))
(flycheck-define-checker proselint
"Flycheck checker using Proselint.
See URL `https://proselint.com/'."
- :command ("proselint" "--json" "-")
+ :command ("proselint"
+ (eval
+ (if (= (call-process (or flycheck-proselint-executable
"proselint")
+ nil nil nil "--version")
+ 0)
+ ;; Proselint versions <= 0.14.0:
+ (list "--json" "-")
+ ;; Proselint versions >= 0.16.0
+ (list "check" "--output-format=json"))))
:standard-input t
:error-parser flycheck-proselint-parse-errors
:modes (text-mode markdown-mode gfm-mode message-mode org-mode))