三月 26, 2009

Update auto-complete candidates dynamically

前面对auto-complete的配置有问题,即使用F1开启自动补全功能后,候选列表不会随着输入自动更新,要连续按F1才行。使用如下配置,可以使候选列表在一次补全期间自动更新。

(setq ac-auto-start nil)
(defun wl-ac-start ()
  (interactive)
  (setq ac-auto-start 6)
  (ac-start))
(defadvice ac-cleanup (after wl-ac-cleanup ())
  (setq ac-auto-start nil))
(ad-activate 'ac-cleanup)
(define-key global-map (kbd "<f1>") 'wl-ac-start)

自动补全功能入口改为自定义的函数wl-ac-start,在这个函数里,ac-auto-start变量的值被设置为6,即当输入字符达到6个时显示候选列表。当本次自动补全完成后,ac-cleanup函数会清理现场,而自定义的advice wl-ac-cleanup会在它运行后将ac-auto-start设置nil,这样自动补全功能就被关闭了。

6 条评论:

时间 4:34 下午 , Blogger ^_^ Li 说...

你的那个tags-completion-table是在哪里定义的?
怎么没找到呢?

 
时间 6:08 下午 , Blogger netcasper 说...

etags.el
你有没有(require 'etags)?

我的代码是最近从CVS拿下来的,也许是新写的也说不定。

 
时间 8:33 上午 , Blogger ^_^ Li 说...

我没用etags,不过看到wiki上面用gtags的,试验了一下,感觉也还好。

 
时间 2:37 上午 , Anonymous zhangda 说...

请问你是怎么在blog中让lisp code的缩进正确显示的?

欢迎到我的Emacs blog上看看:
zhangda.wordpress.com

 
时间 9:31 上午 , Blogger netcasper 说...

我一般是复制到*scratch* buffer里面然后untabify一下,不知道你是不是遇到了TAB的问题。

 
时间 1:56 上午 , Blogger Seagle 说...

(setq ac-auto-start nil)
(global-set-key "\M-/" 'ac-start)
(define-key ac-complete-mode-map "\M-/" 'ac-stop)
现在之需要这样就可以了 :)

 

发表评论

指向此帖子的链接:

创建链接

<< 主页