使用 ivy-posframe 之后, counsel-find-file 无法正常创建新文件

本来是在 doom-emacs 里面发现的, 不过我使用 emacs -q 测试了一下. 使用下面的一个最小配置可以复现.

;;; 配置相关load-path  
(add-to-list 'load-path "~/.emacs.d/.local/packages/elpa/ivy-20190530.1924")
(add-to-list 'load-path "~/.emacs.d/.local/packages/elpa/ivy-posframe-20190530.241")
(add-to-list 'load-path "~/.emacs.d/.local/packages/elpa/counsel-20190527.1406")
(add-to-list 'load-path "~/.emacs.d/.local/packages/elpa/swiper-20190528.1333")
(add-to-list 'load-path "~/.emacs.d/.local/packages/elpa/posframe-20190520.58")

(require 'ivy)
(ivy-mode +1)

(require 'ivy-posframe)
(setq ivy-display-function #'ivy-posframe-display)
(setq confirm-nonexistent-file-or-buffer t)
(ivy-posframe-enable)

具体表现是, C-x C-f new-file 之后, 回车键没有作用. 不管敲多少次都不行. 使用 C-M-j 可以直接创建新文件.

如果将配置中 (setq confirm-nonexist-file-or-buffer t) 去掉, C-x C-f new-file 之后, 使用一个回车就可以创建新文件了.

或者, 如果不使用 ivy-posframe, 去掉相关配置, 保留 (setq confirm-nonexist-file-or-buffer t), C-x C-f new-file 之后, 第一个回车会在 minibuffer 出现一个 (confirm) 的提示,这时候再次回车也能正常创建新文件.

但是这两个配置合起来就出现无法正常创建新文件的情况了.

看来是 ivy-posframe 的问题, 版本更新到 20190601 之后, 这个问题消失了. 同时另一个令人困扰的问题也好了.

1 个赞