From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: 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: Mon, 03 Sep 2018 17:27:42 +0200 Message-ID: <87d0tutxch.fsf@nicolasgoaziou.fr> References: <874lf8hhel.fsf@tcd.ie> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fwqlZ-0002aP-5S for emacs-orgmode@gnu.org; Mon, 03 Sep 2018 11:27:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fwqlW-00073L-2y for emacs-orgmode@gnu.org; Mon, 03 Sep 2018 11:27:49 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:53451) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fwqlV-00072Q-Ss for emacs-orgmode@gnu.org; Mon, 03 Sep 2018 11:27:46 -0400 In-Reply-To: <874lf8hhel.fsf@tcd.ie> (Basil L. Contovounesios's message of "Sun, 02 Sep 2018 01:28:18 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: "Basil L. Contovounesios" Cc: emacs-orgmode@gnu.org Hello, "Basil L. Contovounesios" writes: > 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) `org-string-display' doesn't exist anymore in master (Org 9.2). However, there is the same error with `org-string-width'. What is `org-string-width' supposed to do on your example? Probably return an error. > 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? If `org-string-width' returns nil, it will ensue an error somewhere further in the code. So returning an error right here is better (or find a way to compute the width of an image in columns). As another data point, `string-width' returns 1 on your example, which is probably wrong. WDYT? Regards, -- Nicolas Goaziou