branch: externals/auctex commit 997bff87d2d3e5a2162978f424ef6629335cc985 Author: Ikumi Keita <ik...@ikumi.que.jp> Commit: Ikumi Keita <ik...@ikumi.que.jp>
Retain compatibility for directory local variables Incorporate new facility implemented in Emacs 30. * tex.el (TeX-derived-mode-add-parents): Copy of new function in Emacs 30. (TeX--compat-derived-mode-p): New function to complement `derived-mode-p' before Emacs 30. * context.el: * latex.el: * plain-tex.el: * tex-jp.el: Use `TeX-derived-mode-add-parents'. --- context.el | 5 +++++ latex.el | 10 ++++++++++ plain-tex.el | 11 +++++++++++ tex-jp.el | 12 ++++++++++++ tex.el | 25 +++++++++++++++++++++++++ 5 files changed, 63 insertions(+) diff --git a/context.el b/context.el index df3ed2b953..fe1e02c146 100644 --- a/context.el +++ b/context.el @@ -1956,6 +1956,11 @@ of `ConTeXt-mode-hook'." ;; set mode line (setq TeX-base-mode-name mode-name)) +;; Compatibility for former mode name. Directory local variables +;; prepared for `context-mode' continue to be valid for +;; `ConTeXt-mode'. +(TeX-derived-mode-add-parents 'ConTeXt-mode '(context-mode)) + (provide 'context) ;;; context.el ends here diff --git a/latex.el b/latex.el index e9b08cc1b8..92ecdac2e8 100644 --- a/latex.el +++ b/latex.el @@ -8087,6 +8087,10 @@ Run after mode hooks and file local variables application." ;;;###autoload (put 'LaTeX-mode 'auctex-function-definition (symbol-function 'LaTeX-mode)) +;; Compatibility for former mode name. Directory local variables +;; prepared for `latex-mode' continue to be valid for `LaTeX-mode'. +(TeX-derived-mode-add-parents 'LaTeX-mode '(latex-mode)) + (with-eval-after-load 'semantic/symref/grep (push '(docTeX-mode "*.dtx") semantic-symref-filepattern-alist)) @@ -8118,6 +8122,12 @@ runs the hooks in `docTeX-mode-hook'." (setq font-lock-set-defaults nil) (funcall TeX-install-font-lock)) +;; Compatibility for former mode name. Directory local variables +;; prepared for `doctex-mode' continue to be valid for `docTeX-mode'. +;; In addition, dir local vars for `latex-mode' are now valid for +;; `docTeX-mode' as well. +(TeX-derived-mode-add-parents 'docTeX-mode '(doctex-mode latex-mode)) + (defcustom docTeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes "List of regexps matching suffixes of files to be deleted. diff --git a/plain-tex.el b/plain-tex.el index 6e4ddf7c03..779c30a0d9 100644 --- a/plain-tex.el +++ b/plain-tex.el @@ -148,6 +148,11 @@ Run after mode hooks and file local variables application." ;;;###autoload (put 'plain-TeX-mode 'auctex-function-definition (symbol-function 'plain-TeX-mode)) +;; Compatibility for former mode name. Directory local variables +;; prepared for `plain-tex-mode' continue to be valid for +;; `plain-TeX-mode'. +(TeX-derived-mode-add-parents 'plain-TeX-mode '(plain-tex-mode)) + (defun plain-TeX-common-initialization () "Common initialization for plain TeX like modes." (set (make-local-variable 'TeX-style-hook-dialect) plain-TeX-dialect) @@ -321,6 +326,12 @@ value of `AmSTeX-mode-hook'." ;;;###autoload (defalias 'ams-tex-mode #'AmSTeX-mode) +;; Compatibility for former mode name. Directory local variables +;; prepared for `ams-tex-mode' continue to be valid for `AmSTeX-mode'. +;; In addition, dir local vars for `plain-tex-mode' are now valid for +;; `AmSTeX-mode' as well. +(TeX-derived-mode-add-parents 'AmSTeX-mode '(ams-tex-mode plain-tex-mode)) + (defcustom AmSTeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes "List of regexps matching suffixes of intermediate files to be deleted. diff --git a/tex-jp.el b/tex-jp.el index ff562e225c..a9de222622 100644 --- a/tex-jp.el +++ b/tex-jp.el @@ -425,6 +425,12 @@ Now `japanese-plain-tex-mode-initialization' is no-op. Don't use it.")) ;;;###autoload (defalias 'japanese-plain-tex-mode #'japanese-plain-TeX-mode) +;; Compatibility for former mode name. Directory local variables +;; prepared for `japanese-plain-tex-mode' and `plain-tex-mode' +;; continue to be valid for `japanese-plain-TeX-mode'. +(TeX-derived-mode-add-parents 'japanese-plain-TeX-mode + '(japanese-plain-tex-mode plain-tex-mode)) + ;;;###autoload (define-derived-mode japanese-LaTeX-mode LaTeX-mode "LaTeX" "Major mode in AUCTeX for editing Japanese LaTeX files." @@ -471,6 +477,12 @@ Now `japanese-latex-mode-initialization' is no-op. Don't use it.")) ;;;###autoload (defalias 'japanese-latex-mode #'japanese-LaTeX-mode) +;; Compatibility for former mode name. Directory local variables +;; prepared for `japanese-latex-mode' and `latex-mode' continue to be +;; valid for `japanese-LaTeX-mode'. +(TeX-derived-mode-add-parents 'japanese-LaTeX-mode + '(japanese-latex-mode latex-mode)) + (defun japanese-LaTeX-guess-engine () "Guess Japanese TeX engine and set it to `TeX-engine'. Document class and its option are taken into account. Do not diff --git a/tex.el b/tex.el index d4fded7323..10bdf838ff 100644 --- a/tex.el +++ b/tex.el @@ -3875,6 +3875,21 @@ Run after mode hooks and file local variables application." ;;;###autoload (put 'TeX-mode 'auctex-function-definition (symbol-function 'TeX-mode)) +;; COMPATIBILITY for Emacs<30 +(unless (fboundp 'derived-mode-add-parents) + (advice-add 'derived-mode-p :after-until + ;; Don't quote by #'-style to avoid compiler warning. + 'TeX--compat-derived-mode-p) + (defun TeX--compat-derived-mode-p (&rest modes) + "Add pseudo-parents facility to `derived-mode-p' like Emacs 30. +Modes registered in `derived-mode-extra-parents' property of the +current major mode name symbol are regarded as parent modes as +long as `derived-mode-p' is concerned." + (let ((extra-parents (get major-mode 'derived-mode-extra-parents))) + (and extra-parents + (cl-loop for parent in extra-parents + thereis (memq parent modes)))))) + ;;; Hilighting ;; FIXME: It's likely that `hilit-patterns-alist' is much obsolete. @@ -4828,6 +4843,16 @@ Also see `ignore'. This is a compatibility function for Emacs versions prior to v.28." t)) +;; COMPATIBILITY for Emacs<30 +(if (fboundp 'derived-mode-add-parents) + (defalias 'TeX-derived-mode-add-parents #'derived-mode-add-parents) + ;; Adapted copy of `derived-mode-add-parents'. + (defun TeX-derived-mode-add-parents (mode extra-parents) + "Add EXTRA-PARENTS to the parents of MODE. +Declares the parents of MODE to be its main parent (as defined +in `define-derived-mode') plus EXTRA-PARENTS." + (put mode 'derived-mode-extra-parents extra-parents))) + (defun TeX-match-buffer (n) "Return the substring corresponding to the N'th match. See `match-data' for details."