dabbrev-expand和dabbrev-completion不一致?

时间:2014-03-28 22:14:42

标签: emacs emacs24

在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文档建议的前缀参数似乎都没有帮助(或相关,因为当前缓冲区中可能会发生缺失的完成)。

1 个答案:

答案 0 :(得分:0)

这两个命令的doc字符串告诉你dabbrev-expand看起来也是" 由变量指出的函数接受的缓冲区 dabbrev-friend-buffer-function ",如果您使用前缀arg,则dabbrev-completion只执行 >。因此,如果您希望它的行为类似,请尝试使用后者的前缀arg。


更新,回复您的评论:

如果C-u C-u没有帮助,那么搜索所有缓冲区都无济于事。既然你说那些候选者出现在同一个缓冲区中,那么这就无关紧要了。

(您可以检查dabbrev-case-fold-searchdabbrev-upcase-means-case-searchdabbrev-case-distinctiondabbrev-case-replace的值。但是如果调试,您将看到是否存在任何问题(见下)。)

您可以通过加载dabbrev.el(不是dabbrev.elc)和执行M-x debug-on-entry RET dabbrev-completion RET来调试实际发生的事情。

IOW,除非别人看到明显的东西,否则你需要了解为什么你的背景有所不同。