自动完成和camelcase

时间:2010-12-08 04:35:42

标签: emacs autocomplete

如果我使用Meta-/自动填充ThisClass等字词,则emacs会感到困惑并向我提供THISCLASSthisclass。更糟糕的是,如果我输入ThisC然后自动填充,则会Thisclass,这非常令人沮丧。

有没有办法修改此行为?

3 个答案:

答案 0 :(得分:8)

除了hippie-expand之外,您还可以通过自定义以下变量来实现dabbrev所需的行为:

dabbrev-case-fold-search is a variable defined in `dabbrev.el'.
Its value is nil

  This variable is potentially risky when used as a file local variable.

Documentation:
Control whether dabbrev searches should ignore case.
A value of nil means case is significant.
A value of `case-fold-search' means case is significant
 if `case-fold-search' is nil.
Any other non-nil version means case is not significant.

You can customize this variable.

答案 1 :(得分:7)

是的,请使用hippie-expand

(global-set-key (kbd "M-/") 'hippie-expand)

查看其中的wiki page和简洁manual page for it

hippie-expanddabbrev M - / 的默认绑定)类似,但增加了更多功能,并且在此过程中修复了您指出的camelcase问题。

答案 2 :(得分:1)

虽然修改搜索行为是解决问题的一种方法,但另一种可能更好的方法是保持搜索行为不变,而是修改替换行为。

要完成此操作,请设置变量     dabbrev情况下替换 没有。

这种方式可能更好,因为即使您键入的内容不正确,它仍然会正确匹配,然后完成到正确的大小写。

示例:假设您有变量“aVariable”。如果更改搜索行为(将dabbrev-case-fold-search设置为nil),则键入“av”将与您的变量不匹配。但是,如果您改为替换行为(将dabbrev-case-replace设置为nil),则键入“av”将扩展为“aVariable”。

参考:http://www.gnu.org/software/emacs/manual/html_node/emacs/Dabbrev-Customization.html