curl -O http://ftp.gnu.org/pub/gnu/auctex/auctex-11.85.tar.gz
tar xvfz auctex-11.85.tar.gz
cd auctex-11.85
./configure --prefix=$HOME/.emacs.d --with-lispdir=$HOME/.emacs.d/lisp
make
make install
2010年1月20日
AUCTeX 11.85 を .emacs.d 以下にインストール
permalink
投稿者
sakito
bitbucket にて sakito の .emacs.d を公開
2010年1月13日
Snow Leopard で Python 2.6.4 を Build する
Python 2.6.4 の Snow Leopard でのビルド手順メモ。
SQLite のコンパイル。Snow Leopard には最初から SQLite インストールされているけれど、fts3が有効になってないので、有効にしたものをビルド。
curl -O http://www.sqlite.org/sqlite-3.6.22.tar.gz
tar xvfz sqlite-3.6.22.tar.gz
cd sqlite-3.6.22
CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure
make
sudo make install
readline6 のビルド。
curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.1.tar.gz
./configure MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS=“-arch i386 -arch x86_64” LDFLAGS=“-Wall -arch i386 -arch x86_64”
make
sudo make install
Python のビルド。
curl -O http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2
tar xvfj Python-2.6.4.tar.bz2
cd Python-2.6.4
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS="-I/usr/include -I/usr/local/include -I/sw/include" LDFLAGS="-L/usr/lib -L/usr/local/lib -L/sw/lib"
make
find . -name readline.so
sudo make install
以下のようなエラーがなら問題ないです。必要なモジュールが不足しているなら追加でなんとかしてください。
Failed to find the necessary bits to build these modules:
_bsddb dl gdbm
imageop linuxaudiodev ossaudiodev
spwd sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
ついでなので mod_wsgi もビルド。
curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.1.tar.gz
tar xvfz mod_wsgi-3.1.tar.gz
cd mod_wsgi-3.1
./configure
make
sudo make install
sudo apachectl restart
2010年1月11日
convert と filemap を利用した hg リポジトリの分割と統合
リポジトリの分割や統合を実施したい場合があります。 これは hg convert --filemap を利用します。
分割は以下の例です。ポイントは filemap に書く内容で、 include 、 exclude 、 rename があります。この例では各ディレクトリのみ include していますが、複数のディレクトリを include して分割なんてこともできます。
rename の名前でカレントディレクトリに リポジトリが作成されます。元のリポジトリが壊れるわけではありませんが、注意して作業してください。
また分割が終了したら hg update を忘れないでください。
% mkdir -p repo/foo repo/bar
% cd repo
% hg init
% ls -FA
.hg/ bar/ foo/
% ls -R repo
bar foo
repo/.hg/store:
repo/bar:
repo/foo:
% echo "include foo\nrename foo ." > map-foo.txt
% echo "include bar\nrename bar ." > map-bar.txt
% hg convert --filemap map-foo.txt repo foo
% hg convert --filemap map-bar.txt repo bar
% ls -AF foo bar
bar:
.hg/
foo:
.hg/
% cd bar
% hg update
% cd ../foo
% hg update
統合は以下のようにします。bar を foo のサブディレクトリとして統合してみます。
% ls -AF foo bar
bar:
.hg/
foo:
.hg/
% echo "rename . bar" > map-sub.txt
% hg convert --filemap map-sub.txt bar foo
% cd foo
% hg update
log を引き継いで統合されます。
2010年1月6日
howm-1.3.8 を .emacs.d 以下にインストール
curl -O http://howm.sourceforge.jp/a/howm-1.3.8.tar.gz
tar xvfz howm-1.3.8.tar.gz
./configure --with-lispdir=$HOME/.emacs.d/lisp --with-docdir=$HOME/.emacs.d/share/howm --with-extdir=$HOME/.emacs.d/bin
2009年12月28日
.emacs.d の利用
Emacs 22 以上であれば通常 ~/.emacs.d 以下に設定ファイルやライブラリ類を集めるのが良いです。
~/.emacs.d を利用すれば .emacs や .emacs.el を作成しなければ ~/.emacs.d/init.el を利用することができます。
ライブラリ類を集めようとすると、ディレクトリを作成することが多いと思いますが、そのままだと load-path が通りません。
例えば .emacs.d/lisp に load-path を通したい場合は以下のようにすると良いでしょう。
(let ((default-directory (expand-file-name "~/.emacs.d/lisp")))
(add-to-list 'load-path default-directory)
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(normal-top-level-add-subdirs-to-load-path)))
normal-top-level-add-subdirs-to-load-path はディレクトリ内のサブディレクトリを load-path に追加します。
ディレクトリ内に置いておきたいが、 load-path に追加したくない場合は以下の制限を利用すれば良いでしょう。
- 英数字以外で始まるディレクトリは読み込まない
- RCS や CVS という名前のディレクトリは読み込まない
- .nosearch というファイルを含むディレクトリは読み込まない
例えば、フォルダの名前の先頭に「_(アンダーバー)」や「.(ピリオード)」を付与すれば良いでしょう。
さて、.emacs.d 内のディレクトリ構成をどうするかは悩みの種のようです。あまり共通化されていない様子。
~/
.emacs.d/
init.el
までは定型として、その下にどのようにディレクトリ構成を切るか、ということです。
最低限必要そうなのは以下のディクトリでしょうか。
- init.el を分割した、初期設定ファイル
- 他者配布の Emacs Lisp 類
- 自分作成の Emacs Lisp 類
1 に使えそうな名前は以下な感じでしょうか。
- pref
- prefs
- conf
- site-start.d
- init.d
- rc.d
2、3 に使えそうな名前は以下な感じでしょうか。
- elisp
- lisp
- site-lisp
- vendor
- plugin
- lib
- libs
以下は個人的な選択方法。
init.d だと補完の時に init.el と重なるのであまり便利ではないですね。rc.d も Emacs Lisp を入れるディレクトリ名としては微妙な気がします。
pref や conf は Emacs 関連の文書にほとんど出てこないようです。 pref だと prefix、conf は cond と微妙にぶつかるからかもしれません。
elisp という名前は Elisp というプログラミンング言語が別にあるので避けています。 site-lisp という名前にすると Emacs Lisp を make でインストールする時に prefix 指定するだけでインストールできるので楽だったので、site-lisp が良いかなーと思ったのですけど、 init.el と init.d みたいに site-start.d とぶつかるのですよね。
ということで、今の所以下のような構成にしてみています。.emacs.d だけコピーするとほとんどの環境で同じに動作することを想定しています。
まだ試行錯誤中で整理しおわったら公開しようと思います。
~/
.emacs.d/
init.el
site-start.d
init-*.el
… init.el から読みこむ起動設定ファイル
lisp
… 他者が配布している Emacs Lisp
local-lisp
… 自分で作成した Emacs Lisp やなんらかの理由で公式配布のバージョンから修正してある Emacs Lisp
private
… 公開しないファイル類など
rc.d
… zshrc 等の rc ファイルがはいっていて ln -s している。結局 Emacs との連携を考えるのでまとめた
bin
… Emacs Lisp のみから呼ぶことを想定して作成してあるスクリプト等
share
dtd
rnc
icons
skk
man
info
… Emacs Lisp が利用する固定(基本いじくらない)リソース
etc
snippets
rst
… Emacs Lisp が利用する可変(基本いじる)リソース
var
… キャシュファイルやバックアップファイル用
参考サイト
2009年12月12日
Optional Arguments と Named Arguments
オプション引数(Optional Arguments)と名前付け引数(Named Arguments)は似ているようでまったく違う機能です。
オプション引数は引数を省略可能にする機能で、名前付け引数は引数の名前を指定して値を渡すことができる機能です。
Python では
def info(text, opt=30):
print "text=%s , opt = %d" %(text, opt,)
のような関数を定義した場合、以下のような関数の呼びだしが可能です。
info('hello')
info('hello', 20)
info(opt=40, text='world')
1番目と2番目がオプション引数の例、3番目が名前付け引数の例になります。
これと同じことができる言語は、Visual Basic や OCaml、Scala( http://www.scala-lang.org/node/2075 ) 等いくつか存在しています。
オプション引数しかできない言語も結構ありますし、オプション引数すら不可能な言語もそれなりにあります。 JavaScript 2.0 なんかは草案時には名前付け引数があったのだけど、見送られた様子。
オプション引数、名前付け引数のいずれに関しても好まない人もいるようですが使い方次第だと思っています。 当然のごとく、この機能がないとしても公開する API の引数の名前や順序は明確に綺麗に書くべきだと思います。