branch: elpa/flymake-collection
commit 6c1d9de2ad4da11963bfadff2fb9989b27e2ca01
Author: Mohsin Kaleem <[email protected]>
Commit: Mohsin Kaleem <[email protected]>
flymake-commands: Fix change checker for multi-mode config entries
---
src/flymake-collection-commands.el | 7 ++++--
src/flymake-collection-hook.el | 50 +++++++++-----------------------------
2 files changed, 17 insertions(+), 40 deletions(-)
diff --git a/src/flymake-collection-commands.el
b/src/flymake-collection-commands.el
index 1c600154dc..a5a4067f9b 100644
--- a/src/flymake-collection-commands.el
+++ b/src/flymake-collection-commands.el
@@ -30,6 +30,8 @@
(require 'flymake)
(require 'flymake-collection-hook)
+(eval-when-compile (require 'subr-x))
+
(defun flymake-collection-change-checker--cands (all-modes)
"Candidates for `flymake-collection-change-checker'.
With ALL-MODES fetch all registered flymake checkers even when
@@ -39,7 +41,8 @@ they aren't associated with the current mode."
(cl-loop for (mode . checkers) in
(if all-modes
flymake-collection-hook-config
- (list (assoc major-mode flymake-collection-hook-config)))
+ (list (cons major-mode (flymake-collection-hook--checkers
major-mode))))
+ do (setq mode (ensure-list mode))
append
(cl-loop for it in checkers
with checker = nil
@@ -60,7 +63,7 @@ See `flymake-collection-change-checker--cands' for a
description of ALL-MODES."
(group-function (lambda (cand transform)
(if transform
cand
- (symbol-name (cadr (assoc cand cands))))))
+ (string-join (mapcar #'symbol-name (cadr (assoc
cand cands))) "/"))))
(affix-function (lambda (cands-keys)
(cl-loop
for cand in cands-keys collect
diff --git a/src/flymake-collection-hook.el b/src/flymake-collection-hook.el
index 1a22b7fefc..deffe8202d 100644
--- a/src/flymake-collection-hook.el
+++ b/src/flymake-collection-hook.el
@@ -116,22 +116,6 @@
:type 'boolean
:group 'flymake-collection)
-(defun flymake-collection-hook--configured-checkers-for-mode (mode)
- "Return all checkers configured for MODE in
`flymake-collection-hook-config'."
- (cl-dolist (it flymake-collection-hook-config)
- (let ((it-mode (car it))
- (it-conf (cdr it)))
- (cond ((symbolp it-mode)
- (when (equal it-mode mode)
- (cl-return it-conf)))
- ((consp it)
- (when (member mode it-mode)
- (cl-return it-conf)))
- (t
- (user-error
- "Unknown hook predicate=%s in `flymake-collection-hook-config'"
- it))))))
-
(defun flymake-collection-hook--expand-configs (checkers)
"Resolve all the checkers in CHECKERS.
Resolving converts each checker in CHECKERS, which should be the value-type in
@@ -154,18 +138,18 @@ that are not true."
:depth ,depth
:disabled ,(or disabled
(and predicate
- (funcall
predicate))))))
+ (not (funcall
predicate)))))))
and if predicated-result
collect predicated-result))
-(defun flymake-collection-hook--checkers ()
- "Fetch config entries passing the predicate for the current buffer."
+(defun flymake-collection-hook--checkers (mode)
+ "Fetch config entries associated with MODE."
(let (checkers
- (modes (list major-mode)))
+ (modes (list mode)))
(when flymake-collection-hook-inherit-config
- (let ((mode major-mode))
- (while (setq mode (get mode 'derived-mode-parent))
- (push mode modes))))
+ (let ((mode-parent major-mode))
+ (while (setq mode-parent (get mode-parent 'derived-mode-parent))
+ (push mode-parent modes))))
(dolist (it flymake-collection-hook-config)
(when
@@ -174,25 +158,15 @@ that are not true."
((pred consp) (seq-intersection modes (car it)))
(_
(user-error "Unknown hook predicate=%s in
`flymake-collection-hook-config'" it)))
- (setq checkers (append checkers (cdr it)))))))
+ (setq checkers (append checkers (cdr it)))))
+
+ checkers))
(defun flymake-collection-hook--checker-configs (mode)
"Fetch the list of diagnostic functions for MODE as plists.
The plists contains keys for :checker, :depth, :disabled."
- (let (checkers
- (modes (list mode)))
- ;; Consider all the parent modes as well.
- (when flymake-collection-hook-inherit-config
- (while (setq mode (get mode 'derived-mode-parent))
- (push mode modes)))
- ;; For each mode populate the checkers alist with (checker . depth).
- (dolist (mode modes)
- (setq checkers (append
- checkers
- (flymake-collection-hook--expand-configs
- (flymake-collection-hook--configured-checkers-for-mode
- mode)))))
- checkers))
+ (flymake-collection-hook--expand-configs
+ (flymake-collection-hook--checkers mode)))