[版本问题] emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突

Vim、Emacs配置和使用
回复
bluebirdshao
帖子: 186
注册时间: 2007-11-26 12:05

[版本问题] emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突

#1

帖子 bluebirdshao » 2012-12-22 18:02

首先,我从 auto-complete 的官网下载了最新 auto-complete 并按照 README 配置好
http://cx4a.org/software/auto-complete/
此时在 emacs 上使用 TAB 按键进行补全一切正常

然后我又根据提示使用 git 下载了最新的 yasnippet 。
git clone https://github.com/capitaomorte/yasnippet
同样根据上面的提示配置好了 yasnippet

然后就是恶梦的开始了,原本工作得好好的 TAB 键被 yasnippet 抢劫了,
现在 auto-complete 无法使用 TAB 键来进行补全了。

查看了下 plugins 下的 auto-complete-config.el 文件,有清楚地写着
;; yasnippet
的代码,可是为什么还是产生冲突了呢

求最优解决方案,最好就是 TAB 键同时能够应付这两种最需要的功能。

已解决:见 4 楼。

:em11
上次由 bluebirdshao 在 2012-12-22 20:45,总共编辑 3 次。
bluebirdshao
帖子: 186
注册时间: 2007-11-26 12:05

Re: Help: emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突,如何最优

#2

帖子 bluebirdshao » 2012-12-22 18:05

将配置文件上的内容贴上:
auto-complete

代码: 全选

;; Auto-Complete-Mode
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/plugins/ac-dict")
(ac-config-default)
yasnippet

代码: 全选

(add-to-list 'load-path
              "~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas/global-mode 1)
都是 README 文件上标准配置。
求解!
gy619
帖子: 237
注册时间: 2011-10-11 10:16

Re: Help: emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突,如何最优

#3

帖子 gy619 » 2012-12-22 18:26

ac 里面优先yas, 这样是最佳设置. 举例:输入defun, 按下tab触发ac, 如果defun这个关键词,刚好yas也定义了,则按tab的时候,第一个出来的是yas的定义,后面的是ac的定义.
解决方法:设置ac的规则.
bluebirdshao
帖子: 186
注册时间: 2007-11-26 12:05

Re: Help: emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突,如何最优

#4

帖子 bluebirdshao » 2012-12-22 19:08

原来是 auto-complete 的源代码还未正确支持 yasnippet 0.8.0 的版本,
仅仅还只是支持 yasnippet 0.6.0 的版本。
我在 auto-complete 1.3.1 版本中看到这么一段代码:

代码: 全选

             (if (fboundp 'yas/snippet-table)
                 ;; <0.6.0
                 (yas/snippet-table major-mode)
               ;; 0.6.0
               (yas/current-snippet-table))))
具体未考究,说明 auto-complete 支持的最高版本是 yasnippet 0.6.0 版本,

只好乖乖使用 0.6.0 版本的 yasnippet 了。

问题解决。
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: Help: emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突,如何最优

#5

帖子 Fermat618 » 2012-12-23 11:47

bluebirdshao 写了:原来是 auto-complete 的源代码还未正确支持 yasnippet 0.8.0 的版本,
仅仅还只是支持 yasnippet 0.6.0 的版本。
我在 auto-complete 1.3.1 版本中看到这么一段代码:

代码: 全选

             (if (fboundp 'yas/snippet-table)
                 ;; <0.6.0
                 (yas/snippet-table major-mode)
               ;; 0.6.0
               (yas/current-snippet-table))))
具体未考究,说明 auto-complete 支持的最高版本是 yasnippet 0.6.0 版本,

只好乖乖使用 0.6.0 版本的 yasnippet 了。

问题解决。
好办法
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
gy619
帖子: 237
注册时间: 2011-10-11 10:16

Re: [版本问题] emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突

#6

帖子 gy619 » 2012-12-23 13:11

搞不明白,怎么ac 和yas都用这么旧的版本呢?
ac 目前1.4了.
yas 目前0.8了.
bluebirdshao
帖子: 186
注册时间: 2007-11-26 12:05

Re: [版本问题] emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突

#7

帖子 bluebirdshao » 2012-12-23 16:18

因为是从官网 http://cx4a.org/software/auto-complete/
下载的 Last Stable v1.3.1
Eastsun
帖子: 389
注册时间: 2010-05-18 14:18

Re: [版本问题] emacs 上的 auto-complete 和 yasnippet 的 TAB 按键冲突

#8

帖子 Eastsun » 2012-12-31 1:00

这个问题折腾了我好一段时间。

后来发现stable版本不够新,要下载daily build版,一切ok。
回复