Prevent leaking fontification across table fields' borders

* lisp/org.el (org-do-emphasis-faces): Prevent leaking fontification
  across table fields' borders.

Reported-by: Ryan <rct@thompsonclan.org>
<http://lists.gnu.org/archive/html/emacs-orgmode/2017-10/msg00321.html>
This commit is contained in:
Nicolas Goaziou 2017-10-22 14:39:36 +02:00
parent 1613153aac
commit a2a034f5b9

View file

@ -5752,18 +5752,23 @@ This should be called after the variable `org-link-parameters' has changed."
(verbatim? (member marker '("~" "="))))
(when (save-excursion
(goto-char (match-beginning 0))
;; Do not match headline stars. Do not consider
;; stars of a headline as closing marker for bold
;; markup either. Do not match table hlines.
(and
(not (looking-at-p org-outline-regexp-bol))
;; Do not match headline stars. Do not consider
;; stars of a headline as closing marker for bold
;; markup either.
(not (and (equal marker "*")
(save-excursion
(forward-char)
(skip-chars-backward "*")
(looking-at-p org-outline-regexp-bol))))
;; Do not match table hlines.
(not (and (equal marker "+")
(org-match-line
"^[ \t]*\\(|[-+]+|?\\|\\+[-+]+\\+\\)[ \t]*$")))
(looking-at (if verbatim? org-verbatim-re org-emph-re))
(not (string-match-p
(concat org-outline-regexp-bol "\\'")
(match-string 0)))))
;; At a table row, do not cross cell boundaries.
(not (and (save-match-data (org-match-line "[ \t]*|"))
(string-match-p "|" (match-string 4))))))
(pcase-let ((`(,_ ,face ,_) (assoc marker org-emphasis-alist)))
(font-lock-prepend-text-property
(match-beginning 2) (match-end 2) 'face face)