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

Reply via email to