emacs-mini-frame icon indicating copy to clipboard operation
emacs-mini-frame copied to clipboard

Ivy actions not working by key

Open loafofpiecrust opened this issue 3 years ago • 2 comments

I'm using mini-frame-mode along with ivy and counsel. When I set ivy-read-action-function to 'ivy-read-action-by-key, I can press C-o when I have an item selected in ivy to see some alternate actions. I press i for one of the default actions, but instead of doing the action it just goes back to the original ivy prompt. So I'm unable to do any alternate actions with ivy while mini-frame-mode is enabled.

This is the error stack-trace:

Debugger entered--Lisp error: (error "Cannot resize the root window of a frame")
  error("Cannot resize the root window of a frame")
  window-resize(nil 0)
  ivy-shrink-after-dispatching()
  ivy-read-action-by-key((1 ("o" counsel-M-x-action "default") ("i" ivy--action-insert "insert") ("w" ivy--action-copy "copy") ("d" counsel--find-symbol "definition") ("h" #f(compiled-function (x) #<bytecode 0x1fc164baa8f343>) "help")))
  ivy-read-action()
  ivy-dispatching-done()
  funcall-interactively(ivy-dispatching-done)
  command-execute(ivy-dispatching-done)
  #<subr read-from-minibuffer>("M-x " nil (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (67108903 . ivy-avy) (67108877 . ivy-immediate-done) (12 . ivy-alt-done) (67108896 . ivy-call-and-recenter) (insert-state keymap "Auxiliary keymap for Insert state" (11 . previous-line) (10 . next-line)) (33554443 . scroll-down-command) (33554442 . scroll-up-command) (11 . previous-line) (26 closure (t) (&rest _) (interactive) (condition-case nil (progn (call-interactively #'undo)) (error nil))) (23 . doom/delete-backward-word) (21 . evil-delete-back-to-indentation) (1 . move-beginning-of-line) (escape . abort-recursive-edit) (19 . counsel-minibuffer-history) (36 . ivy-magic-read-file-env) (3 keymap (5 . +ivy/woccur) (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (33554464 . ivy-restrict-to-matches) (15 . ivy-dispatching-done) (22 . yank) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . evil-paste-from-register) (remap keymap (doom/delete-backward-word . ivy-backward-kill-word) (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . next-line) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . hydra-ivy/body) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (97 . ivy-toggle-marks) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history nil nil)
  mini-frame--display(#<subr read-from-minibuffer> ("M-x " nil (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (67108903 . ivy-avy) (67108877 . ivy-immediate-done) (12 . ivy-alt-done) (67108896 . ivy-call-and-recenter) (insert-state keymap "Auxiliary keymap for Insert state" (11 . previous-line) (10 . next-line)) (33554443 . scroll-down-command) (33554442 . scroll-up-command) (11 . previous-line) (26 closure (t) (&rest _) (interactive) (condition-case nil (progn (call-interactively #'undo)) (error nil))) (23 . doom/delete-backward-word) (21 . evil-delete-back-to-indentation) (1 . move-beginning-of-line) (escape . abort-recursive-edit) (19 . counsel-minibuffer-history) (36 . ivy-magic-read-file-env) (3 keymap (5 . +ivy/woccur) (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (33554464 . ivy-restrict-to-matches) (15 . ivy-dispatching-done) (22 . yank) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . evil-paste-from-register) (remap keymap (doom/delete-backward-word . ivy-backward-kill-word) (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . next-line) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . hydra-ivy/body) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (97 . ivy-toggle-marks) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history))
  mini-frame-read-from-minibuffer(#<subr read-from-minibuffer> "M-x " nil (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (67108903 . ivy-avy) (67108877 . ivy-immediate-done) (12 . ivy-alt-done) (67108896 . ivy-call-and-recenter) (insert-state keymap "Auxiliary keymap for Insert state" (11 . previous-line) (10 . next-line)) (33554443 . scroll-down-command) (33554442 . scroll-up-command) (11 . previous-line) (26 closure (t) (&rest _) (interactive) (condition-case nil (progn (call-interactively #'undo)) (error nil))) (23 . doom/delete-backward-word) (21 . evil-delete-back-to-indentation) (1 . move-beginning-of-line) (escape . abort-recursive-edit) (19 . counsel-minibuffer-history) (36 . ivy-magic-read-file-env) (3 keymap (5 . +ivy/woccur) (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (33554464 . ivy-restrict-to-matches) (15 . ivy-dispatching-done) (22 . yank) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . evil-paste-from-register) (remap keymap (doom/delete-backward-word . ivy-backward-kill-word) (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . next-line) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . hydra-ivy/body) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (97 . ivy-toggle-marks) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history)
  apply(mini-frame-read-from-minibuffer #<subr read-from-minibuffer> ("M-x " nil (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (67108903 . ivy-avy) (67108877 . ivy-immediate-done) (12 . ivy-alt-done) (67108896 . ivy-call-and-recenter) (insert-state keymap "Auxiliary keymap for Insert state" (11 . previous-line) (10 . next-line)) (33554443 . scroll-down-command) (33554442 . scroll-up-command) (11 . previous-line) (26 closure (t) (&rest _) (interactive) (condition-case nil (progn (call-interactively #'undo)) (error nil))) (23 . doom/delete-backward-word) (21 . evil-delete-back-to-indentation) (1 . move-beginning-of-line) (escape . abort-recursive-edit) (19 . counsel-minibuffer-history) (36 . ivy-magic-read-file-env) (3 keymap (5 . +ivy/woccur) (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (33554464 . ivy-restrict-to-matches) (15 . ivy-dispatching-done) (22 . yank) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . evil-paste-from-register) (remap keymap (doom/delete-backward-word . ivy-backward-kill-word) (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . next-line) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . hydra-ivy/body) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (97 . ivy-toggle-marks) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history))
  read-from-minibuffer("M-x " nil (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (67108903 . ivy-avy) (67108877 . ivy-immediate-done) (12 . ivy-alt-done) (67108896 . ivy-call-and-recenter) (insert-state keymap "Auxiliary keymap for Insert state" (11 . previous-line) (10 . next-line)) (33554443 . scroll-down-command) (33554442 . scroll-up-command) (11 . previous-line) (26 closure (t) (&rest _) (interactive) (condition-case nil (progn (call-interactively #'undo)) (error nil))) (23 . doom/delete-backward-word) (21 . evil-delete-back-to-indentation) (1 . move-beginning-of-line) (escape . abort-recursive-edit) (19 . counsel-minibuffer-history) (36 . ivy-magic-read-file-env) (3 keymap (5 . +ivy/woccur) (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (33554464 . ivy-restrict-to-matches) (15 . ivy-dispatching-done) (22 . yank) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . evil-paste-from-register) (remap keymap (doom/delete-backward-word . ivy-backward-kill-word) (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . next-line) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . hydra-ivy/body) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (97 . ivy-toggle-marks) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history)

(setq ivy-read-action-function 'ivy-read-action-ivy)

Does work, but isn't the type of action completion that I ultimately want.

loafofpiecrust avatar Nov 06 '20 23:11 loafofpiecrust

I can press C-o when I have an item selected in ivy to see some alternate actions

For me it's M-o.

So I'm unable to do any alternate actions with ivy while mini-frame-mode is enabled.

I can reproduce this error without mini-frame-mode but with minibuffer-only frame:

emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))" M-x package-initialize M-x ivy-mode M-x M-o o

Can you please report this to ivy devs?

muffinmad avatar Nov 07 '20 11:11 muffinmad

I was able to make ivy-read-action-by-key work by advicing the ivy-shrink-after-dispatching function

This is what I have in my config

  (defun +ivy-shrink-after-dispatching-a(f &rest a)
    (unless mini-frame-mode
      (apply f a)))
  (advice-add 'ivy-shrink-after-dispatching :around #'+ivy-shrink-after-dispatching-a)

Gleek avatar Aug 19 '21 21:08 Gleek