From a4b69001c6281c52e1db0ec85aa4509cafb705f2 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Tue, 16 May 2023 19:50:13 +0200 Subject: [PATCH] experimented with aligned modelines (failed so far, disabled) --- lisp/init-modeline.el | 69 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/lisp/init-modeline.el b/lisp/init-modeline.el index be2a35c..5952f0b 100644 --- a/lisp/init-modeline.el +++ b/lisp/init-modeline.el @@ -35,7 +35,7 @@ " [" tvd-emacs-version "] " - ; added because of eyebrowse + ; added because of eyebrowse mode-line-misc-info '(:eval (propertize @@ -46,6 +46,73 @@ mode-line-end-spaces)) +(when nil + ;; from https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-02/msg00885.html + ;; compiles but doesn't work + (defvar ml-text-scale-factor 1.0 + "Ratio of mode-line text size to default text size, as a float. +This is needed to make sure the text is properly aligned.") + + (defun ml-fill-to-center (reserve face) + "Return empty space to the center, leaving RESERVE space on the right." + (setq reserve (* ml-text-scale-factor reserve)) + (propertize " " + 'display `((space :align-to (- (+ center (.5 . right-margin)) + ,reserve + (.5 . left-margin)))) + 'face face)) + + (defun ml-fill-to-right (reserve face) + "Return empty space, leaving RESERVE space on the right." + (setq reserve (* ml-text-scale-factor reserve)) + (when (and window-system (eq 'right (get-scroll-bar-mode))) + (setq reserve (- reserve 2))) ; May be 3 instead of 2 with some toolkits? + (propertize " " + 'display `((space :align-to (- (+ right right-fringe right-margin) + ,reserve))) + 'face face)) + + (defun ml-render-2-part (left right &optional fill-face) + "Show a modeline with left and right aligned parts." + (concat left + (ml-fill-to-right (string-width (format-mode-line right)) fill-face) + right)) + + (setq mode-line-align-right + '( + " [" tvd-emacs-version "] " + + ;; added because of eyebrowse + mode-line-misc-info + + '(:eval (propertize + (if (eq defining-kbd-macro t) + "[REC]" + "") + 'face 'rec-face)) + + mode-line-end-spaces)) + + (setq mode-line-align-left + '( + "%e" + mode-line-front-space + mode-line-mule-info + mode-line-modified + mode-line-remote + " " + mode-line-buffer-identification + " " + mode-line-position + " (%m) ")) + + (setq-default mode-line-format + '((:eval + (ml-render-2-part + mode-line-align-left + mode-line-align-right))))) + + (provide 'init-modeline) ;;; init-modeline.el ends here