[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[AUCTeX-diffs] [elpa] externals/auctex a4a8140 2/4: Refresh font-latex f
From: |
Tassilo Horn |
Subject: |
[AUCTeX-diffs] [elpa] externals/auctex a4a8140 2/4: Refresh font-latex fontification if vars are modified |
Date: |
Sat, 12 Nov 2016 09:57:00 +0000 (UTC) |
branch: externals/auctex
commit a4a8140a683bd0b46ffe51f923a73959be4cc05c
Author: Tassilo Horn <address@hidden>
Commit: Tassilo Horn <address@hidden>
Refresh font-latex fontification if vars are modified
Refresh font-latex fontification if variables such as
LaTeX-verbatim-*-local are set in a file-local variables block or as
directory-local variables (bug#24868).
* font-latex.el (font-latex-after-hacking-local-variables): New function.
(font-latex-setup): Add it do hack-local-variables-hook.
* tex.el (TeX--list-of-string-p): New function.
* latex.el (LaTeX-verbatim-environments-local):
(LaTeX-verbatim-macros-with-braces-local):
(LaTeX-verbatim-macros-with-delims-local): Use it for
safe-local-variable property.
---
font-latex.el | 24 +++++++++++++++++++++++-
latex.el | 7 +++++++
tex.el | 10 ++++++++++
3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/font-latex.el b/font-latex.el
index fb7f8d6..a7982c5 100644
--- a/font-latex.el
+++ b/font-latex.el
@@ -1258,7 +1258,11 @@ triggers Font Lock to recognize the change."
(set (make-local-variable 'lookup-syntax-properties) t))
(setq defaults (append defaults variables)))
;; Set the defaults.
- (setq font-lock-defaults defaults)))
+ (setq font-lock-defaults defaults))
+
+ ;; Make sure fontification will be refreshed if a user sets variables
+ ;; influencing fontification in her file-local variables section.
+ (add-hook 'hack-local-variables-hook
#'font-latex-after-hacking-local-variables t t))
(defun font-latex-jit-lock-force-redisplay (buf start end)
"Compatibility for Emacsen not offering `jit-lock-force-redisplay'."
@@ -1343,6 +1347,24 @@ fontification facilities like `font-lock-multiline'
itself."
(when (numberp ad-end)
(ad-set-arg 1 ad-end)))))))
+(defun font-latex-after-hacking-local-variables ()
+ "Refresh fontification if required by updates of file-local variables.
+This function is added to `hack-local-variables-hook' and
+recomputes fontification if variables affecting fontification are
+modified. Such variables include
+`LaTeX-verbatim-environments-local',
+`LaTeX-verbatim-macros-with-braces-local',
+`LaTeX-verbatim-macros-with-delims-local'."
+ ;; Note to self: directory-local variables are also added to
+ ;; file-local-variables-alist.
+ (let ((hacked-local-vars (mapcar #'car file-local-variables-alist)))
+ (when (or (memq 'LaTeX-verbatim-environments-local hacked-local-vars)
+ (memq 'LaTeX-verbatim-macros-with-braces-local hacked-local-vars)
+ (memq 'LaTeX-verbatim-macros-with-delims-local hacked-local-vars))
+ ;; Ok, we need to refresh fontification.
+ (font-latex-set-syntactic-keywords)
+ (setq font-lock-set-defaults nil)
+ (font-lock-set-defaults))))
;;; Utility functions
diff --git a/latex.el b/latex.el
index c21699d..56cb491 100644
--- a/latex.el
+++ b/latex.el
@@ -2785,6 +2785,9 @@ Programs should not use this variable directly but the
function
including values of the variable
`LaTeX-verbatim-macros-with-delims' as well.")
(make-variable-buffer-local 'LaTeX-verbatim-macros-with-delims-local)
+(put 'LaTeX-verbatim-macros-with-delims-local 'safe-local-variable
+ #'TeX--list-of-string-p)
+
(defcustom LaTeX-verbatim-macros-with-braces nil
"Macros for inline verbatim with arguments in braces, like \foo{...}.
@@ -2807,6 +2810,8 @@ Programs should not use this variable directly but the
function
including values of the variable
`LaTeX-verbatim-macros-with-braces' as well.")
(make-variable-buffer-local 'LaTeX-verbatim-macros-with-braces-local)
+(put 'LaTeX-verbatim-macros-with-braces-local 'safe-local-variable
+ #'TeX--list-of-string-p)
(defcustom LaTeX-verbatim-environments
'("verbatim" "verbatim*")
@@ -2829,6 +2834,8 @@ Programs should not use this variable directly but the
function
`LaTeX-verbatim-environments' which returns a value including
values of the variable `LaTeX-verbatim-environments' as well.")
(make-variable-buffer-local 'LaTeX-verbatim-environments-local)
+(put 'LaTeX-verbatim-environments-local 'safe-local-variable
+ #'TeX--list-of-string-p)
(defun LaTeX-verbatim-macros-with-delims ()
"Return list of verbatim macros with delimiters."
diff --git a/tex.el b/tex.el
index 1836f66..e192899 100644
--- a/tex.el
+++ b/tex.el
@@ -6665,6 +6665,16 @@ Emacs 21."
(string-to-number (replace-match "\1" nil nil string))
0))))
+(defun TeX--list-of-string-p (lst)
+ "Return non-nil iff `LST' is a list of strings.
+Used as function for validating a variable's `safe-local-variable' property."
+ (and (listp lst)
+ (let ((all-strings t))
+ (while (and all-strings lst)
+ (setq all-strings (stringp (car lst)))
+ (setq lst (cdr lst)))
+ all-strings)))
+
(provide 'tex)
;; Local Variables: