# HG changeset patch # User Ikumi Keita # Date 1461482468 -32400 # Sun Apr 24 16:21:08 2016 +0900 # Node ID 64dd9f438a7fe920533968919ce3fc88f05c772b # Parent 58fafa2247b6f7eb7f2767eb4f347dde95456940 Enable directory local variables in japanese-{latex,plain-tex}-mode. * tex-jp.el (japanese-latex-mode-initialization): Set major-mode to `japanese-latex-mode' and reset it to `latex-mode' after `hack-local-variables' is done. (japanese-plain-tex-mode-initialization): Similar changes for `japanese-plain-tex-mode'. (japanese-TeX-reset-mode-name): New function. (top-level) Make `latex-mode' is regarded as parent of `japanese-latex-mode' in directory local variables. Similar addition for `japanese-plain-tex-mode', too. diff -r 58fafa2247b6 -r 64dd9f438a7f tex-jp.el --- a/tex-jp.el Sat Apr 23 18:49:19 2016 +0200 +++ b/tex-jp.el Sun Apr 24 16:21:08 2016 +0900 @@ -399,7 +399,13 @@ "Japanese plain-TeX specific initializations." (when japanese-TeX-mode ; (setq TeX-command-default japanese-TeX-command-default) - (TeX-engine-set japanese-TeX-engine-default))) + (TeX-engine-set japanese-TeX-engine-default) + + ;; For the intent of the following lines, see the comments below + ;; in `japanese-latex-mode-initialization'. + (setq major-mode 'japanese-plain-tex-mode) + (add-hook 'hack-local-variables-hook 'japanese-TeX-reset-mode-name + nil t))) (add-hook 'plain-TeX-mode-hook 'japanese-plain-tex-mode-initialization) @@ -431,10 +437,41 @@ ; (setq TeX-command-BibTeX ; (if (and (eq TeX-engine 'ptex) (executable-find "pbibtex")) ; "pBibTeX" "jBibTeX")) -)) + + ;; The value of `major-mode' should be `latex-mode', not + ;; `japanese-latex-mode', because the name `latex-mode' is hard + ;; coded in several places of AUCTeX like "(eq major-mode + ;; 'latex-mode)", "(memq major-mode '(doctex-mode latex-mode)" and + ;; so on. By such piece of codes, `japanese-latex-mode' should + ;; simply be regarded as `latex-mode'. So we'd like to leave + ;; `major-mode' as `latex-mode' here, but doing so confuses + ;; `hack-local-variables' in two ways. + ;; (1) It is tricked into considering that the major mode is not + ;; yet initialized and calls `japanese-latex-mode' again. + ;; (2) It does not read the directory local variables prepared for + ;; `japanese-latex-mode'. + ;; Thus we temporarily set `major-mode' to `japanese-latex-mode' + ;; here and plan to reset it to `latex-mode' after + ;; `hack-local-variables' is done. + (setq major-mode 'japanese-latex-mode) + (add-hook 'hack-local-variables-hook 'japanese-TeX-reset-mode-name + nil t))) (add-hook 'LaTeX-mode-hook 'japanese-latex-mode-initialization) +;; This function is useful only within `hack-local-variables-hook'. +(defun japanese-TeX-reset-mode-name () + (cond ((eq major-mode 'japanese-latex-mode) + (setq major-mode 'latex-mode)) + ((eq major-mode 'japanese-plain-tex-mode) + (setq major-mode 'plain-tex-mode))) + (remove-hook 'hack-local-variables-hook 'japanese-TeX-reset-mode-name t)) + +;; Make `hack-dir-local-variables' to regard `latex-mode' as parent +;; of `japanese-latex-mode', and `plain-tex-mode' as parent of +;; `japanese-plain-tex-mode'. +(put 'japanese-plain-tex-mode 'derived-mode-parent 'plain-tex-mode) +(put 'japanese-latex-mode 'derived-mode-parent 'latex-mode) ;;; Support for various self-insert-command