From b52818be56638f42ceed86a9209b1bfeb7034032 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 7 May 2026 01:12:55 -0400 Subject: [PATCH] refactor: modules: drop Emacs 28 support (part 2) Removing 27-28 compatibility code from modules, since 28.x support was dropped in 9fbae87. Ref: 9fbae872c57e --- modules/completion/corfu/config.el | 5 --- modules/config/default/+emacs-bindings.el | 3 +- modules/config/default/+evil-bindings.el | 3 +- modules/editor/evil/config.el | 2 +- modules/emacs/undo/config.el | 1 - modules/emacs/undo/packages.el | 3 +- modules/lang/ess/config.el | 12 ------ modules/lang/ess/packages.el | 4 -- modules/lang/scheme/packages.el | 5 --- modules/term/eshell/config.el | 46 +---------------------- modules/tools/docker/packages.el | 3 -- modules/ui/ligatures/config.el | 6 +-- modules/ui/ligatures/doctor.el | 7 +--- 13 files changed, 8 insertions(+), 92 deletions(-) diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el index f5f65d7d7..ffe1db176 100644 --- a/modules/completion/corfu/config.el +++ b/modules/completion/corfu/config.el @@ -210,11 +210,6 @@ See `+corfu-want-minibuffer-completion'." (advice-add #'comint-completion-at-point :around #'cape-wrap-nonexclusive) (advice-add #'eglot-completion-at-point :around #'cape-wrap-nonexclusive) (advice-add #'pcomplete-completions-at-point :around #'cape-wrap-nonexclusive) - ;; From the `cape' readme. Without this, Eshell autocompletion is broken on - ;; Emacs28. - (when (< emacs-major-version 29) - (advice-add #'pcomplete-completions-at-point :around #'cape-wrap-silent) - (advice-add #'pcomplete-completions-at-point :around #'cape-wrap-purify)) (when (modulep! :lang latex) ;; Allow file completion on latex directives. diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index fa93d895f..f848546ef 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -148,8 +148,7 @@ ;;; i --- insert (:prefix-map ("i" . "insert") - (:when (> emacs-major-version 28) - :desc "Emoji" "e" #'emoji-search) + :desc "Emoji" "e" #'emoji-search (:when (modulep! :ui emoji) :desc "Emoji" "e" #'emojify-insert-emoji) :desc "Current file name" "f" #'+default/insert-file-path diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 769b747e2..bfd19370a 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -580,8 +580,7 @@ ;;; i --- insert (:prefix-map ("i" . "insert") - (:when (> emacs-major-version 28) - :desc "Emoji" "e" #'emoji-search) + :desc "Emoji" "e" #'emoji-search (:when (modulep! :ui emoji) :desc "Emoji" "e" #'emojify-insert-emoji) :desc "Current file name" "f" #'+default/insert-file-path diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index c572ac057..dc05f5e4e 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -59,7 +59,7 @@ directives. By default, this only recognizes C directives." evil-undo-system (cond ((modulep! :emacs undo +tree) 'undo-tree) ((modulep! :emacs undo) 'undo-fu) - ((> emacs-major-version 27) 'undo-redo))) + ('undo-redo))) ;; Fix #7141 (defadvice! +evil--persist-state-a (fn &rest args) diff --git a/modules/emacs/undo/config.el b/modules/emacs/undo/config.el index a87a6da27..0d6954c2a 100644 --- a/modules/emacs/undo/config.el +++ b/modules/emacs/undo/config.el @@ -50,7 +50,6 @@ (use-package! vundo :unless (modulep! +tree) - :when (> emacs-major-version 27) :defer t :config (setq vundo-glyph-alist vundo-unicode-symbols diff --git a/modules/emacs/undo/packages.el b/modules/emacs/undo/packages.el index bddd49ee7..96cbb9db6 100644 --- a/modules/emacs/undo/packages.el +++ b/modules/emacs/undo/packages.el @@ -9,5 +9,4 @@ (package! undo-fu-session :recipe (:host github :repo "emacsmirror/undo-fu-session") :pin "92d733a5b162a70c572fac17b9f9e872426df547") - (when (> emacs-major-version 27) ; unsupported in 27 - (package! vundo :pin "288d1b06ea9283852640bb49532e57ae0515492f"))) + (package! vundo :pin "288d1b06ea9283852640bb49532e57ae0515492f")) diff --git a/modules/lang/ess/config.el b/modules/lang/ess/config.el index 87341b056..5f067b533 100644 --- a/modules/lang/ess/config.el +++ b/modules/lang/ess/config.el @@ -118,15 +118,3 @@ (use-package! quarto-mode :mode (("\\.[qQ][mM][dD]" . poly-quarto-mode))) - - -;; See emacs-ess/ESS#1193 -(use-package! xterm-color - :when (< emacs-major-version 29) - :defer t - :init - (add-hook! 'inferior-ess-mode-hook - (setq-local ansi-color-for-comint-mode nil) - (add-hook 'comint-preoutput-filter-functions #'xterm-color-filter nil t)) - :config - (setq xterm-color-use-bold t)) diff --git a/modules/lang/ess/packages.el b/modules/lang/ess/packages.el index 3b922f19c..921593eae 100644 --- a/modules/lang/ess/packages.el +++ b/modules/lang/ess/packages.el @@ -16,7 +16,3 @@ (package! company-stan :pin "2bfd1484e1a99f9971b1a8aa1b587cdca411ab55")) (when (modulep! :checkers syntax -flymake) (package! flycheck-stan :pin "2bfd1484e1a99f9971b1a8aa1b587cdca411ab55"))) - -(when (< emacs-major-version 29) - ;; See emacs-ess/ESS#1193 - (package! xterm-color :pin "86fab1d247eb5ebe6b40fa5073a70dfa487cd465")) diff --git a/modules/lang/scheme/packages.el b/modules/lang/scheme/packages.el index e5d0715f0..b45255c15 100644 --- a/modules/lang/scheme/packages.el +++ b/modules/lang/scheme/packages.el @@ -1,11 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/scheme/packages.el -(when (< emacs-major-version 29) - (package! scheme - :recipe (:host gitlab :repo "flatwhatson/scheme-mode") - :pin "a713b253d2ff5bbaeef400a7d495f7dfe918a641")) - (when (package! geiser :pin "06c3db4a053331e3d1fb8642a49c7a9b810cf5cb") (package! macrostep-geiser :pin "f6a2d5bb96ade4f23df557649af87ebd0cc45125") (when (modulep! +chez) diff --git a/modules/term/eshell/config.el b/modules/term/eshell/config.el index 976a2d0fc..db1a0d38a 100644 --- a/modules/term/eshell/config.el +++ b/modules/term/eshell/config.el @@ -153,51 +153,7 @@ You should use `set-eshell-alias!' to change this.") (setq +eshell--default-aliases eshell-command-aliases-list eshell-command-aliases-list (append eshell-command-aliases-list - +eshell-aliases))) - - ;; HACK: Fixes #3817, where eshell completion after quotes is broken on Emacs - ;; 28 and older. - ;; CREDIT: Extracted from `cape''s cape-wrap-silent and cape-wrap-purify. - ;; REVIEW: Remove when Doom drops 28 support. - (when (< emacs-major-version 29) - (defadvice! +eshell--silent-a (capf) - "Call CAPF and silence it (no messages, no errors). -This function can be used as an advice around an existing Capf." - :around #'pcomplete-completions-at-point - (letf! ((defmacro silent (&rest body) `(quiet! (ignore-errors ,@body))) - (defmacro wrapped-table (wrap body) - `(lambda (str pred action) - (,@body - (let ((result (complete-with-action action table str pred))) - (when - (and (eq action 'completion--unquote) - (functionp (cadr result))) - (cl-callf ,wrap (cadr result))) - result)))) - (defun* silent-table (table) (wrapped-table silent-table (silent)))) - (pcase (silent (funcall capf)) - (`(,beg ,end ,table . ,plist) - `(,beg ,end ,(silent-table table) ,@plist))))) - - (defadvice! +eshell--purify-a (capf) - "Call CAPF and ensure that it does not illegally modify the buffer. This -function can be used as an advice around an existing Capf. It has been -introduced mainly to fix the broken `pcomplete-completions-at-point' function in -Emacs versions < 29." - ;; bug#50470: Fix Capfs which illegally modify the buffer or which - ;; illegally call `completion-in-region'. The workaround here was proposed - ;; by @jakanakaevangeli and is used in his capf-autosuggest package. - :around #'pcomplete-completions-at-point - (catch 'illegal-completion-in-region - (condition-case nil - (let ((buffer-read-only t) - (inhibit-read-only nil) - (completion-in-region-function - (lambda (beg end coll pred) - (throw 'illegal-completion-in-region - (list beg end coll :predicate pred))))) - (funcall capf)) - (buffer-read-only nil)))))) + +eshell-aliases)))) (after! esh-mode diff --git a/modules/tools/docker/packages.el b/modules/tools/docker/packages.el index a830da235..d367c8993 100644 --- a/modules/tools/docker/packages.el +++ b/modules/tools/docker/packages.el @@ -2,7 +2,4 @@ ;;; tools/docker/packages.el (package! docker :pin "916686b86e83a3bd2281fbc5e6f98962aa747429") -;; tramp-container (included with Emacs 29+) replaces docker-tramp -(when (< emacs-major-version 29) - (package! docker-tramp :pin "19d0771db4e6b89e19c00af5806438e315779c15")) (package! dockerfile-mode :pin "97733ce074b1252c1270fd5e8a53d178b66668ed") diff --git a/modules/ui/ligatures/config.el b/modules/ui/ligatures/config.el index 994f62fca..c8789bdc3 100644 --- a/modules/ui/ligatures/config.el +++ b/modules/ui/ligatures/config.el @@ -144,11 +144,7 @@ isn't disabled in `+ligatures-extras-in-modes'." (fboundp 'mac-auto-operator-composition-mode)) (add-hook 'doom-init-ui-hook #'mac-auto-operator-composition-mode 'append)) - ;; This module does not support Emacs 27 and less, but if we still try to - ;; enable ligatures, it will end up in catastrophic work-loss errors, so we - ;; leave the check here for safety. - ((and (> emacs-major-version 27) - (or (featurep 'ns) + ((and (or (featurep 'ns) (string-match-p "HARFBUZZ" system-configuration-features)) (featurep 'composite)) ; Emacs loads `composite' at startup diff --git a/modules/ui/ligatures/doctor.el b/modules/ui/ligatures/doctor.el index 1b1534f67..4c80a89bd 100644 --- a/modules/ui/ligatures/doctor.el +++ b/modules/ui/ligatures/doctor.el @@ -5,12 +5,9 @@ (fboundp 'mac-auto-operator-composition-mode)) (ignore)) - ((and (> emacs-major-version 27) - (or (featurep 'ns) + ((and (or (featurep 'ns) (string-match-p "HARFBUZZ" system-configuration-features)) (featurep 'composite)) ; Emacs loads `composite' at startup (ignore)) - ((if (featurep :system 'macos) - (warn! "The (:ui ligatures) module does not support your version of Emacs. Install emacs-plus with at least Emacs 28, or emacs-mac.") - (warn! "The (:ui ligatures) module does not support your version of Emacs. Make sure to have at least Emacs 28 with Harfbuzz configured (should be the default).")))) + ((error! "Emacs was not built with Harfbuzz; ligatures won't work!")))