Compare commits

...

11 Commits

Author SHA1 Message Date
020cbc918f Update preview image 2023-12-09 05:19:42 -05:00
a0c84a3c1e Remove obselete face alias definition
3.0.0 broke compatibility with just about everything that may have hooked into
the package, so it should be appropriate to shed this bit of cruft.
2023-12-09 05:13:28 -05:00
a9b55d8308 Refactor client segment
The client status indicator will be propertized with its own face.

The buffer status indicator and default mood-line-format configurations have
also been adjusted to make room for the new client status indicator.
2023-12-09 05:11:04 -05:00
eb3993601d Merge branch 'client-indicator' 2023-12-09 03:51:06 -05:00
5dfc7572dd Merge: handle vc-display-status being nil 2023-12-09 03:13:27 -05:00
731c786af4 Clarify benchmark results 2023-12-06 20:15:14 -05:00
8a580f30bb Remove unnecessary section header 2023-12-06 20:15:07 -05:00
Seth Ladygo
b1028ce61a Handle vc-display-status being nil. 2023-04-28 15:31:08 -07:00
Trevor Richards
6e3f62f57c
Moved the emacsclient segment to before anzu 2022-12-31 16:19:32 -08:00
Trevor Richards
21e4addc9b
Added emacsclient indicator
Closes feature request from #25
2022-12-31 16:11:30 -08:00
Trevor Richards
25c7846b8f
Align mode-line-evil-state-alist 2022-12-30 21:03:29 -08:00
6 changed files with 49 additions and 35 deletions

View File

@ -7,14 +7,14 @@
(start-time (current-time)))
(cl-loop for i to num
do (format-mode-line mode-line-format))
(format-time-string "%s.%3N" (time-since start-time))))
(format-time-string "%s.%3N seconds" (time-since start-time))))
;; Default mode line:
(time-mode-line 10000) ;; "0.440"
(time-mode-line 10000 :and-mem) ;; "2.402"
(time-mode-line 10000) ;; "0.440 seconds"
(time-mode-line 10000 :and-mem) ;; "2.402 seconds"
;; mood-line (default settings):
(mood-line-mode t)
(time-mode-line 10000) ;; "0.309"
(time-mode-line 10000 :and-mem) ;; "1.286"
(time-mode-line 10000) ;; "0.309 seconds"
(time-mode-line 10000 :and-mem) ;; "1.286 seconds"
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 KiB

BIN
.repo-assets/preview.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -1,4 +1,4 @@
# <img src=".repo-assets/icon.png" width=75> mood-line
# <img src=".repo-assets/icon.png" width=50> mood-line
A lightweight, drop-in replacement for the default Emacs mode line configuration.
@ -19,7 +19,7 @@ A lightweight, drop-in replacement for the default Emacs mode line configuration
## Preview
![Preview Image](.repo-assets/preview.png "Preview Image")
![Preview Image](.repo-assets/preview.webp "Preview Image")
## Configuration

View File

