Hi,
This issue has bothered me for a long time. When I first started using
column view, I thought the strike-through text was caused by rendering
errors or display artifacts.
COLUMNS property values may contain summary operators like '{+}'.
When multiple such operators are present, font lock can interpret the
text between plus signs as strike-through, for example:
:PROPERTIES:
:COLUMNS: %A{+} %B{+}
:END:
The attached patch prevents emphasis fontification in node property
values and adds a regression test.
Best,
--
Slawomir Grochowski
>From 78b6aa31fe00b2e6d6b74cbc4eed8a4a6e72a4bc Mon Sep 17 00:00:00 2001
From: Slawomir Grochowski <[email protected]>
Date: Sun, 14 Jun 2026 09:03:57 +0200
Subject: [PATCH] org: Do not fontify emphasis in property values
* lisp/org.el (org-do-emphasis-faces): Do not match emphasis in
node property values.
* testing/lisp/test-org.el (test-org/fontify-node-property): Add
test.
---
lisp/org.el | 8 ++++++++
testing/lisp/test-org.el | 10 ++++++++++
2 files changed, 18 insertions(+)
diff --git a/lisp/org.el b/lisp/org.el
index 04eed3088..8bedec27a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5477,6 +5477,14 @@ stacked delimiters is N. Escaping delimiters is not possible."
(looking-at-p org-outline-regexp-bol))))
;; Match full emphasis markup regexp.
(looking-at (if verbatim? org-verbatim-re org-emph-re))
+ ;; Do not match emphasis in property values.
+ (not
+ (and
+ (let ((face (get-text-property (match-beginning 2) 'face)))
+ (if (listp face)
+ (memq 'org-property-value face)
+ (eq 'org-property-value face)))
+ (save-match-data (org-at-property-p))))
;; Do not span over paragraph boundaries.
(not (string-match-p org-element-paragraph-separate
(match-string 2)))
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index aabf18bfa..139221161 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -489,6 +489,16 @@ Otherwise, evaluate RESULT as an sexp and return its result."
(org-test-with-temp-text ":PROPERTIES:\n<point>:PROP: t\n:END:\n"
(org-at-property-p)))))
+(ert-deftest test-org/fontify-node-property ()
+ "Do not apply emphasis faces to node property values."
+ (org-test-with-temp-text
+ ":PROPERTIES:
+ :COLUMNS: %A{+} <point> %B{+}
+ :END:"
+ (should-not (get-text-property (point) 'org-emphasis))
+ (should (eq (get-text-property (point) 'face)
+ 'org-property-value))))
+
(ert-deftest test-org/at-property-drawer-p ()
"Test `org-at-property-drawer-p' specifications."
(should
--
2.39.5