|
68 | 68 |
|
69 | 69 | (defcustom jcs-modeline-checker-colors '((error . "#FB4933") |
70 | 70 | (warning . "#FABD2F") |
71 | | - (info . "#83A598")) |
| 71 | + (info . "#83A598") |
| 72 | + (note . "#83A598")) |
72 | 73 | "Alist of colors for checkers." |
73 | 74 | :type 'list |
74 | 75 | :group 'jcs-modeline) |
|
273 | 274 | ;; |
274 | 275 | ;;; Flymake |
275 | 276 |
|
| 277 | +(defun jcs-modeline--flymake-lighter (diags-by-type state running) |
| 278 | + "Return flycheck lighter by given STATE. |
| 279 | +
|
| 280 | +If argument RUNNING is non-nil, we turn lighter into question mark." |
| 281 | + (let* ((c-state (cl-case state |
| 282 | + (error :error) |
| 283 | + (warning :warning) |
| 284 | + (note :note))) |
| 285 | + (counts (length (gethash c-state diags-by-type))) |
| 286 | + (color (cdr (assoc state jcs-modeline-checker-colors))) |
| 287 | + (lighter (format "%s" (if running "?" counts)))) |
| 288 | + (propertize lighter 'face `(:foreground ,color)))) |
| 289 | + |
276 | 290 | (defun jcs-modeline--render-flymake () |
277 | 291 | "Render for flymake." |
278 | 292 | (when (bound-and-true-p flymake-mode) |
|
291 | 305 | (flymake--state-diags state))) |
292 | 306 | flymake--state) |
293 | 307 | (concat |
294 | | - (cond |
295 | | - (some-waiting (propertize "⏳" 'face `(:foreground "#FABD2F"))) |
296 | | - ((null known) (propertize "⚠" 'face `(:foreground "#FABD2F"))) |
297 | | - (all-disabled (propertize "⚠" 'face `(:foreground "#FB4933"))) |
298 | | - (t |
299 | | - (apply #'concat |
300 | | - (mapcar (lambda (args) |
301 | | - (apply (lambda (num str face) |
302 | | - (propertize (format str num) 'face face)) |
303 | | - args)) |
304 | | - `((,(length (gethash :error diags-by-type)) "•%d " error) |
305 | | - (,(length (gethash :warning diags-by-type)) "•%d " warning) |
306 | | - (,(length (gethash :note diags-by-type)) "•%d" success)))))) |
| 308 | + (let* ((states '(error warning note)) |
| 309 | + (last (car (last states))) |
| 310 | + result) |
| 311 | + (dolist (state states) |
| 312 | + (when-let ((lighter (jcs-modeline--flymake-lighter |
| 313 | + diags-by-type state |
| 314 | + (or some-waiting (null known) all-disabled)))) |
| 315 | + (setq result (concat result lighter |
| 316 | + (unless (equal state last) "/"))))) |
| 317 | + result) |
307 | 318 | " ")))) |
308 | 319 |
|
309 | 320 | ;; |
310 | 321 | ;;; Flycheck |
311 | 322 |
|
312 | | -(defun jcs-modeline--flycheck-lighter (state) |
313 | | - "Return flycheck information for the given error type STATE." |
| 323 | +(defun jcs-modeline--flycheck-lighter (state running) |
| 324 | + "Return flycheck lighter by given STATE. |
| 325 | +
|
| 326 | +If argument RUNNING is non-nil, we turn lighter into question mark." |
314 | 327 | (let* ((counts (flycheck-count-errors flycheck-current-errors)) |
315 | 328 | (err (or (cdr (assq state counts)) "0")) |
316 | | - (running (eq 'running flycheck-last-status-change))) |
317 | | - (format "%s" (if running "?" err)))) |
| 329 | + (color (cdr (assoc state jcs-modeline-checker-colors))) |
| 330 | + (lighter (format "%s" (if running "?" err)))) |
| 331 | + (propertize lighter 'face `(:foreground ,color)))) |
318 | 332 |
|
319 | 333 | (defun jcs-modeline--render-flycheck () |
320 | 334 | "Render for flycheck." |
321 | 335 | (when (bound-and-true-p flycheck-mode) |
322 | 336 | (concat |
323 | | - (let ((last (caar (last jcs-modeline-checker-colors))) |
324 | | - result) |
325 | | - (dolist (state jcs-modeline-checker-colors) |
326 | | - (let* ((lighter (jcs-modeline--flycheck-lighter (car state))) |
327 | | - (lighter (propertize lighter 'face `(:foreground ,(cdr state))))) |
| 337 | + (let* ((states '(error warning info)) |
| 338 | + (last (car (last states))) |
| 339 | + (running (eq 'running flycheck-last-status-change)) |
| 340 | + result) |
| 341 | + (dolist (state states) |
| 342 | + (when-let ((lighter (jcs-modeline--flycheck-lighter state running))) |
328 | 343 | (setq result (concat result lighter |
329 | | - (unless (equal (car state) last) "/"))))) |
| 344 | + (unless (equal state last) "/"))))) |
330 | 345 | result) |
331 | 346 | " "))) |
332 | 347 |
|
|
0 commit comments