summaryrefslogtreecommitdiff
path: root/lisp/progmodes/flymake.el
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2018-06-05 14:31:38 +0100
committerJoão Távora <joaotavora@gmail.com>2018-06-05 15:18:04 +0100
commitaadac04923c9ae47f0bccc706857b94166c9d355 (patch)
treed9eb075294247addb0292705e5026fd147b42624 /lisp/progmodes/flymake.el
parentfb759a75007d38a8aea6e8c1a22bbc004453a73f (diff)
downloademacs-aadac04923c9ae47f0bccc706857b94166c9d355.tar.gz
Correctly filter Flymake diagnostic types shown in mode-line
Thus, if a package foo has its own types foo-error and foo-warning, and if the buffer has no errors, the mode-line will correctly show `[0 0]' (zero errors and warnings) instead of `[0 0 0 0]' (zero errors, zero foo-errors, zero warnings, zero foo-warnings). * lisp/progmodes/flymake.el (flymake--mode-line-format): Coalesce diagnostic types based on the severity, not the symbol.
Diffstat (limited to 'lisp/progmodes/flymake.el')
-rw-r--r--lisp/progmodes/flymake.el13
1 files changed, 8 insertions, 5 deletions
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 35d56725445..ec933ad16ba 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1068,14 +1068,17 @@ applied."
,@(unless (or all-disabled
(null known))
(cl-loop
+ with get-severity = (lambda (type)
+ (flymake--lookup-type-property
+ type
+ 'severity
+ (warning-numeric-level :error)))
for (type . severity)
in (cl-sort (mapcar (lambda (type)
- (cons type (flymake--lookup-type-property
- type
- 'severity
- (warning-numeric-level :error))))
+ (cons type (funcall get-severity type)))
(cl-union (hash-table-keys diags-by-type)
- '(:error :warning)))
+ '(:error :warning)
+ :key get-severity))
#'>
:key #'cdr)
for diags = (gethash type diags-by-type)