看了一下 company 的源码, 把下面四句加入大家的配置文件中, 就可以让 company 补全 dabbrev-expand 的内容:
(require 'company-dabbrev)
(push 'company-dabbrev company-backends)
(setq company-dabbrev-char-regexp "[\\.0-9a-z-_'/]") ;adjust regexp make `company-dabbrev' search words like `dabbrev-expand'
(setq company-dabbrev-code-other-buffers 'all) ;search completion from all buffers, not just same mode buffers.
最为关键的是后面两句:
(setq company-dabbrev-char-regexp "[\\.0-9a-z-_'/]")
(setq company-dabbrev-code-other-buffers 'all)
company-dabbrev-char-regexp 默认的正则表达式是 \sw , 意味着只能匹配单词才能补全, 我重新定制成 [\.0-9a-z-_'/] , 增加搜寻的范围
company-dabbrev-code-other-buffer 设置成 'all 的意思是像 dabbrev-expand 那样搜索所有 buffer 的内容, 而不仅仅是和当前模式相同的buffer里面去搜索.
最后来一张效果图:
更多参考配置可以查看: EmacsWiki: init-company-mode.el