Emacs 30.1 引入了 completion-preview-mode,相比 company 或 corfu,它所使用的行内补全更加简单,用于比较简单的场景比较方便,比如 Org-mode 的关键字补全。
但是,在 Org-mode 中直接开启 completion-preview-mode 无法生效,Org-mode 使用 org-self-insert-command 取代了 self-insert-command 导致无法触发 completion-preview-mode。以下帖子的解决方法可用:
(setq-local completion-preview-commands
'(;; self-insert-command
org-self-insert-command
insert-char
;; delete-backward-char
org-delete-backward-char
backward-delete-char-untabify
analyze-text-conversion
completion-preview-complete))

4 个赞
我一般用C-c C--来插入这些src/quote/example之类的。
1 个赞
默认情况下一下就补全完了,对 #+begin_xxx 不会中途补全到 _ 再进行二次选择。
看了下注释随便糊了个支持选择候选项的配置,这个配置只能说能用:
(add-hook
'org-mode-hook
(defun yy/set-completion-preview ()
(completion-preview-mode)
(let ((kmap (make-sparse-keymap)))
(keymap-set kmap "C-i" #'completion-preview-insert)
(keymap-set kmap "M-i" #'completion-preview-complete)
(keymap-set kmap "C-n" #'completion-preview-next-candidate)
(keymap-set kmap "C-p" #'completion-preview-prev-candidate)
(keymap-set kmap "C-f" #'completion-preview-insert-word)
(setq-local completion-preview-active-mode-map kmap))
(setq-local completion-preview-commands
'(;; self-insert-command
org-self-insert-command
insert-char
;; delete-backward-char
org-delete-backward-char
backward-delete-char-untabify
analyze-text-conversion
completion-preview-complete))))
C-f 可以移动到以 word 为单位的分隔,C-n 和 C-p 切换候选词。
1 个赞
completion-preview-mode 与 company-mode 按键不兼容吧。如果要启用这两个包该如何配置了?
我在 Org-mode 不使用补全,所以仅仅使用 completion-preview-mode 没有碰到这个问题。说到底这两个都是补全前端,选一个用就行。
在什么情况下,会需要同时使用它们呢?