summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2018-01-28 17:08:03 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2018-01-28 17:08:03 +0100
commit5b4a711949eb3c757561b574b4d30af7c7e7cd79 (patch)
tree12c74f602e073821cc837337d2f2d369afb4a9d8
parent4d46a20ea2f5d3a041e5b3aaf7c36222a8156485 (diff)
downloadorg-mode-5b4a711949eb3c757561b574b4d30af7c7e7cd79.tar.gz
Fix fontification of macro spanning over multiple lines
* lisp/org.el (org-fontify-macros): Handle macros spanning over multiple lines.
-rw-r--r--lisp/org.el26
1 files changed, 15 insertions, 11 deletions
diff --git a/lisp/org.el b/lisp/org.el
index e50c60f..b45cc06 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -6051,17 +6051,21 @@ by a #."
(defun org-fontify-macros (limit)
"Fontify macros."
- (when (re-search-forward "\\({{{\\).+?\\(}}}\\)" limit t)
- (add-text-properties
- (match-beginning 0) (match-end 0)
- '(font-lock-fontified t face org-macro))
- (when org-hide-macro-markers
- (add-text-properties (match-end 2) (match-beginning 2)
- '(invisible t))
- (add-text-properties (match-beginning 1) (match-end 1)
- '(invisible t)))
- (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
- t))
+ (when (re-search-forward "{{{\\([a-zA-Z][-a-zA-Z0-9_]*\\)" limit t)
+ (let ((begin (match-beginning 0))
+ (opening-end (match-beginning 1)))
+ (when (and (re-search-forward "\n[ \t]*\n\\|\\(}}}\\)" limit t)
+ (match-string 1))
+ (let ((end (match-end 1))
+ (closing-start (match-beginning 1)))
+ (add-text-properties
+ begin end
+ '(font-lock-multiline t font-lock-fontified t face org-macro))
+ (org-remove-flyspell-overlays-in begin end)
+ (when org-hide-macro-markers
+ (add-text-properties begin opening-end '(invisible t))
+ (add-text-properties closing-start end '(invisible t)))
+ t)))))
(defun org-activate-footnote-links (limit)
"Add text properties for footnotes."