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/)