summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-11-15 18:13:34 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-11-15 18:13:34 +0100
commit40f73953f661bec0e70d38d6e11f6d39c92504f8 (patch)
treef4279ebdb542627b35253100b3a579936bb9f79a
parent6059c3a057ca4739a77c3ad4b493650c48f410cd (diff)
downloadorg-mode-40f73953f661bec0e70d38d6e11f6d39c92504f8.tar.gz
Fix `org-string-display'
* lisp/org-macs.el (org-string-display): Preserve original string's display property when computing displayed width. * testing/lisp/test-org-macs.el (test-org/string-display): Add test. Reported-by: Ruy Exel <ruyexel@gmail.com> <http://lists.gnu.org/archive/html/emacs-orgmode/2017-11/msg00160.html>
-rw-r--r--lisp/org-macs.el19
-rw-r--r--testing/lisp/test-org-macs.el8
2 files changed, 16 insertions, 11 deletions
diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 1118214..a39c506 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -108,16 +108,15 @@ text properties."
(value (if (stringp display) display
(cl-some #'stringp display))))
(when value
- (apply
- #'propertize
- ;; Displayed string could contain
- ;; invisible parts, but no nested display.
- (funcall prune-invisible value)
- (plist-put props
- 'display
- (and (not (stringp display))
- (cl-remove-if #'stringp
- display)))))))))))
+ (apply #'propertize
+ ;; Displayed string could contain
+ ;; invisible parts, but no nested
+ ;; display.
+ (funcall prune-invisible value)
+ 'display
+ (and (not (stringp display))
+ (cl-remove-if #'stringp display))
+ props))))))))
;; `display' property overrides `invisible' one. So we first
;; replace characters with `display' property. Then we remove
;; invisible characters.
diff --git a/testing/lisp/test-org-macs.el b/testing/lisp/test-org-macs.el
index 7c54761..79a39f1 100644
--- a/testing/lisp/test-org-macs.el
+++ b/testing/lisp/test-org-macs.el
@@ -68,7 +68,13 @@
(eq 'foo
(get-text-property 1 'face
(org-string-display
- #("123" 1 2 (display "abc" face foo)))))))
+ #("123" 1 2 (display "abc" face foo))))))
+ ;; Also preserve `display' property in original string.
+ (should
+ (equal "abc"
+ (let ((s #("123" 1 2 (display "abc" face foo))))
+ (org-string-display s)
+ (get-text-property 1 'display s)))))
(provide 'test-org-macs)