mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-02 14:53:38 -05:00
fix(lib): major-mode-remap backport for Emacs <30 users
`major-mode-remap`, `major-mode-remap-alist`, and
`major-mode-remap-defaults` were not backported correctly for Emacs 29,
28, and 27 users.
Amend: da08aa2d7d
This commit is contained in:
@@ -109,23 +109,6 @@ and return the value found in PLACE instead."
|
||||
(unless (fboundp 'pos-bol) (defalias 'pos-bol #'line-beginning-position))
|
||||
(unless (fboundp 'pos-eol) (defalias 'pos-eol #'line-end-position))
|
||||
|
||||
;; Introduced in 29.1
|
||||
(unless (boundp 'major-mode-remap-alist)
|
||||
(defvar major-mode-remap-alist nil)
|
||||
(defvar-local set-auto-mode--last nil)
|
||||
(define-advice set-auto-mode-0 (:override (mode &optional keep-mode-if-same) backport-major-mode-remap)
|
||||
(unless (and keep-mode-if-same
|
||||
(or (eq (indirect-function mode)
|
||||
(indirect-function major-mode))
|
||||
(and set-auto-mode--last
|
||||
(eq mode (car set-auto-mode--last))
|
||||
(eq major-mode (cdr set-auto-mode--last)))))
|
||||
(when mode
|
||||
(funcall (major-mode-remap mode))
|
||||
(unless (eq mode major-mode)
|
||||
(setq set-auto-mode--last (cons mode major-mode)))
|
||||
mode))))
|
||||
|
||||
;; Introduced in 29.1
|
||||
(unless (boundp 'enable-theme-functions)
|
||||
(defcustom enable-theme-functions nil
|
||||
@@ -153,12 +136,26 @@ The functions in the hook are called with one parameter -- the
|
||||
;;; From Emacs >= 30
|
||||
;; Introduced in 30.1
|
||||
(unless (fboundp 'major-mode-remap)
|
||||
(defvar major-mode-remap-alist nil) ; introduced in 29.1
|
||||
(defvar major-mode-remap-defaults nil)
|
||||
(defun major-mode-remap (mode)
|
||||
"Return the function to use to enable MODE."
|
||||
(or (cdr (or (assq mode major-mode-remap-alist)
|
||||
(assq mode major-mode-remap-defaults)))
|
||||
mode)))
|
||||
mode))
|
||||
(defvar-local set-auto-mode--last nil)
|
||||
(define-advice set-auto-mode-0 (:override (mode &optional keep-mode-if-same) backport-major-mode-remap)
|
||||
(unless (and keep-mode-if-same
|
||||
(or (eq (indirect-function mode)
|
||||
(indirect-function major-mode))
|
||||
(and set-auto-mode--last
|
||||
(eq mode (car set-auto-mode--last))
|
||||
(eq major-mode (cdr set-auto-mode--last)))))
|
||||
(when mode
|
||||
(funcall (major-mode-remap mode))
|
||||
(unless (eq mode major-mode)
|
||||
(setq set-auto-mode--last (cons mode major-mode)))
|
||||
mode))))
|
||||
|
||||
;; Introduced in 30.1
|
||||
(unless (boundp 'safe-local-variable-directories)
|
||||
|
Reference in New Issue
Block a user