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

Vim、Emacs配置和使用
回复
头像
yangcheng
帖子: 498
注册时间: 2005-09-27 18:24
来自: 杭州

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

#1

帖子 yangcheng » 2008-09-03 6:57

主要是c, c++编辑
codeblocks中一个单词没有打完就可以弹出自动补齐的列表
我网上搜到的一些emacs的补齐都需要绑定一个键, 如何做到不用绑定特殊的按键?
谢谢
头像
lululau
帖子: 105
注册时间: 2007-05-28 11:17

#2

帖子 lululau » 2008-09-03 20:22

M - /
cvgmt
帖子: 322
注册时间: 2007-02-26 2:29
来自: 广东

#3

帖子 cvgmt » 2008-09-03 21:42

2 楼理解错 1 楼的意思吧,1 楼可是希望刚打了开头一个字母就弹出列表,随着打的字母增多,列表随之减少到只有几个选择,这个有些像 stardict 查单词
头像
yangcheng
帖子: 498
注册时间: 2005-09-27 18:24
来自: 杭州

#4

帖子 yangcheng » 2008-09-08 11:42

恩,,cvgmt有什么好办法吗?
头像
oyasmi
帖子: 173
注册时间: 2007-06-04 9:54
来自: 南京

#5

帖子 oyasmi » 2008-09-08 12:12

列表的不知道,我都是按M-/,不对就继续按,轮换下一个匹配!
等待青春散场;等待年华老去!
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56

#6

帖子 zhangsong023 » 2008-09-09 10:50

像你说的那种:

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

带语法分析的,还没有,好在predict mode里面有一个complete ui提供了一个接口,可以结合semantic自己搞一下,不过前者有些恼人的bug。
头像
yangcheng
帖子: 498
注册时间: 2005-09-27 18:24
来自: 杭州

#7

帖子 yangcheng » 2008-09-13 9:16

谢谢 zhangsong023

看来我目前的习惯还和emacs流派的不太一致 ,呵呵
头像
zhan
帖子: 1880
注册时间: 2005-08-15 0:04
来自: 南7技校

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

#8

帖子 zhan » 2008-09-22 14:09

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里面能够实现,不过我没有研究过。
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn
回复