Fix a few mode-line issues.

master
Jacopo De Simoi 4 months ago
parent 69d2aba9f3
commit da1502871f
  1. 51
      global.org

@ -366,6 +366,31 @@
#+end_src #+end_src
** Mode-line ** Mode-line
This snippet is taken from [[https://occasionallycogent.com/custom_emacs_modeline/index.html][here (occasionallycogent)]]. It serves the
purpose of keeping track of the currently selected window, so that
we can correctly highlight it in the modeline
#+begin_src emacs-lisp
(defvar cogent-line-selected-window (frame-selected-window))
(defun cogent-line-set-selected-window (&rest _args)
(when (not (minibuffer-window-active-p (frame-selected-window)))
(setq cogent-line-selected-window (frame-selected-window))
(force-mode-line-update)))
(defun cogent-line-unset-selected-window ()
(setq cogent-line-selected-window nil)
(force-mode-line-update))
(add-hook 'window-configuration-change-hook #'cogent-line-set-selected-window)
(add-hook 'focus-in-hook #'cogent-line-set-selected-window)
(add-hook 'focus-out-hook #'cogent-line-unset-selected-window)
(advice-add 'handle-switch-frame :after #'cogent-line-set-selected-window)
(advice-add 'select-window :after #'cogent-line-set-selected-window)
(defun cogent-line-selected-window-active-p ()
(eq cogent-line-selected-window (selected-window)))
#+end_src
Set a few parts of the mode-line
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq-default mode-line-modified '(:eval (if (buffer-modified-p) "●" "·")) (setq-default mode-line-modified '(:eval (if (buffer-modified-p) "●" "·"))
;Still needs some improvements, does not report Readonly state ;Still needs some improvements, does not report Readonly state
@ -383,18 +408,6 @@
"Inactive variant of indicator" "Inactive variant of indicator"
:group 'mode-line-faces) :group 'mode-line-faces)
;; This has some issues when two buffers are shown in different windows
;; There are some solutions but let us see if this works first
(defun mode-line-update-face (window)
"Update the `mode-line' face in WINDOW to indicate whether the window is selected."
(with-current-buffer (window-buffer window)
(if (eq (current-buffer) (window-buffer (selected-window)))
(face-remap-reset-base 'mode-line-indicator)
(face-remap-set-base 'mode-line-indicator (face-all-attributes 'mode-line-inactive-indicator)))))
(add-hook 'buffer-list-update-hook (lambda () (walk-windows #'mode-line-update-face nil t)))
(defvar wilder-buffer-vc-mode-line (defvar wilder-buffer-vc-mode-line
'("%b" (vc-mode (:propertize '("%b" (vc-mode (:propertize
;; Strip the backend name from the VC status information ;; Strip the backend name from the VC status information
@ -412,18 +425,14 @@
(put 'wilder-position 'risky-local-variable t) (put 'wilder-position 'risky-local-variable t)
(defvar wilder/mode-line-modes (defvar wilder/mode-line-modes
(let ((recursive-edit-help-echo "Recursive edit, type C-M-c to get out")) (list "%["
(list (propertize "%[" 'help-echo recursive-edit-help-echo)
'("" mode-name) '("" mode-name)
'("" mode-line-process) '("" mode-line-process)
" " " "
'("" minor-mode-alist) '("" minor-mode-alist)
(propertize "%n" 'help-echo "mouse-2: Remove narrowing from buffer" "%n"
'mouse-face 'mode-line-highlight "%]"
'local-map (make-mode-line-mouse-map " ")
'mouse-2 #'mode-line-widen))
(propertize "%]" 'help-echo recursive-edit-help-echo)
" "))
"Mode line construct for displaying major and minor modes.") "Mode line construct for displaying major and minor modes.")
(put 'wilder/mode-line-modes 'risky-local-variable t) (put 'wilder/mode-line-modes 'risky-local-variable t)
@ -438,7 +447,7 @@
(setq mode-line-format-left (setq mode-line-format-left
'("%e" '("%e"
(:propertize "╺═╸" face mode-line-indicator) (:eval (propertize "╺═╸" 'face (if (cogent-line-selected-window-active-p) 'mode-line-indicator 'mode-line-inactive-indicator)))
mode-line-front-space mode-line-front-space
mode-line-modified mode-line-modified
mode-line-remote mode-line-remote

Loading…
Cancel
Save