GNU bug report logs - #46177
27.1; Display problem with minibuffer overlay when using display property

Previous Next

Package: emacs;

Reported by: Clemens <clemens.radermacher <at> posteo.de>

Date: Fri, 29 Jan 2021 18:00:01 UTC

Severity: normal

Found in version 27.1

Done: Clemens <clemens.radermacher <at> posteo.de>

Bug is archived. No further changes may be made.

Full log


Message #11 received at 46177 <at> debbugs.gnu.org (full text, mbox):

From: Clemens <clemens.radermacher <at> posteo.de>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 46177 <at> debbugs.gnu.org
Subject: Re: bug#46177: 27.1; Display problem with minibuffer overlay when
 using display property
Date: Fri, 29 Jan 2021 21:26:26 +0100
> That's a feature: Emacs treats display strings and overlay strings
> differently for the purposes of face merging.


Okay, thanks. I have a problem with this when displaying completion 
candidates in the minibuffer. The candidates are displayed via 
`after-string` overlay. The candidates are provided by the caller and 
can contain the `display` property. Right now I "inline" any parts of 
the string that use `display` to avoid this:


(defun selectrum--display-string (str)
  "Return display string of STR."
  (let ((len (length str))
        (display "")
        (start 0)
        (end 0))
    (while (not (eq len end))
      (setq end (next-single-property-change start 'display str len))
      (let ((val  (get-text-property start 'display str)))
        (if (and val (stringp val))
            (setq display (concat display val))
          (setq display (concat display (substring str start end)))))
      (setq start end))
    display))


Is there a better way?




This bug report was last modified 4 years and 111 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.