Error in post-command-hook (ivy--queue-exhibit)
Mihara opened this issue · 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?
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.
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!)
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.