You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Emacs的completing-read在输入时立即显示*Completions*缓冲区

解决completing-read不显示补全选项的问题

问题根源

你的代码语法本身没有问题,不显示补全列表是因为Emacs默认的补全触发逻辑或配置导致的,并非代码逻辑错误。

快速解决方式

1. 手动触发补全

在输入提示界面,按下TAB键即可立刻显示所有可选补全项;输入部分字符(比如"F")后按TAB,会自动过滤出匹配的选项(比如"First")。

2. 配置自动补全

如果想要输入时自动弹出补全列表,把以下配置添加到你的Emacs配置文件(如~/.emacs或~/.emacs.d/init.el)中,重启Emacs后生效:

;; 设置补全样式为flex,支持模糊匹配
(setq completion-styles '(flex))
;; 开启输入时自动更新补全列表
(setq completions-auto-update t)
;; 指定补全函数,确保使用能显示列表的实现
(setq completion-in-region-function #'completion--in-region)

验证效果

配置完成后,运行你的原函数:

(defun reader ()
  (interactive)
  (let ((choices '("First" "Second" "Third")))
    (completing-read "Choose: " choices)))

调用M-x reader,输入"F"就会自动弹出匹配的"First"选项,无需手动按TAB触发。


内容的提问来源于stack exchange,提问作者RubyNoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:00:11