]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix tex-mode handling of _ chars in href{} commands
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 24 Jan 2022 11:39:02 +0000 (12:39 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 24 Jan 2022 11:39:02 +0000 (12:39 +0100)
* lisp/textmodes/tex-mode.el (tex--current-command): New function
(bug#23102).
(tex-font-lock-suscript): Don't subscript _ chars in href.

lisp/textmodes/tex-mode.el

index 1925d93d93af5bcbe39d45e5618676a1dfd5d965..929181960bc4ae53fb05a69381ee930b9540bf37 100644 (file)
@@ -630,6 +630,14 @@ An alternative value is \" . \", if you use a font with a narrow period."
              3 '(tex-font-lock-append-prop 'bold) 'append)))))
    "Gaudy expressions to highlight in TeX modes.")
 
+(defun tex--current-command ()
+  "Return the previous \\\\command."
+  (save-excursion
+    (and (re-search-backward "\\\\\\([a-zA-Z@]+\\)\\*?\\({\\)?" nil t)
+         ;; Ignore commands that don't have contents.
+         (and (match-string 2)
+              (match-string 1)))))
+
 (defun tex-font-lock-suscript (pos)
   (unless (or (memq (get-text-property pos 'face)
                    '(font-lock-constant-face font-lock-builtin-face
@@ -639,7 +647,9 @@ An alternative value is \" . \", if you use a font with a narrow period."
                    (pos pos))
                (while (eq (char-before pos) ?\\)
                  (setq pos (1- pos) odd (not odd)))
-               odd))
+               odd)
+              ;; Allow bare _ characters in some commands.
+              (member (tex--current-command) '("href" "ProvidesFile")))
     (if (eq (char-after pos) ?_)
        `(face subscript display (raise ,(car tex-font-script-display)))
       `(face superscript display (raise ,(cadr tex-font-script-display))))))