From d39ec50bb717b3aad20c3c9eca3d13460a124759 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 28 Oct 2022 02:47:02 +0200 Subject: [PATCH] fix(emacs-lisp): backport mode-name from 28+ In Emacs 28+, the mode-name in emacs-lisp-mode is "ELisp/X" (where X = d or l depending on lexical-binding). I find this much more useful than "Emacs-Lisp" in <=27.x or our static replacement "Elisp". --- modules/lang/emacs-lisp/config.el | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index d6798ddc0..eece0fd9b 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -56,13 +56,25 @@ See `+emacs-lisp-non-package-mode' for details.") ;; unreadable. Since Emacs' lisp indenter doesn't respect this variable it's ;; safe to ignore this setting otherwise. tab-width 8 - ;; shorter name in modeline - mode-name "Elisp" ;; Don't treat autoloads or sexp openers as outline headers, we have ;; hideshow for that. outline-regexp +emacs-lisp-outline-regexp outline-level #'+emacs-lisp-outline-level) + ;; DEPRECATED: Remove when 27.x support is dropped. + (when (< emacs-major-version 28) + ;; As of Emacs 28+, `emacs-lisp-mode' uses a shorter label in the mode-line + ;; ("ELisp/X", where X = l or d, depending on `lexical-binding'). In <=27, + ;; it uses "Emacs-Lisp". The former is more useful, so I backport it: + (setq-hook! 'emacs-lisp-mode-hook + mode-name `("ELisp" + (lexical-binding (:propertize "/l" + help-echo "Using lexical-binding mode") + (:propertize "/d" + help-echo "Using old dynamic scoping mode" + face warning + mouse-face mode-line-highlight))))) + ;; Fixed indenter that intends plists sensibly. (advice-add #'calculate-lisp-indent :override #'+emacs-lisp--calculate-lisp-indent-a)