「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
emacs-starter-kit: https://github.com/technomancy/emacs-starter-kit
blog::2310: http://blog.2310.net/archives/94
GNU Emacs Lispリファレンスマニュアル:
Emacsテクニックバイブル ~作業効率をカイゼンする200の技~ | |
るびきち 技術評論社 2010-08-03 売り上げランキング : 13403 Amazonで詳しく見る |
「Emacsのtips的なもの」に戻る |
---|
0 件のコメント:
コメントを投稿