2010年2月4日

Daredevil SKK 14.0.90 を .emacs.d 以下にインストール

最初に APEL をインストールします。make してからインストール先を確認。実際にインストールの手順で実施しています。インストール前にいろいろ確認するのが好みなので。

curl -O http://kanji.zinbun.kyoto-u.ac.jp/~tomo/lemi/dist/apel/apel-10.7.tar.gz
tar xvfz apel-10.7.tar.gz
cd apel-10.7
make LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make what-where LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make install LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info

Daredevil SKK 14.0.90 を取得します。

curl -O http://openlab.ring.gr.jp/skk/maintrunk/ddskk-14.0.90.tar.gz
tar xvfz ddskk-14.0.90.tar.gz
curl -O http://openlab.jp/skk/dic/SKK-JISYO.L.gz
gunzip SKK-JISYO.L.gz
cd ddskk-14.0.90
mv ../SKK-JISYO.L dict

設定ファイルを修正します。

vi SKK-CFG
(add-to-list 'load-path "~/.emacs.d/lisp/emu")
(add-to-list 'load-path "~/.emacs.d/lisp/apel")
(setq APEL_DIR "~/.emacs.d/lisp/apel")
(setq EMU_DIR "~/.emacs.d/lisp/emu")
(setq SKK_DATADIR "~/.emacs.d/share/skk")
(setq SKK_INFODIR "~/.emacs.d/share/info")
(setq SKK_LISPDIR "~/.emacs.d/lisp/skk")
(setq SKK_SET_JISYO t)

インストールします。

make LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make what-where LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make install LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info

設定するならとりあえず init.el に以下を記述しておきます。こまかい設定は info を読んだ方が正確です。

;; 以下を記述するだけで必要な物は全部ロードする
(require 'skk-autoloads)
;; Emacs の起動時に必要な物をロードすることで、SKK の初回起動を速くする
(setq skk-preload t)

以上です。

2010年1月20日

AUCTeX 11.85 を .emacs.d 以下にインストール

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

bitbucket にて sakito の .emacs.d を公開

ちょっと公開までに時間かけちゃった。もうすこしスムーズにやりたい。 http://bitbucket.org/sakito/dot.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 に書く内容で、 includeexcluderename があります。この例では各ディレクトリのみ 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 に追加したくない場合は以下の制限を利用すれば良いでしょう。

  • 英数字以外で始まるディレクトリは読み込まない
  • RCSCVS という名前のディレクトリは読み込まない
  • .nosearch というファイルを含むディレクトリは読み込まない

例えば、フォルダの名前の先頭に「_(アンダーバー)」や「.(ピリオード)」を付与すれば良いでしょう。

さて、.emacs.d 内のディレクトリ構成をどうするかは悩みの種のようです。あまり共通化されていない様子。

~/
  .emacs.d/
    init.el

までは定型として、その下にどのようにディレクトリ構成を切るか、ということです。

最低限必要そうなのは以下のディクトリでしょうか。

  1. init.el を分割した、初期設定ファイル
  2. 他者配布の Emacs Lisp 類
  3. 自分作成の 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
     … キャシュファイルやバックアップファイル用

参考サイト