2010/11/24

Emacs設定ファイルのディレクトリを取得し、変数に入れる(ファイル自身のディレクトリ名を取得)

「Emacsのtips的なもの」に戻る

Release:1.0
Date:November 24, 2010
テスト環境
OS: Ubuntu10.10

GNU Emacs 23.1.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)

はじめに

私がemacsを使い始めた頃(といってもまだ4ヶ月ですが)、 emacs-starter-kit を入れて使っていました。
今は半分も使っていませんが、とにかくそのコードに
(setq dotfiles-dir (file-name-directory
                    (or (buffer-file-name) load-file-name)))
というものがあり、Emacsを勉強している最中なので、このコードはいったいどういう
働きをするもんなんだ? と思ったのです。
調べてみたところ、「ファイル自身のディレクトリ名を取得するもの」だとわかり、
便利だなぁと思ったので、ブログに設定をメモしておきます。


load-file-name と file-name-directory

■load-file-name

これは「自分自身のファイル名を取得する」ものだそうです。(マクロ?)

詳細は blog::2310 さんのサイトにをご覧ください。

Note

(setq this-file-name load-file-name)
–> this-file-nameには’/home/hoge/hoge.el’が代入される

■file-name-directory

これは「ファイル名のディレクトリ部分を返す」という関数です。

詳細は、 GNU Emacs Lispリファレンスマニュアル に書いてありました。

Note

(file-name-directory “lewis/foo”) ; UNIXの例
=> “lewis/”

結果

これらを統合した自分のelispは下記になります。

;; .emacs.d/init.d のパスをditfiles-dirに格納
;;■参考
;;(shell-command "x-www-browser http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_383.html")
;;(shell-command "x-www-browser http://blog.2310.net/archives/94")
;;■引用
;;(shell-command "x-www-browser https://github.com/zahardzhan/emacs-starter-kit/blob/master/init.el")
(setq dotfiles-dir (file-name-directory (or load-file-name (buffer-file-name))))

;; それぞれのディレクトリに変数を代入
(setq package-user-dir (concat dotfiles-dir "elpa/"))
(setq init-dir (concat dotfiles-dir "initialize/"))
(setq vendor-dir (concat dotfiles-dir "vendor/"))

;; pathを通す
(add-to-list 'load-path dotfiles-dir)
(add-to-list 'load-path init-dir)
(add-to-list 'load-path vendor-dir)

使い方は、簡単で、

(add-to-list 'load-path (concat vendor-dir "auto-complete"))

などとして、concatで結合してあげれば、見やすく間違いの少ないコードになったような気がします。

参考・引用

Note

blog::2310: http://blog.2310.net/archives/94
GNU Emacs Lispリファレンスマニュアル:
Emacsテクニックバイブル ~作業効率をカイゼンする200の技~
Emacsテクニックバイブル ~作業効率をカイゼンする200の技~るびきち

技術評論社 2010-08-03
売り上げランキング : 13403


Amazonで詳しく見る

「Emacsのtips的なもの」に戻る

0 件のコメント:

コメントを投稿