@ -49,8 +49,11 @@
(defun mood-line-segment-vc--rev (vc-mode-str backend)
"Return name of current file's revision for BACKEND according to `vc-mode'.
VC-MODE-STR is expected to be the value of `vc-mode' in the current buffer."
(or (pcase backend
VC-MODE-STR is expected to be the value of `vc-mode' in the current buffer.
If `vc-display-status' is nil, return the name of BACKEND."
(or (unless vc-display-status
(symbol-name backend))
(pcase backend
('Git (substring-no-properties vc-mode-str 5))
('Hg (substring-no-properties vc-mode-str 4)))
(ignore-errors

View File

@ -144,6 +144,8 @@ An optional key :padding may be provided, the value of which will be used as
(:buffer-modified . ?*)
(:buffer-read-only . ?#)
(:frame-client . ?@)
(:count-separator . ?*))
"Set of ASCII glyphs for use with mood-line.")
@ -165,6 +167,8 @@ An optional key :padding may be provided, the value of which will be used as
(:buffer-modified . ?●)
(:buffer-read-only . ?■)
(:frame-client . ?)
(:count-separator . ?×))
"Set of Fira Code-compatible glyphs for use with mood-line.")
@ -186,18 +190,20 @@ An optional key :padding may be provided, the value of which will be used as
(:buffer-modified . ?●)
(:buffer-read-only . ?■)
(:frame-client . ?⇅)
(:count-separator . ?✕))
"Set of Unicode glyphs for use with mood-line.")
(defconst mood-line-format-default
(mood-line-defformat
:left
(((mood-line-segment-modal) . " ")
((mood-line-segment-buffer-status) . " ")
((mood-line-segment-buffer-name) . " ")
((mood-line-segment-anzu) . " ")
((mood-line-segment-multiple-cursors) . " ")
((mood-line-segment-cursor-position) . " ")
(((mood-line-segment-modal) . " ")
((or (mood-line-segment-buffer-status) " ") . " ")
((mood-line-segment-buffer-name) . " ")
((mood-line-segment-anzu) . " ")
((mood-line-segment-multiple-cursors) . " ")
((mood-line-segment-cursor-position) . " ")
(mood-line-segment-scroll))
:right
(((mood-line-segment-vc) . " ")
@ -211,7 +217,9 @@ An optional key :padding may be provided, the value of which will be used as
(mood-line-defformat
:left
(((mood-line-segment-modal) . " ")
((mood-line-segment-buffer-status) . " ")
((or (mood-line-segment-buffer-status)
(mood-line-segment-client)
" ") . " ")
((mood-line-segment-buffer-name) . " ")
((mood-line-segment-anzu) . " ")
((mood-line-segment-multiple-cursors) . " ")
@ -288,6 +296,8 @@ Keys are names for different mode line glyphs, values are characters for that
:buffer-modified | File-backed buffer is modified
:buffer-read-only | File-backed buffer is read-only
:frame-client | Frame is a client for an Emacs daemon
:count-separator | Separates some indicator names from numerical counts
`mood-line-glyphs-ascii' will be used as a fallback whenever a glyph is found
@ -344,6 +354,10 @@ See `mood-line-defformat' for a helpful formatting macro."
"Face used for the ':buffer-narrowed' buffer status indicator."
:group 'mood-line-faces)
(defface mood-line-frame-status-client
'((t (:inherit shadow :weight normal)))
"Face used for the :frame-client frame status indicator.")
(defface mood-line-major-mode
'((t (:inherit bold)))
"Face used for the major mode indicator."
@ -384,15 +398,6 @@ See `mood-line-defformat' for a helpful formatting macro."
"Face used for less important mode line elements."
:group 'mood-line-faces)
;; ---------------------------------- ;;
;; Obsolete faces
;; ---------------------------------- ;;
(define-obsolete-face-alias
'mood-line-modified
'mood-line-buffer-status-modified
"2.1.0")
;; -------------------------------------------------------------------------- ;;
;;
;; Helper functions
@ -504,6 +509,18 @@ Modal modes checked, in order: `evil-mode', `meow-mode', `god-mode'."
((bound-and-true-p flymake-mode)
mood-line-segment-checker--flymake-text)))
;; -------------------------------------------------------------------------- ;;
;;
;; Client segment
;;
;; -------------------------------------------------------------------------- ;;
(defun mood-line-segment-client ()
"Return an indicator representing the client status of the current frame."
(when (frame-parameter nil 'client)
(propertize (mood-line--get-glyph :frame-client)
'face 'mood-line-frame-status-client)))
;; -------------------------------------------------------------------------- ;;
;;
;; anzu segment
@ -573,12 +590,10 @@ Modal modes checked, in order: `evil-mode', `meow-mode', `god-mode'."
'face 'mood-line-buffer-status-modified))
(buffer-read-only
(propertize (mood-line--get-glyph :buffer-read-only)
'face 'mood-line-buffer-status-read-only))
(t " "))
(if (buffer-narrowed-p)
(propertize (mood-line--get-glyph :buffer-narrowed)
'face 'mood-line-buffer-status-narrowed)
" ")))
'face 'mood-line-buffer-status-read-only)))
(when (buffer-narrowed-p)
(propertize (mood-line--get-glyph :buffer-narrowed)
'face 'mood-line-buffer-status-narrowed))))
;; ---------------------------------- ;;
;; Buffer name segment
@ -690,10 +705,6 @@ Modal modes checked, in order: `evil-mode', `meow-mode', `god-mode'."
;;
;; -------------------------------------------------------------------------- ;;
;; ---------------------------------- ;;
;; Configuration
;; ---------------------------------- ;;
(defconst mood-line--hooks-alist
'((mood-line-segment-checker--flycheck-update
. (flycheck-mode-hook