aboutsummaryrefslogtreecommitdiff
path: root/Emacs/.config/emacs/config.org
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2024-07-02 13:22:44 +0100
committerAryadev Chavali <aryadev@aryadevchavali.com>2024-07-02 13:24:47 +0100
commit38b69af52b9a6f770b0cf4413fcfd53a9688c4cc (patch)
treee4304a465bf578d1cd9088a34f39da0f41ec5d9c /Emacs/.config/emacs/config.org
parent54a00ccd3dda8b1e26261329929faa9f67c0209a (diff)
downloaddotfiles-38b69af52b9a6f770b0cf4413fcfd53a9688c4cc.tar.gz
dotfiles-38b69af52b9a6f770b0cf4413fcfd53a9688c4cc.tar.bz2
dotfiles-38b69af52b9a6f770b0cf4413fcfd53a9688c4cc.zip
(Emacs/config)~refactor better-mode-line settings
Use new namespace, move evil-state mode-line generation to personal configuration and add (mode-line-selected-window-p) checks to hide the left and right segment when they're not the focused window.
Diffstat (limited to 'Emacs/.config/emacs/config.org')
-rw-r--r--Emacs/.config/emacs/config.org79
1 files changed, 50 insertions, 29 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org
index db6a0e8..38ad898 100644
--- a/Emacs/.config/emacs/config.org
+++ b/Emacs/.config/emacs/config.org
@@ -285,8 +285,8 @@ above the minibuffer (where you do completions). It can store quite
literally anything, but generally stuff like the buffer name, file
type, column and line info, etc is put there.
-The default mode-line is just... disgusting. It displays information
-in an unintelligible format and seems to smash together a bunch of
+The default mode-line is... disgusting. It displays information in an
+unintelligible format and seems to smash together a bunch of
information without much care for ordering. Most heartbreaking is
that any mode can just insert new information onto the mode-line
without any purview, which can be really annoying. It's also very
@@ -301,37 +301,58 @@ the mode line to achieve this.
:load-path "elisp/"
:demand t
:init
- (setq +better-mode-line/left-segment ;; LEFT SEGMENT
- '("%l:%c" ;; Line and column count
- " "
- "%p" ;; Percentage into buffer
- ("[" ;; Evil state
- (:eval
- (+better-mode-line/evil-state))
- "]"))
- +better-mode-line/centre-segment ;; CENTRE SEGMENT
- '("%+" ;; Buffer state (changed or not)
- "%b" ;; Buffer name
- ("(" ;; Major mode
+ (defun +mode-line/evil-state ()
+ "Returns either the empty string if no evil-state is defined or
+the first character of the evil state capitalised"
+ (with-eval-after-load "evil"
+ (if (bound-and-true-p evil-state)
+ (upcase
+ (substring
+ (format "%s"
+ evil-state)
+ 0 1))
+ "")))
+
+ (setq better-mode-line/left-segment ;; LEFT SEGMENT
+ '(" "
+ (:eval
+ (when (mode-line-window-selected-p)
+ '("%l:%c" ;; Line and column count
+ " "
+ "%p" ;; Percentage into buffer
+ ("[" ;; Evil state
+ (:eval
+ (+mode-line/evil-state))
+ "]")))))
+ better-mode-line/centre-segment ;; CENTRE SEGMENT
+ '("%+" ;; Buffer state (changed or not)
+ "%b" ;; Buffer name
+ ("(" ;; Major mode
(:eval (format "%s" major-mode))
")")
" "
- "%I" ;; Buffer size (in bytes)
+ "%I" ;; Buffer size (in bytes)
)
- +better-mode-line/right-segment ;; RIGHT SEGMENT
- '((:eval (if (project-current) ;; Name of current project (if any)
- (concat (project-name
- (project-current))
- vc-mode) ;; ... with git branch
- ""))
- (:eval ;; LSP information
- (with-eval-after-load "eglot"
- (if eglot--managed-mode
- (concat " " (eglot--mode-line-format)))))
- mode-line-misc-info ;; Any other information
- ))
- :config
- (+better-mode-line/setup-mode-line))
+ better-mode-line/right-segment ;; RIGHT SEGMENT
+ '(:eval
+ (when (mode-line-window-selected-p)
+ '((:eval (if (project-current) ;; Name of current project (if any)
+ (concat (project-name
+ (project-current))
+ vc-mode) ;; ... with git branch
+ ""))
+ (:eval ;; LSP information
+ (with-eval-after-load "eglot"
+ (if eglot--managed-mode
+ (concat
+ " "
+ (eglot--mode-line-format)))))
+ mode-line-misc-info ;; Any other information
+ " "
+ )))
+ )
+ :config
+ (better-mode-line/setup-mode-line))
#+end_src
** Fringes
Turning off borders in my window manager was a good idea, so turn off