ivy-rich icon indicating copy to clipboard operation
ivy-rich copied to clipboard

Error in post-command-hook (ivy--queue-exhibit)

Open Mihara opened this issue 3 years ago • 3 comments

So I have ivy, counsel, ivy-rich running, and open up describe-variable - which counsel overrides with counsel-describe-variable, and ivy-rich annotates with extra data, including variable values.

I type: url- -- and that's the moment it freezes and I have to cancel it to get the editor back to working order. The only clue so far is the error message:

Error in post-command-hook (ivy--queue-exhibit): (error "Invalid key sequence in substitution: ‘https?://www\\.google\\.com/\" conceals
Google’")

Exactly like that. Turning on debug-on-error and doing that again produces no results and no debug output of any kind.

After much mucking around, I've been able to identify the specific variable that's tripping the problem: It's w3m-ignored-image-url-regexp from w3m.el, or rather, its docstring.

I couldn't tell you who is in the wrong here, w3m for containing a mangled docstring, (honestly, I can't tell just what is mangled about it) or ivy-rich for choking on it, the error message itself comes from substitute-command-keys which ivy-rich doesn't even directly use.

Unfortunately, excising this line from w3m.el isn't really enough, as it finds something else to trip on.

Could you please help me in directing this bug to its proper owners, if it's not in ivy-rich itself?

Mihara avatar Feb 02 '22 18:02 Mihara

I had a similiar but different error like yours today, but anyway, you can try to use (setq debug-on-signal t) and see whether Backtrace appears.
I used this method to find out what caused the error.

zbelial avatar Dec 05 '22 01:12 zbelial

If anyone encounters something like not a directory error when updating to emacs 30 (master), try the following patch:

  (defun ivy-rich--switch-buffer-directory! (orig-fun &rest args)
    (cl-letf (((symbol-function 'directory-file-name) #'file-name-directory))
      (apply orig-fun args)))
  (advice-add 'ivy-rich--switch-buffer-directory :around #'ivy-rich--switch-buffer-directory!)

BlindingDark avatar Dec 05 '22 08:12 BlindingDark

I had a similar issue to @BlindingDark, that was however not fixed by #117 or his patch. In my case it was caused by Helpful-Mode. (Since helpful-mode likes to set list-buffers-directory, which confuses ivy-rich.) In case anyone else has the same problem as me, here is the fix I used:

(advice-add #'helpful--buffer :filter-return
  (lambda (buf)
    (with-current-buffer buf (setq-local list-buffers-directory nil))
    buf))

Why this issue has only occured after upgrading to Emacs 30 is however still a mystery to me.

SPFabGerman avatar Mar 12 '23 20:03 SPFabGerman