Emacs上安装JDEE后Auto-complete失效问题的解决方法

本人只懂一些elisp的皮毛,并没有真正学习过elisp.所以本文所述方法实质并非通过分析Auto-complete的代码所得.所以我也说不出什么原理来.不过,至少我可以告诉你,我如下这样的配置中,本文所述方法有效.

GNU Emacs 24.3.1

jdee-2.4.1

auto-complete-1.5.0

  auto-complete与jdee的安装及其本设置,这里就不再冗述了.这里只提醒一下,auto-complete的配置应该在jdee前.

一 Auto-Complete弹不出补全的选择窗口

基本配置都写到.emacs文件后.我遇到了第一个问题,Auto-Complete弹不出补全的选择窗口.该问题的解决方法,我在stackoverflow上找到了:

http://stackoverflow.com/questions/11715296/emacs-auto-complete-dont-work-with-jde

简单来说,解决方法就是在jdee的配置中加入 (push 'jde-mode ac-modes) 这一句,如下: 

(add-to-list 'load-path (concat jdee-full-path "/lisp"))
(require 'jde)
(push 'jde-mode ac-modes)

这样弹不出补全的选择窗口就解决了.我认为问题的成因在于:JDEE运行在jde-mode上,而auto-complete的默认并没有监听jde-mode,所以会有弹不出补全的选择窗口的问题.现在向监听列表ac-modes追加上jde-mode,因而问题解决.


二 java-mode这个dictionary文件没有生效

  举个例子,我想在某个新的Java源文件中定义第一个类.当我输入"pub"时,自动弹出的Auto-Complete选择窗口却没有"public"这个选项.除非我在文件的其它地方已经输入了一个"public",这样才会有"public"这个选项出现在Auto-complete选择窗口.我知道Auto-complete中与Java相关的补全词是定义在 [Auto-Complete工程根目录]/dict/java-mode 文件中的.所以该文件中找了几个词试了试,结果都有上述问题.因为不懂elisp的调试,这个问题折腾了我好久.后来,抱关试一试的心态,作了如下的操作:备份原来的java-mode文件,然后把java-mode的文件名改为jde-mode.结果,问题解决了.

  我认为问题的成因在于:JDEE运行在jde-mode上,而java-mode文件中的数据只会在java-mode生效时才会导入.一言概之,Auto-Complete在什么[***]-mode下,就会导入[***]-mode文件中的数据.所以新增一个jde-mode文件即可解决问题.

转载于:https://my.oschina.net/daoren/blog/480642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值