在Windows 7上使用GNU emacs 24.3
我发现了dabbrev-expand和dabbrev-completion这几个词似乎并不一致。例如,如果我输入:
chars_CHA C-M-/
将会显示“未找到匹配项”的消息(来自dabbrev-completion)。
然而,如果我然后运行dabbrev-expand(M- /,我认为,我没有使用这些绑定中的任何一个),它将循环完成一些完成; chars_CHARS,chars_CHARIZARD,chars_charslower等
不应该dabbrev-completion提供完成列表,而不是在dabbrev-expand可以找到多个匹配时告诉我不匹配?在大多数情况下,dabbrev-completion按预期运行并显示完成窗口。
编辑:dabbrev-completions文档建议的前缀参数似乎都没有帮助(或相关,因为当前缓冲区中可能会发生缺失的完成)。
答案 0 :(得分:0)
这两个命令的doc字符串告诉你dabbrev-expand
看起来也是"
由变量指出的函数接受的缓冲区
dabbrev-friend-buffer-function
",如果您使用前缀arg,则dabbrev-completion
只执行 >。因此,如果您希望它的行为类似,请尝试使用后者的前缀arg。
更新,回复您的评论:
如果C-u C-u
没有帮助,那么搜索所有缓冲区都无济于事。既然你说那些候选者出现在同一个缓冲区中,那么这就无关紧要了。
(您可以检查dabbrev-case-fold-search
,dabbrev-upcase-means-case-search
,dabbrev-case-distinction
和dabbrev-case-replace
的值。但是如果调试,您将看到是否存在任何问题(见下)。)
您可以通过加载dabbrev.el
(不是dabbrev.elc
)和执行M-x debug-on-entry RET dabbrev-completion RET
来调试实际发生的事情。
IOW,除非别人看到明显的东西,否则你需要了解为什么你的背景有所不同。