[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] Bug: org-string-display throws on image display property [9.1.9 (rel
From: |
Basil L. Contovounesios |
Subject: |
[O] Bug: org-string-display throws on image display property [9.1.9 (release_9.1.9-65-g5e4542 @ /home/blc/.local/share/emacs/27.0.50/lisp/org/)] |
Date: |
Sun, 02 Sep 2018 01:28:18 +0100 |
Severity: minor
0. emacs -Q
1. M-x toggle-debug-on-error RET
2. Evaluate the following:
(require 'org)
(org-string-display
(propertize " " 'display '(image :type svg
:file "/path/to/image.svg")))
This gives the following error backtrace:
Debugger entered--Lisp error: (wrong-type-argument sequencep t)
#f(compiled-function (s property filter) #<bytecode 0x394179>)(t invisible
#f(compiled-function (props) #<bytecode 0x394185>))
#f(compiled-function (s) #<bytecode 0x11718f5>)(t)
#f(compiled-function (props) #<bytecode 0x1171905>)((display (image :type svg
:file "/path/to/image.svg")))
#f(compiled-function (s property filter) #<bytecode 0x394179>)(#(" " 0 1
(display (image :type svg :file "/path/to/image.svg"))) display
#f(compiled-function (props) #<bytecode 0x1171905>))
#f(compiled-function (build-from-parts prune-invisible s) #<bytecode
0x3940dd>)(#f(compiled-function (s property filter) #<bytecode 0x394179>)
#f(compiled-function (s) #<bytecode 0x11718f5>) #(" " 0 1 (display (image :type
svg :file "/path/to/image.svg"))))
org-string-display(#(" " 0 1 (display (image :type svg :file
"/path/to/image.svg"))))
eval((org-string-display (propertize " " 'display '(image :type svg :file
"/path/to/image.svg"))) nil)
elisp--eval-last-sexp(t)
eval-last-sexp(t)
eval-print-last-sexp(nil)
funcall-interactively(eval-print-last-sexp nil)
call-interactively(eval-print-last-sexp nil nil)
command-execute(eval-print-last-sexp)
I realise that org-string-display is a relatively obscure function that
was probably not designed with image or other complex display properties
in mind, but AFAICT the following is a pretty obvious "fix", given that
the surrounding code expects 'value' to be a string or nil, but never t:
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 583633605f..5ab069e6a2 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -108,7 +108,7 @@ org-string-display
;; string (face...).
(let* ((display (plist-get props 'display))
(value (if (stringp display) display
- (cl-some #'stringp display))))
+ (cl-find-if #'stringp display))))
(when value
(apply #'propertize
;; Displayed string could contain
With this change, the return value of org-string-display does not really
make sense for images, but at least the function doesn't barf on complex
but valid display properties. WDYT?
Thanks,
--
Basil
Emacs : GNU Emacs 27.0.50 (build 3, x86_64-pc-linux-gnu, X toolkit, Xaw3d
scroll bars)
of 2018-09-01
Package: Org mode version 9.1.9 (release_9.1.9-65-g5e4542 @
/home/blc/.local/share/emacs/27.0.50/lisp/org/)
- [O] Bug: org-string-display throws on image display property [9.1.9 (release_9.1.9-65-g5e4542 @ /home/blc/.local/share/emacs/27.0.50/lisp/org/)],
Basil L. Contovounesios <=