[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#34712: Fontification of simple macros
From: |
Arash Esbati |
Subject: |
bug#34712: Fontification of simple macros |
Date: |
Sat, 02 Mar 2019 21:53:15 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 |
Hi all,
while looking at this message[1], it seems that there is a bug in
font-latex.el. This code
\documentclass{beamer}
\begin{document}
\begin{frame}
\frametitle<presentation>{MySlide}
| |
font-latex-sedate-face
\end{frame}
\foo<bar>-19+*
\end{document}
looks like this for me:
Have a look at <...> and \foo<bar>-19+*. I think the issue is that the
regexp in `font-latex-match-simple-command' is too greedy. A possible
fix is attached below: We introduce a new variable
`font-latex-match-simple-include-list' for styles to add their special
characters for fontification to `font-latex-match-simple-command' which
is modified as shown below:
\documentclass{beamer}
\begin{document}
\begin{frame}
\frametitle<presentation>{MySlide}
| |
font-latex-sedate-face
\end{frame}
\foo<bar>-19+*
\begin{verbatim}
(defvar font-latex-match-simple-include-list nil
"List of characters allowed in a macro for fontification.
Each character is a string.")
(make-variable-buffer-local 'font-latex-match-simple-include-list)
(defun font-latex-match-simple-command (limit)
"Search for command like \\foo before LIMIT."
;; \s_ matches chars with symbol syntax, \sw chars with word syntax,
;; \s. chars with punctuation syntax. We must exclude matches where
;; the first character after the \ is a reserved character and
;; should not be fontified (e.g. \, in foo\,bar or \- in foo\-bar).
;; These characters are stored in
;; `font-latex-match-simple-exclude-list'. In docTeX mode, we
;; remove "_" from this list to get correct fontification for macros
;; like `\__module_foo:nnn'
(let* ((search (lambda ()
(TeX-re-search-forward-unescaped
(concat
;; Chars directly after backslash
"\\\\\\(\\s_\\|\\sw\\|\\s.\\)"
;; Start group of the following chars
"\\(?:["
;; a-zA-Z are always allowed:
"a-zA-Z"
;; Allow `@' used often to redefine internals
"@"
;; Check for additional characters added by AUCTeX
styles
(when font-latex-match-simple-include-list
(mapconcat #'identity
font-latex-match-simple-include-list
""))
;; End group
"]\\)*")
limit t)))
(pos (funcall search)))
(while (and pos
(member (match-string 1)
(if (eq major-mode 'doctex-mode)
(remove "_"
font-latex-match-simple-exclude-list)
font-latex-match-simple-exclude-list)))
(setq pos (funcall search)))
pos))
(font-latex-update-font-lock)
\end{verbatim}
\end{document}
E.g., `expl3.el' must do:
(setq font-latex-match-simple-include-list '("_" ":"))
Any comments welcome.
Best, Arash
Footnotes:
[1] http://lists.gnu.org/archive/html/auctex/2019-02/msg00005.html
- bug#34712: Fontification of simple macros,
Arash Esbati <=