Skip to content

Commit

Permalink
Add optional support for icons in check segment
Browse files Browse the repository at this point in the history
This a improved version of this PR seagle0128#706, this should fix some bugs from original patch like icons in inactive window and a better look.
  • Loading branch information
DevelopmentCool2449 authored Mar 24, 2024
1 parent 66d1c42 commit 065fc3f
Showing 1 changed file with 44 additions and 47 deletions.
91 changes: 44 additions & 47 deletions doom-modeline-segments.el
Original file line number Diff line number Diff line change
Expand Up @@ -756,27 +756,25 @@ Uses `nerd-icons-mdicon' to fetch the icon."
(propertize text 'face (or face 'mode-line)))

(defvar doom-modeline-check-error-icon
(doom-modeline-check-icon
"nf-md-alert_circle_outline" "" "!" 'doom-modeline-urgent)
(concat (doom-modeline-check-icon
"nf-md-alert_circle_outline" "" "!" 'doom-modeline-urgent)
" ")
"Icon to be using in check segment.
Only works if `doom-modeline-check-simple-format' is set to the symbol
`icons'.")

;; NOTE: Nerd icons bugs with error numbers,
;; adding a space to warning and note icon should fix this.
(defvar doom-modeline-check-warning-icon
(concat
(doom-modeline-check-icon "nf-md-alert_outline" "" "!" 'doom-modeline-warning)
" ")
(concat (doom-modeline-check-icon
"nf-md-alert_outline" "" "!" 'doom-modeline-warning)
" ")
"Icon to be using in check segment.
Only works if `doom-modeline-check-simple-format' is set to the symbol
`icons'.")

(defvar doom-modeline-check-note-icon
(concat
(doom-modeline-check-icon
"nf-md-information_outline" "" "i" 'doom-modeline-info)
" ")
(concat (doom-modeline-check-icon
"nf-md-information_outline" "" "i" 'doom-modeline-info)
" ")
"Icon to be using in check segment.
Only works if `doom-modeline-check-simple-format' is set to the symbol
`icons'.")
Expand Down Expand Up @@ -809,13 +807,13 @@ level."
(pcase status
('finished (if flycheck-current-errors
(let-alist (doom-modeline--flycheck-count-errors)
(if (not (eq doom-modeline-check-simple-format 'icons))
(doom-modeline-check-icon
"nf-md-alert_circle_outline" "" "!"
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info)))
doom-modeline-check-error-icon))
(doom-modeline-check-icon
"nf-md-alert_circle_outline" "" "!"
(cond ((eq doom-modeline-check-simple-format 'icons)
'doom-modeline-urgent)
((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info))))
(doom-modeline-check-icon "nf-md-check_circle_outline" "" "" 'doom-modeline-info)))
('running (doom-modeline-check-icon "nf-md-timer_sand" "" "*" 'doom-modeline-debug))
('no-checker (doom-modeline-check-icon "nf-md-alert_box_outline" "" "-" 'doom-modeline-debug))
Expand Down Expand Up @@ -875,28 +873,27 @@ mouse-2: Show help for minor mode")
('finished (when flycheck-current-errors
(let-alist (doom-modeline--flycheck-count-errors)
(pcase doom-modeline-check-simple-format
('t (doom-modeline-check-text
(number-to-string (+ .error .warning .info))
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info))))
('t (doom-modeline-check-text (number-to-string (+ .error .warning .info))
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info))))
('nil (format "%s/%s/%s"
(doom-modeline-check-text (number-to-string .error)
'doom-modeline-urgent)
(doom-modeline-check-text (number-to-string .warning)
'doom-modeline-warning)
(doom-modeline-check-text (number-to-string .info)
'doom-modeline-info)))
('icons (format "%s%s %s%s %s%s"
doom-modeline-check-error-icon
('icons (format "%s %s%s %s%s"
(doom-modeline-check-text (number-to-string .error)
'doom-modeline-urgent)
doom-modeline-check-warning-icon
(doom-modeline-check-text (number-to-string .warning)
'doom-modeline-warning)
doom-modeline-check-note-icon
(doom-modeline-check-text (number-to-string .info)
'doom-modeline-info)))))))
'doom-modeline-info)))
))))
('running (and doom-modeline--flycheck-text
(propertize doom-modeline--flycheck-text 'face 'doom-modeline-debug)))
;; ('no-checker nil)
Expand Down Expand Up @@ -996,12 +993,12 @@ mouse-3: Next error"
((> severity note-level) (cl-incf .warning))
(t (cl-incf .note))))))
(if (> (+ .error .warning .note) 0)
(if (not (eq doom-modeline-check-simple-format 'icons))
(doom-modeline-check-icon "nf-md-alert_circle_outline" "" "!"
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info)))
(doom-modeline-check-icon "nf-md-alert_circle_outline" "" "!" 'doom-modeline-urgent))
(doom-modeline-check-icon "nf-md-alert_circle_outline" "" "!"
(cond ((eq doom-modeline-check-simple-format 'icons)
'doom-modeline-urgent)
((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info)))
(doom-modeline-check-icon "nf-md-check_circle_outline" "" "-" 'doom-modeline-info))))))))
(propertize
icon
Expand Down Expand Up @@ -1073,8 +1070,10 @@ mouse-2: Show help for minor mode"
(when-let
((text
(cond
(some-waiting (and doom-modeline--flymake-text
(propertize doom-modeline--flymake-text 'face 'doom-modeline-debug)))
(some-waiting
(unless (eq doom-modeline-check-simple-format 'icons)
(and doom-modeline--flymake-text
(propertize doom-modeline--flymake-text 'face 'doom-modeline-debug))))
((null known) nil)
(all-disabled nil)
(t (let ((num (+ .error .warning .note)))
Expand All @@ -1091,8 +1090,7 @@ mouse-2: Show help for minor mode"
'doom-modeline-warning)
(doom-modeline-check-text (number-to-string .note)
'doom-modeline-info)))
('icons (format "%s%s %s%s %s%s"
doom-modeline-check-error-icon
('icons (format "%s %s%s %s%s"
(doom-modeline-check-text (number-to-string .error)
'doom-modeline-urgent)
doom-modeline-check-warning-icon
Expand All @@ -1115,20 +1113,20 @@ mouse-1: List all problems%s"
'mouse-face 'doom-modeline-highlight
'local-map (let ((map (make-sparse-keymap)))
(define-key map [mode-line mouse-1]
#'flymake-show-buffer-diagnostics)
#'flymake-show-buffer-diagnostics)
(when (doom-modeline-mwheel-available-p)
(define-key map (vector 'mode-line
mouse-wheel-down-event)
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flymake-goto-prev-error 1 nil t))))
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flymake-goto-prev-error 1 nil t))))
(define-key map (vector 'mode-line
mouse-wheel-up-event)
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flymake-goto-next-error 1 nil t))))
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flymake-goto-next-error 1 nil t))))
map)))))))
(advice-add #'flymake--handle-report :after #'doom-modeline-update-flymake-text)

Expand All @@ -1140,7 +1138,6 @@ mouse-1: List all problems%s"
(dolist (buf (buffer-list))
(with-current-buffer buf
(when (bound-and-true-p flymake-mode)
(doom-modeline-update-flymake-icon)
(doom-modeline-update-flymake-text)))))))

(doom-modeline-def-segment check
Expand All @@ -1152,7 +1149,7 @@ mouse-1: List all problems%s"
((and (bound-and-true-p flycheck-mode)
(bound-and-true-p flycheck--automatically-enabled-checkers))
`(,doom-modeline--flycheck-icon . ,doom-modeline--flycheck-text))))
(icon (and (eq doom-modeline-check-simple-format t) (car seg)))
(icon (car seg))
(text (cdr seg)))
(concat
(and (or icon text) (doom-modeline-spc))
Expand Down

0 comments on commit 065fc3f

Please sign in to comment.