2013年3月12日火曜日

emacsでJavaのコードを補完する方法

1. 環境
CentOS 5.9(final) 64bit
emacs 23.4.1

2. yasunipetインストール
git clone https://github.com/capitaomorte/yasnippet
mv yasnippet/ ~/.emacs.d/site-lisp/
mkdir ~/.emacs.d/snippets
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)
emacsを再起動して完了

3. auto-completeインストール
wget http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.zip
unzip auto-complete-1.3.1.zip
mkdir -p ~/.emacs.d/site-lisp/auto-complete-1.3.1
cd auto-complete-1.3.1
make
make install
Install to: で入力を求められたら以下を指定
~/.emacs.d/site-lisp/auto-complete-1.3.1
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/auto-complete-1.3.1")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/site-lisp/auto-complete-1.3.1/ac-dict")
(ac-config-default)
(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)
(setq ac-menu-height 10)
ac-menu-heightの値が大きすぎるとターミナルのサイズが小さい時にポップアップがターミナルのサイズをオーバーして表示されないことがあるのであまり大きくしないようにする
emacsを再起動して完了

4. ajc-java-completeインストール
git clone git://github.com/emacs-java/auto-java-complete.git
mv auto-java-complete/ ~/.emacs.d/site-lisp/
cd ~/.emacs.d/site-lisp/auto-java-complete/
wget https://github.com/emacs-java/auto-java-complete/archive/0.2.8.zip
unzip 0.2.8
mv auto-java-complete-0.2.8/ ~/.emacs.d/site-lisp/auto-java-complete
cd ~/.emacs.d/site-lisp/auto-java-complete
cp auto-java-complete/popup.el auto-complete-1.3.1/popup.el
※このpopup.elのコピーを実施しないとメソッドの補完が実施されません
javac Tags.java
java Tags
実行が完了すると ~/.java_base.tag が作成されます
bunzip2 java_base2.tag.bz2
mv java_base2.tag ~/.java_base.tag
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/auto-java-complete")
(require 'ajc-java-complete-config)
(add-hook 'java-mode-hook 'ajc-java-complete-mode)
(add-hook 'find-file-hook 'ajc-4-jsp-find-file-hook)
emacsを再起動して完了

5. 動作確認
emacsでJavaファイルを開きクラス名やパッケージ名を入れていくと自動でポップアップし
補完されるはずです
Tagsクラスに追加したライブラリのパスを通してを再度実行すると .java_base.tag が再生成され
補完したいクラス名を増やすことができます
ex) java -cp ".:/usr/local/java/jdk/jre/lib/rt.jar"  Tags


P.S Tagsを再生成するシェルスクリプトを作ってみた
#!/bin/sh

AUTO_JAVA_COMPLETE_PATH=/root/.emacs.d/site-lisp/auto-java-complete
if [ -d ${AUTO_JAVA_COMPLETE_PATH} ]
then
 cd ${AUTO_JAVA_COMPLETE_PATH};
 java -cp $CLASSPATH Tags;
else
 echo "[ERROR] Do not exist the path of ${AUTO_JAVA_COMPLETE}."
 exit 1;
fi
cd /usr/local/sbin/
touch ajc_tags.sh
chmod 744 ajc_tags.sh
emacs ajc_tags.sh
上記を記載
ajc_tags
を実行するとサジェストしてくれるライブラリを追加することができます
※CLASSPATHに追加したいライブラリのjarファイルを追記しておく必要があります

0 件のコメント:

コメントを投稿