Change mode-line and tab-bar
This commit is contained in:
parent
eb40045abd
commit
3379638199
52
init.el
52
init.el
|
@ -1278,27 +1278,32 @@ See also `crux-reopen-as-root-mode'."
|
|||
(setup (:straight (simple-modeline
|
||||
:fork (:host github :repo "duckwork/simple-modeline")))
|
||||
(:require +modeline)
|
||||
(:option simple-modeline-segments `((;; left
|
||||
+modeline-ace-window-display
|
||||
+modeline-modified
|
||||
,(+modeline-concat
|
||||
'(+modeline-god-mode
|
||||
+modeline-reading-mode
|
||||
+modeline-narrowed)
|
||||
",")
|
||||
+modeline-buffer-name
|
||||
+modeline-position
|
||||
+modeline-anzu
|
||||
)
|
||||
(;; right
|
||||
+modeline-track
|
||||
+modeline-vc
|
||||
simple-modeline-segment-misc-info
|
||||
simple-modeline-segment-process
|
||||
+modeline-text-scale
|
||||
+modeline-minions
|
||||
+modeline-major-mode
|
||||
)))
|
||||
(:option simple-modeline-segments
|
||||
`(( ; left
|
||||
+modeline-ace-window-display
|
||||
+modeline-modified
|
||||
+modeline-buffer-name
|
||||
(lambda () (+modeline-vc ": "))
|
||||
,(+modeline-concat
|
||||
'(+modeline-minions
|
||||
+modeline-major-mode))
|
||||
+modeline-anzu
|
||||
)
|
||||
( ; right
|
||||
(lambda ()
|
||||
(unless +tab-bar-misc-info-mode
|
||||
(+modeline-concat
|
||||
'(+modeline-track
|
||||
simple-modeline-segment-misc-info))))
|
||||
|
||||
simple-modeline-segment-process
|
||||
+modeline-text-scale
|
||||
,(+modeline-concat
|
||||
'(+modeline-god-mode
|
||||
+modeline-reading-mode
|
||||
+modeline-narrowed)
|
||||
",")
|
||||
+modeline-position)))
|
||||
(simple-modeline-mode +1))
|
||||
|
||||
(setup (:straight smartscan)
|
||||
|
@ -1469,3 +1474,8 @@ See also `crux-reopen-as-root-mode'."
|
|||
(:require +zzz-to-char)
|
||||
(:option zzz-to-char-reach 1024)
|
||||
(:global "M-z" #'+zzz-to-char))
|
||||
|
||||
(setup tab-bar
|
||||
(:require +tab-bar)
|
||||
(tab-bar-mode +1)
|
||||
(+tab-bar-misc-info-mode +1))
|
||||
|
|
|
@ -88,7 +88,7 @@ This function makes a lambda, so you can throw it straight into
|
|||
(defun +modeline-major-mode (&optional spacer)
|
||||
"Display the current `major-mode'."
|
||||
(concat (or spacer +modeline-default-spacer)
|
||||
(propertize (+string-truncate (format-mode-line mode-name) 12)
|
||||
(propertize (+string-truncate (format-mode-line mode-name) 16)
|
||||
'face 'bold
|
||||
'keymap mode-line-major-mode-keymap
|
||||
'help-echo (concat (format-mode-line mode-name)
|
||||
|
@ -185,27 +185,30 @@ The order of elements matters: whichever one matches first is applied."
|
|||
|
||||
(defun +modeline-position (&optional _) ; adapted from `simple-modeline'
|
||||
"Display the current cursor position."
|
||||
(list '((line-number-mode
|
||||
((column-number-mode
|
||||
(column-number-indicator-zero-based
|
||||
(9 " %l:%c")
|
||||
(9 " %l:%C"))
|
||||
(6 " %l:")))
|
||||
((column-number-mode
|
||||
(column-number-indicator-zero-based
|
||||
(5 " :%c")
|
||||
(5 " :%C"))))))
|
||||
'(file-percentage-mode
|
||||
((-3 "%p") "%% "))
|
||||
(if (region-active-p)
|
||||
(propertize (format "%s%-5d"
|
||||
(if (and (mark) (< (point) (mark))) "-" "+")
|
||||
(apply '+ (mapcar
|
||||
(lambda (pos)
|
||||
(- (cdr pos)
|
||||
(car pos)))
|
||||
(region-bounds))))
|
||||
'font-lock-face 'font-lock-variable-name-face))))
|
||||
(let ((sep "|") (before " [") (after "]"))
|
||||
(list `(:propertize (line-number-mode
|
||||
((column-number-mode
|
||||
(column-number-indicator-zero-based
|
||||
,(concat before "%l" sep "%c" after)
|
||||
,(concat before "%l" sep "%C" after))
|
||||
,(concat before "%l" sep "" after)))
|
||||
((column-number-mode
|
||||
(column-number-indicator-zero-based
|
||||
,(concat before sep "%c" after)
|
||||
,(concat before sep "%C" after)))))
|
||||
font-lock-face font-lock-comment-face)
|
||||
(if (region-active-p)
|
||||
(propertize (format "%s%-5d"
|
||||
(if (and (mark) (< (point) (mark))) "-" "+")
|
||||
(apply '+ (mapcar
|
||||
(lambda (pos)
|
||||
(- (cdr pos)
|
||||
(car pos)))
|
||||
(region-bounds))))
|
||||
'font-lock-face 'font-lock-variable-name-face))
|
||||
'(:propertize (file-percentage-mode
|
||||
(" " (-3 "%p") "%%"))
|
||||
font-lock-face font-lock-comment-face))))
|
||||
|
||||
(defun +modeline-vc (&optional spacer)
|
||||
"Display the version control branch of the current buffer in the modeline."
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
;;; +tab-bar.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Emacs 28 comes with an easy-to-use `tab-bar-format' option, but I still use
|
||||
;; Emacs 27 on my Windows machine. Thus, the code in this file.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'tab-bar)
|
||||
|
||||
|
||||
;; Common
|
||||
|
||||
(defun +tab-bar-misc-info ()
|
||||
"Display `mode-line-misc-info', formatted for the tab-bar."
|
||||
`((global menu-item ,(string-trim-right
|
||||
(format-mode-line mode-line-misc-info))
|
||||
ignore)))
|
||||
|
||||
(defvar +tab-bar-show-original nil
|
||||
"Original value of `tab-bar-show'.")
|
||||
|
||||
|
||||
;; Emacs 27
|
||||
|
||||
(defun +tab-bar-misc-info-27 (output &rest _)
|
||||
"Display `mode-line-misc-info' in the `tab-bar' on Emacs 27.
|
||||
This is :filter-return advice for `tab-bar-make-keymap-1'."
|
||||
(let* ((reserve (length (format-mode-line mode-line-misc-info)))
|
||||
(str (propertize " "
|
||||
'display `(space :align-to (- right (- 0 right-margin)
|
||||
,reserve)))))
|
||||
(prog1 (append output
|
||||
`((align-right menu-item ,str nil))
|
||||
(+tab-bar-misc-info)))))
|
||||
|
||||
|
||||
;; Emacs 28
|
||||
|
||||
(defvar +tab-bar-format-original nil
|
||||
"Original value of `tab-bar-format'.")
|
||||
|
||||
(defun +tab-bar-misc-info-28 ()
|
||||
"Display `mode-line-misc-info', right-aligned, on Emacs 28."
|
||||
(append (unless (memq 'tab-bar-format-align-right tab-bar-format)
|
||||
'(tab-bar-format-align-right))
|
||||
'(+tab-bar-misc-info)))
|
||||
|
||||
|
||||
|
||||
(define-minor-mode +tab-bar-misc-info-mode
|
||||
"Show the `mode-line-misc-info' in the `tab-bar'."
|
||||
:lighter ""
|
||||
:global t
|
||||
(if +tab-bar-misc-info-mode
|
||||
(progn ; Enable
|
||||
(setq +tab-bar-show-original tab-bar-show)
|
||||
(cond
|
||||
((boundp 'tab-bar-format) ; Emacs 28
|
||||
(setq +tab-bar-format-original tab-bar-format)
|
||||
(unless (memq '+tab-bar-misc-info tab-bar-format)
|
||||
(setq tab-bar-format
|
||||
(append tab-bar-format (+tab-bar-misc-info-28)))))
|
||||
((fboundp 'tab-bar-make-keymap-1) ; Emacs 27
|
||||
(advice-add 'tab-bar-make-keymap-1 :filter-return
|
||||
'+tab-bar-misc-info-27)))
|
||||
(setq tab-bar-show t))
|
||||
(progn ; Disable
|
||||
(setq tab-bar-show +tab-bar-show-original)
|
||||
(cond
|
||||
((boundp 'tab-bar-format) ; Emacs 28
|
||||
(setq tab-bar-format +tab-bar-format-original))
|
||||
((fboundp 'tab-bar-make-keymap-1) ; Emacs 27
|
||||
(advice-remove 'tab-bar-make-keymap-1 '+tab-bar-misc-info-27))))))
|
||||
|
||||
|
||||
|
||||
(provide '+tab-bar)
|
||||
;;; +tab-bar.el ends here
|
Loading…
Reference in New Issue