Emacs, global/gtags の前に、シェルとのPATH共有

By | 2013 年 3 月 18 日

gnu emacs © by Noah Sussman

Emacs標準のタグジャンプ機能ははetags.el
でもgtagsを使う。使いたい。



書籍:Emacs実践入門

にはcurlコマンドでインストールの方法が書かれてるが、せっかくhomebrewを入れたのでbrewでインストール
homebrewでインストールするには「brew install global」と打てばよい。

以下、色々と参考にしたサイト


gtags.elのインストール
gtags.elが
brewでインストールの場合は以下にある
/usr/local/Cellar/global/6.2.4/share/gtags/

これを
~/.emacs.d/elisp
へコピーしておく


gtagsの実行

▼TAGファイルの生成
タグ解析を行いたいディレクトリで

を実行
→ソースコードの解析とタグの生成が行われる(GTAGS, GRTAGS, GPATHが生成される)

ちなみに、gtags (GNU Global)が対応しているのはC, C++, Yacc, Java, PHP4。(Objective-Cは非対応!)
ちなみに、gtags実行したディレクトリで”htags”を実行すると、HTMLファイルが生成される。

▼関数定義へのジャンプ
Emacsへの設定

[M-t]で関数定義へジャンプ!しようとすると、メッセージが出て実行できない
*Messages*バッファで見てみると以下のように出ている(XXXはジャンプしようとした関数名)

これはおかしい。

shell上からglobal, gtagsコマンドは使用可能。
emacsから見えていない?

ちゃんとあるんですが・・・

http://www.machu.jp/diary/20090307.html#p01
>使い方 (2) – コマンドラインから使う

を参照しながら、rubyのコード落としてきて動かしてみる。global単体で動作することを確認。

[brew cleanup global] で古いパッケージを削除 →6.2.8が最新。6.2.7以下がいくつか残っていたのを削除。

→変わらずemacs上からは
Searching XXX …
if: Searching for program: No such file or directory, global
となる。

Emacs上で
M-x getenv RET で“PATH” としてみると、

ターミナル上で printenv としてみると

→emacs上からだと /usr/local/bin が出てこない?
これをターミナル上からのと一緒にするには?

やはりPATHがシェルからのと違う。 <*scratch*>で。

>・シェルと Emacsの PATHを共有する – Life is very short

これの方法を試す。
~/.bash_profile へ以下を記述追加

.emacs.d/init.el へ以下を追加

これで、~/.emacs.d/shellenv.el をEmacs起動時に読み込み、PATHが共有される。
この後にサンプルのcコードでgtagsが使えた!

…ここまでやったところでgithubのemacs-jpにも同じ話題が上がっていたことに気づく。。
ここでやった方法も書かれている。

Emacsにシェルの環境変数を取り込む · Issue #18 · emacs-jp/emacs-jp.github.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です