[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/fix-mode-names-overlap f41fbc0e 1/2: Improve mode cleanup functi
From: |
Ikumi Keita |
Subject: |
feature/fix-mode-names-overlap f41fbc0e 1/2: Improve mode cleanup functions |
Date: |
Thu, 21 Sep 2023 10:03:56 -0400 (EDT) |
branch: feature/fix-mode-names-overlap
commit f41fbc0eac09b1d1306124333bec7b88b9f55001
Author: Ikumi Keita <ikumi@ikumi.que.jp>
Commit: Ikumi Keita <ikumi@ikumi.que.jp>
Improve mode cleanup functions
* tex.el (TeX-mode, TeX-mode-cleanup): Set `TeX-complete-list' in
`TeX-mode-cleanup' so that buffer local value of `TeX-insert-braces'
and `TeX-complete-word' are used.
* latex.el (LaTeX-mode-cleanup, LaTeX-common-initialization): Set
`TeX-complete-list' in `LaTeX-mode-cleanup' in accord with the above
change.
(LaTeX-indent-commands-regexp-make): Fix doc string.
* plain-tex.el (plain-TeX-mode-cleanup): New function.
(plain-TeX-mode): Move tool bar related code into
`plain-TeX-mode-cleanup'.
* tex.el (TeX-mode-cleanup):
* latex.el (LaTeX-mode-cleanup):
* context.el (ConTeXt-mode-cleanup):
* tex-info.el (Texinfo-mode-cleanup):
Supply doc string.
; * context.el (ConTeXt-mode-common-initialization): Delete spurious code.
---
context.el | 3 ++-
latex.el | 66 +++++++++++++++++++++++++++++++-----------------------------
plain-tex.el | 21 ++++++++++---------
tex-info.el | 2 ++
tex.el | 41 ++++++++++++++++++++-----------------
5 files changed, 72 insertions(+), 61 deletions(-)
diff --git a/context.el b/context.el
index 237ba326..df3ed2b9 100644
--- a/context.el
+++ b/context.el
@@ -1824,7 +1824,6 @@ that is, you do _not_ have to cater for this yourself by
adding \\\\\\=' or $."
(defun ConTeXt-mode-common-initialization ()
"Initialization code that is common for all ConTeXt interfaces."
(plain-TeX-common-initialization)
- (setq major-mode 'ConTeXt-mode)
(set (make-local-variable 'TeX-style-hook-dialect) ConTeXt-dialect)
@@ -1896,6 +1895,8 @@ that is, you do _not_ have to cater for this yourself by
adding \\\\\\=' or $."
(setq TeX-sentinel-default-function #'TeX-ConTeXt-sentinel))
(defun ConTeXt-mode-cleanup ()
+ "Cleanup function for `ConTeXt-mode'.
+Run after mode hooks and file local variables application."
;; Create certain regular expressions based on language.
;; Don't overwrite the value the user set by hooks or file
;; (directory) variables.
diff --git a/latex.el b/latex.el
index 0750d749..94878b5a 100644
--- a/latex.el
+++ b/latex.el
@@ -4145,7 +4145,7 @@ the regexp's which are stored in
`LaTeX-indent-mid-regexp-local' and
`LaTeX-indent-end-regexp-local' accordingly. Some standard
macros are added to the regexp's. This function is called in
-`LaTeX-common-initialization' to set the regexp's."
+`LaTeX-mode-cleanup' to set the regexp's."
(let* (cmds
symbs
(func (lambda (in regexp out)
@@ -8010,6 +8010,8 @@ of `LaTeX-mode-hook'."
(add-hook 'flymake-diagnostic-functions #'LaTeX-flymake nil t))
(defun LaTeX-mode-cleanup ()
+ "Cleanup function for `LaTeX-mode'.
+Run after mode hooks and file local variables application."
;; Defeat filladapt
(if (bound-and-true-p filladapt-mode)
(turn-off-filladapt-mode))
@@ -8041,7 +8043,37 @@ of `LaTeX-mode-hook'."
;; who need per-file customization of
;; `LaTeX-indent-begin-regexp-local' etc. should set
;; `LaTeX-indent-begin-list' and so on instead.
- (LaTeX-indent-commands-regexp-make))
+ (LaTeX-indent-commands-regexp-make)
+
+ (setq TeX-complete-list
+ (append '(("\\\\cite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
+ 1 LaTeX-bibitem-list "}")
+ ("\\\\cite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}")
+ ("\\\\cite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
+ 2 LaTeX-bibitem-list)
+ ("\\\\nocite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}")
+ ("\\\\nocite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
+ 2 LaTeX-bibitem-list)
+ ("\\\\[Rr]ef{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
+ ("\\\\eqref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
+ ("\\\\pageref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
+ ("\\\\\\(index\\|glossary\\){\\([^{}\n\r\\%]*\\)"
+ 2 LaTeX-index-entry-list "}")
+ ("\\\\begin{\\([A-Za-z]*\\)" 1
LaTeX-environment-list-filtered "}")
+ ("\\\\end{\\([A-Za-z]*\\)" 1 LaTeX-environment-list-filtered
"}")
+ ("\\\\renewcommand\\*?{\\\\\\([A-Za-z]*\\)"
+ 1 TeX-symbol-list-filtered "}")
+ ("\\\\renewenvironment\\*?{\\([A-Za-z]*\\)"
+ 1 LaTeX-environment-list-filtered "}")
+ ("\\\\\\(this\\)?pagestyle{\\([A-Za-z]*\\)"
+ 2 LaTeX-pagestyle-list "}")
+ (LaTeX--after-math-macro-prefix-p
+ 1 (lambda ()
+ (seq-filter #'stringp
+ (append (mapcar #'cadr LaTeX-math-list)
+ (mapcar #'cadr
LaTeX-math-default))))
+ (if TeX-insert-braces "{}")))
+ TeX-complete-list)))
;; COMPATIBILITY for Emacs<29
;;;###autoload
@@ -8185,36 +8217,6 @@ function would return non-nil and `(match-string 1)'
would return
("tabular" . LaTeX-item-array)
("tabular*" .
LaTeX-item-tabular*)))
- (setq TeX-complete-list
- (append '(("\\\\cite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
- 1 LaTeX-bibitem-list "}")
- ("\\\\cite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}")
- ("\\\\cite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
- 2 LaTeX-bibitem-list)
- ("\\\\nocite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}")
- ("\\\\nocite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
- 2 LaTeX-bibitem-list)
- ("\\\\[Rr]ef{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
- ("\\\\eqref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
- ("\\\\pageref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")
- ("\\\\\\(index\\|glossary\\){\\([^{}\n\r\\%]*\\)"
- 2 LaTeX-index-entry-list "}")
- ("\\\\begin{\\([A-Za-z]*\\)" 1
LaTeX-environment-list-filtered "}")
- ("\\\\end{\\([A-Za-z]*\\)" 1 LaTeX-environment-list-filtered
"}")
- ("\\\\renewcommand\\*?{\\\\\\([A-Za-z]*\\)"
- 1 TeX-symbol-list-filtered "}")
- ("\\\\renewenvironment\\*?{\\([A-Za-z]*\\)"
- 1 LaTeX-environment-list-filtered "}")
- ("\\\\\\(this\\)?pagestyle{\\([A-Za-z]*\\)"
- 2 LaTeX-pagestyle-list "}")
- (LaTeX--after-math-macro-prefix-p
- 1 (lambda ()
- (seq-filter #'stringp
- (append (mapcar #'cadr LaTeX-math-list)
- (mapcar #'cadr
LaTeX-math-default))))
- (if TeX-insert-braces "{}")))
- TeX-complete-list))
-
(LaTeX-add-environments
'("document" LaTeX-env-document)
'("enumerate" LaTeX-env-item)
diff --git a/plain-tex.el b/plain-tex.el
index 37370aab..e2389b4a 100644
--- a/plain-tex.el
+++ b/plain-tex.el
@@ -129,19 +129,20 @@ Entering `plain-TeX-mode' calls the value of
`text-mode-hook',
then the value of `TeX-mode-hook', and then the value
of `plain-TeX-mode-hook'."
:syntax-table nil
+ :after-hook (plain-TeX-mode-cleanup)
(plain-TeX-common-initialization)
(setq TeX-base-mode-name mode-name)
- (setq TeX-command-default "TeX")
-
- (add-hook 'plain-TeX-mode-hook
- (lambda ()
- ;; Don't install tool bar in AmSTeX mode.
- (when (eq major-mode 'plain-TeX-mode)
- (add-hook 'tool-bar-mode-hook
- #'plain-TeX-maybe-install-toolbar nil t)
- (plain-TeX-maybe-install-toolbar)))
- nil t))
+ (setq TeX-command-default "TeX"))
+
+(defun plain-TeX-mode-cleanup ()
+ "Cleanup function for `plain-TeX-mode'.
+Run after mode hooks and file local variables application."
+ ;; Don't install tool bar in AmSTeX mode.
+ (when (eq major-mode 'plain-TeX-mode)
+ (add-hook 'tool-bar-mode-hook
+ #'plain-TeX-maybe-install-toolbar nil t)
+ (plain-TeX-maybe-install-toolbar)))
;; COMPATIBILITY for Emacs<29
;;;###autoload
diff --git a/tex-info.el b/tex-info.el
index 390524ca..0d069716 100644
--- a/tex-info.el
+++ b/tex-info.el
@@ -866,6 +866,8 @@ value of `Texinfo-mode-hook'."
(Texinfo-reftex-hook)))
(defun Texinfo-mode-cleanup ()
+ "Cleanup function for `Texinfo-mode'.
+Run after mode hooks and file local variables application."
;; Don't overwrite the value the user set by hooks or file
;; (directory) variables.
(or (local-variable-p 'page-delimiter)
diff --git a/tex.el b/tex.el
index 13635f61..d4fded73 100644
--- a/tex.el
+++ b/tex.el
@@ -3796,24 +3796,6 @@ Not intended for direct use for user."
;; (make-display-table)))
;; (aset buffer-display-table ?\t (apply 'vector (append "<TAB>" nil)))
- ;; Symbol & length completion.
- ;; We have to move the setup of `TeX-complete-list' after
- ;; `run-mode-hooks' in order to reflect the file local customization
- ;; of `TeX-insert-braces' and `TeX-complete-word'.
- (setq-local TeX-complete-list
- (list (list "\\\\\\([a-zA-Z]*\\)"
- 1
- (lambda ()
- (append (TeX-symbol-list-filtered)
- (when (fboundp 'LaTeX-length-list)
- (LaTeX-length-list))
- (when (fboundp 'LaTeX-counter-list)
- (mapcar (lambda (x)
- `(,(concat "the" (car x))))
- (LaTeX-counter-list)))))
- (if TeX-insert-braces "{}"))
- (list "" TeX-complete-word)))
-
(funcall TeX-install-font-lock)
;; We want this to be early in the list, so we do not add it before
@@ -3857,6 +3839,29 @@ Not intended for direct use for user."
(TeX-update-style t)) nil t))
(defun TeX-mode-cleanup ()
+ "Cleanup function for `TeX-mode'.
+Run after mode hooks and file local variables application."
+ ;; Symbol & length completion.
+ (or (local-variable-p 'TeX-complete-list)
+ (setq-local TeX-complete-list
+ (list (list "\\\\\\([a-zA-Z]*\\)"
+ 1
+ (lambda ()
+ (append
+ (TeX-symbol-list-filtered)
+ ;; These LaTeX-*-list are called even
+ ;; in non-LaTeX mode buffers, but
+ ;; that is permissible because they
+ ;; return empty list immediately.
+ (when (fboundp 'LaTeX-length-list)
+ (LaTeX-length-list))
+ (when (fboundp 'LaTeX-counter-list)
+ (mapcar (lambda (x)
+ `(,(concat "the" (car x))))
+ (LaTeX-counter-list)))))
+ (if TeX-insert-braces "{}"))
+ (list "" TeX-complete-word))))
+
;; Complete style initialization in buffers which don't visit files
;; and which are therefore missed by the setting of above
;; `find-file-hook'. This is necessary for `xref-find-references',
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- feature/fix-mode-names-overlap f41fbc0e 1/2: Improve mode cleanup functions,
Ikumi Keita <=