Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for display icons in check-simple-format #706

Merged
merged 10 commits into from
Mar 22, 2024
19 changes: 18 additions & 1 deletion doom-modeline-core.el
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,24 @@ in the given order."

(defcustom doom-modeline-check-simple-format t
"If non-nil, only display one number for check information if applicable."
:type 'boolean
:type '(choice boolean
DevelopmentCool2449 marked this conversation as resolved.
Show resolved Hide resolved
(const :tag "simple icons" icons))
:group 'doom-modeline)

(defcustom doom-modeline-check-warning-icon
seagle0128 marked this conversation as resolved.
Show resolved Hide resolved
(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 icons."
:type '(string)
:group 'doom-modeline)

(defcustom doom-modeline-check-note-icon
(doom-modeline-check-icon
"nf-md-information_outline" "i" "i" 'doom-modeline-info)
"Icon to be using in check segment.
Only works if `doom-modeline-check-simple-format' is set to icons."
:type '(string)
:group 'doom-modeline)

(defcustom doom-modeline-number-limit 99
Expand Down
111 changes: 69 additions & 42 deletions doom-modeline-segments.el
Original file line number Diff line number Diff line change
Expand Up @@ -783,11 +783,14 @@ level."
(pcase status
('finished (if flycheck-current-errors
(let-alist (doom-modeline--flycheck-count-errors)
(doom-modeline-check-icon
"nf-md-alert_circle_outline" "❗" "!"
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info))))
(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-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 @@ -846,19 +849,30 @@ mouse-2: Show help for minor mode")
(pcase status
('finished (when flycheck-current-errors
(let-alist (doom-modeline--flycheck-count-errors)
(if doom-modeline-check-simple-format
(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)))
(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))))))
(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))))
('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"
(doom-modeline-check-text (number-to-string .error)
'doom-modeline-urgent)
(doom-modeline-check-text doom-modeline-check-warning-icon
'doom-modeline-warning)
(doom-modeline-check-text (number-to-string .warning)
'doom-modeline-warning)
(doom-modeline-check-text doom-modeline-check-note-icon
'doom-modeline-info)
(doom-modeline-check-text (number-to-string .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 @@ -886,20 +900,20 @@ mouse-3: Next error"
'mouse-face 'doom-modeline-highlight
'local-map (let ((map (make-sparse-keymap)))
(define-key map [mode-line mouse-1]
#'flycheck-list-errors)
#'flycheck-list-errors)
(define-key map [mode-line mouse-3]
#'flycheck-next-error)
#'flycheck-next-error)
(when (doom-modeline-mwheel-available-p)
(define-key map [mode-line mouse-wheel-down-event]
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flycheck-previous-error 1))))
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flycheck-previous-error 1))))
(define-key map [mode-line mouse-wheel-up-event]
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flycheck-next-error 1))))
(lambda (event)
(interactive "e")
(with-selected-window (posn-window (event-start event))
(flycheck-next-error 1))))
map))))))
(add-hook 'flycheck-status-changed-functions #'doom-modeline-update-flycheck-text)
(add-hook 'flycheck-mode-hook #'doom-modeline-update-flycheck-text)
Expand Down Expand Up @@ -958,10 +972,12 @@ mouse-3: Next error"
((> severity note-level) (cl-incf .warning))
(t (cl-incf .note))))))
(if (> (+ .error .warning .note) 0)
(doom-modeline-check-icon "nf-md-alert_circle_outline" "❗" "!"
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info)))
(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-check_circle_outline" "✔" "-" 'doom-modeline-info))))))))
(propertize
icon
Expand Down Expand Up @@ -1039,18 +1055,29 @@ mouse-2: Show help for minor mode"
(all-disabled nil)
(t (let ((num (+ .error .warning .note)))
(when (> num 0)
(if doom-modeline-check-simple-format
(doom-modeline-check-text (number-to-string num)
(pcase doom-modeline-check-simple-format
('t (doom-modeline-check-text (number-to-string num)
(cond ((> .error 0) 'doom-modeline-urgent)
((> .warning 0) 'doom-modeline-warning)
(t 'doom-modeline-info)))
(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 .note)
'doom-modeline-info)))))))))
(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 .note)
'doom-modeline-info)))
('icons (format "%s %s%s %s%s"
(doom-modeline-check-text (number-to-string .error)
'doom-modeline-urgent)
(doom-modeline-check-text doom-modeline-check-warning-icon
'doom-modeline-warning)
(doom-modeline-check-text (number-to-string .warning)
'doom-modeline-warning)
(doom-modeline-check-text doom-modeline-check-note-icon
'doom-modeline-info)
(doom-modeline-check-text (number-to-string .note)
'doom-modeline-info))))))))))
(propertize
text
'help-echo (cond
Expand Down