分页: 1 / 1

emacs怎么设置象codeblock那种打到一半就自动补齐呢?

发表于 : 2008-09-03 6:57
yangcheng
主要是c, c++编辑
codeblocks中一个单词没有打完就可以弹出自动补齐的列表
我网上搜到的一些emacs的补齐都需要绑定一个键, 如何做到不用绑定特殊的按键?
谢谢

发表于 : 2008-09-03 20:22
lululau
M - /

发表于 : 2008-09-03 21:42
cvgmt
2 楼理解错 1 楼的意思吧,1 楼可是希望刚打了开头一个字母就弹出列表,随着打的字母增多,列表随之减少到只有几个选择,这个有些像 stardict 查单词

发表于 : 2008-09-08 11:42
yangcheng
恩,,cvgmt有什么好办法吗?

发表于 : 2008-09-08 12:12
oyasmi
列表的不知道,我都是按M-/,不对就继续按,轮换下一个匹配!

发表于 : 2008-09-09 10:50
zhangsong023
像你说的那种:

不带语法分析的有predict,自动补全。

带语法分析的,还没有,好在predict mode里面有一个complete ui提供了一个接口,可以结合semantic自己搞一下,不过前者有些恼人的bug。

发表于 : 2008-09-13 9:16
yangcheng
谢谢 zhangsong023

看来我目前的习惯还和emacs流派的不太一致 ,呵呵

Re: emacs怎么设置象codeblock那种打到一半就自动补齐呢?

发表于 : 2008-09-22 14:09
zhan
yangcheng 写了:主要是c, c++编辑
codeblocks中一个单词没有打完就可以弹出自动补齐的列表
我网上搜到的一些emacs的补齐都需要绑定一个键, 如何做到不用绑定特殊的按键?
谢谢
可以简单点做 . -> 这样的补齐,其他的可能不好实现。

比如说我用 xref-completion 补齐,这个本来默认是要绑定按键的,现在定义一个函数,然后将其绑定到
. > 上

代码: 全选

(defun xref-completion-self-insert (arg)                                  
  "Like `self-insert-command', but does completion afterwards.              
  ARG is passed to `self-insert-command'.  If ARG is nil,                   
  use `xref-completion' to complete."                                       
  (interactive "p")                                                         
  (self-insert-command arg)                                                 
  (xref-completion))              
然后在 c -common-mode-hook 里面绑定

代码: 全选

 (local-set-key "." 'xref-completion-self-insert)
 (local-set-key ">" 'xref-completion-self-insert
那么需要 . >自动弹出的时候就可以这样了,按照这个思路,也是可以打一部分字然后补齐的,只不过可能发现还没有不补齐好用...

不管怎么说,算一个解决方案吧...,缺点就在于任意按一个按键就会自动补齐,更多的时候会出来一些自己不想要的东西..

semantic 里面有相应的 semantic-complete-self-insert 的函数,将它绑定到一个个字母就是了,我想,要实现这个可能还需要弄一个计时这样的功能可能更好,比如在击键间隔500ms的时候自动激活这个函数,那么就不会任意敲一个字母就出来补全了。只有在停顿下来一定时间间隔,比如上文的500ms的时候才出来补全列表。关于这个应该在emacs里面能够实现,不过我没有研究过。