diff --git a/tex.el b/tex.el index b85a72a..6e1f977 100644 --- a/tex.el +++ b/tex.el @@ -2513,6 +2513,16 @@ Return nil otherwise." (search-backward "\n\^L" (max (- (point-max) 3000) (point-min)) 'move) (re-search-forward "^%+ *TeX-master:" nil t))) +(defun TeX-add-document-variables (&rest sym-val) + "Set first element of SYM-VAL to the next one, and so on. + +The variables are set if current file is not the master. This is +used to store variables shared among the whole document into the +auto-saved file." + (unless (equal TeX-master t) + (while var-val + (set (pop sym-val) (pop sym-val))))) + ;;; Style Paths (defcustom TeX-style-global (expand-file-name "style" TeX-data-directory) @@ -3988,22 +3998,39 @@ If TEX is a directory, generate style files for all files in the directory." LaTeX-provided-class-options)) (pkg-opts (if (boundp 'LaTeX-provided-package-options) LaTeX-provided-package-options)) - (tex-cmd-opts TeX-command-extra-options) (verb-envs (when (boundp 'LaTeX-verbatim-environments-local) LaTeX-verbatim-environments-local)) (verb-macros-delims (when (boundp 'LaTeX-verbatim-macros-with-delims-local) LaTeX-verbatim-macros-with-delims-local)) (verb-macros-braces (when (boundp 'LaTeX-verbatim-macros-with-braces-local) LaTeX-verbatim-macros-with-braces-local)) - (dialect TeX-style-hook-dialect)) + (dialect TeX-style-hook-dialect) + (master (equal TeX-master t)) + shared-variables) + ;; If we are parsing master file, retrieve variables to be shared among + ;; the whole document. + (when master + ;; (hack-local-variables) ;; <= !!!!! + (dolist (var '(TeX-engine TeX-PDF-mode TeX-command-extra-options + TeX-PDF-from-DVI ConTeXt-Mark-version)) + ;; Add the variable only if it has a local binding. + (when (local-variable-p var) + (push (cons var (symbol-value var)) shared-variables)))) (TeX-unload-style style) (with-current-buffer (generate-new-buffer file) (erase-buffer) (insert "(TeX-add-style-hook\n \"" style "\"\n (lambda ()") - (unless (string= tex-cmd-opts "") - (insert "\n (setq TeX-command-extra-options\n" - " " (prin1-to-string tex-cmd-opts) ")")) + (and + ;; Save only if current file is the master. + master + shared-variables + (insert "\n (TeX-add-document-variables" + (mapconcat (lambda (sym-val) + (concat "\n '" (prin1-to-string (car sym-val)) + "\n " (prin1-to-string (cdr sym-val)))) + shared-variables "") + ")")) (when class-opts (insert "\n (TeX-add-to-alist 'LaTeX-provided-class-options\n" " '" (prin1-to-string class-opts) ")"))