Emacs 23.2 の派生版 (emacs 23.2 + cedet 1.0 + emacs-w3m) を作った。
GNU Emacs の最新版 23.2 が 5 月にリリースされた。このバージョンには CEDET が標準添付されるようになったのだが、いくつか問題がある。
そこで、オリジナルの emacs 23.2 から cedet を除外した版を作成し、emacs-w3m は最新の cvs head とマージして、自分でソースコードを管理することにした。ソースコード一式は以下の通り。
GNU Emacs 23.2 改変版
dot_emacs (cedet 含む)
http://github.com/id774/dot_emacs
インストールは以下のスクリプトを用いて ./install_myemacs.sh $HOME/local/emacs nosudo 等とすれば良い。root 権限が無い場合はホームディレクトリを prefix に指定して nosudo オプションを付与すれば sudo を利用しない。
#!/bin/sh # $1 = prefix # $2 = not use sudo setup_environment() { EMACS_VERSION=23.2 test -n "$2" || SUDO=sudo test -n "$2" && SUDO= } gitpull() { echo "Pulling $1 $3" if [ -d $HOME/local/$1/$3 ]; then cd $HOME/local/$1/$3 git pull else cd $HOME/local/$1 git clone git://github.com/$2/$3.git fi test -L $HOME/$3 && rm $HOME/$3 ln -fs $HOME/local/$1/$3 $HOME/$3 } gitpull_all() { test -d $HOME/local/github || mkdir -p $HOME/local/github gitpull github id774-2 emacs gitpull github id774-2 emacs-w3m } make_and_install() { test -n "$1" || ./configure --without-x --prefix=$HOME/local/emacs/$EMACS_VERSION test -n "$1" && ./configure --without-x --prefix=$1 make $SUDO make install } install_emacs() { test -d $HOME/local/github/emacs || exit 1 cd $HOME/local/github/emacs make_and_install $* } make_and_install_emacsw3m() { test -n "$1" || ./configure --with-emacs=$HOME/local/emacs/$EMACS_VERSION/bin/emacs test -n "$1" && ./configure --with-emacs=$1/bin/emacs make $SUDO make install } install_emacs_w3m() { test -d $HOME/local/github/emacs-w3m || exit 1 cd $HOME/local/github/emacs-w3m make_and_install_emacsw3m $* } main() { setup_environment $* gitpull_all install_emacs $* install_emacs_w3m $* } ping -c 1 -i 3 google.com > /dev/null 2>&1 || exit 1 main $*
dot_emacs は自分のものを利用すれば良いが cedet 1.0 を含めバイトコンパイルすると高速になる。また emacs-w3m の前提となる w3m が必要なので、パッケージ管理システムを利用する等して入れておく。
ついでに ruby をソースコードからビルドしている場合は、ソースコードの misc ディレクトリにある ruby-mode.el 等を利用できるようにすると良い。以下のスクリプトで ./install_emacs_ruby.sh [ruby's misc path] [emacs's site-lisp path] という風に引数を指定すると利用できる。
#!/bin/sh install_emacs_ruby() { test -n "$1" || exit 1 test -n "$1" && RUBY_MISC=$1 test -n "$2" || SITE_LISP=/usr/local/share/emacs/site-lisp test -n "$2" && SITE_LISP=$2 test -L $SITE_LISP/ruby-mode.el && sudo rm $SITE_LISP/ruby-mode.el sudo ln -s $RUBY_MISC/ruby-mode.el $SITE_LISP/ruby-mode.el test -L $SITE_LISP/ruby-style.el && sudo rm $SITE_LISP/ruby-style.el sudo ln -s $RUBY_MISC/ruby-style.el $SITE_LISP/ruby-style.el test -L $SITE_LISP/ruby-electric.el && sudo rm $SITE_LISP/ruby-electric.el sudo ln -s $RUBY_MISC/ruby-electric.el $SITE_LISP/ruby-electric.el test -L $SITE_LISP/inf-ruby.el && sudo rm $SITE_LISP/inf-ruby.el sudo ln -s $RUBY_MISC/inf-ruby.el $SITE_LISP/inf-ruby.el test -L $SITE_LISP/rubydb2x.el && sudo rm $SITE_LISP/rubydb2x.el sudo ln -s $RUBY_MISC/rubydb2x.el $SITE_LISP/rubydb2x.el test -L $SITE_LISP/rubydb3x.el && sudo rm $SITE_LISP/rubydb3x.el sudo ln -s $RUBY_MISC/rubydb3x.el $SITE_LISP/rubydb3x.el cd $RUBY_MISC test -f ruby-mode.elc && sudo rm ruby-mode.elc sudo emacs --batch --eval '(byte-compile-file "ruby-mode.el")' test -f ruby-style.elc && sudo rm ruby-style.elc sudo emacs --batch --eval '(byte-compile-file "ruby-style.el")' test -f ruby-electric.elc && sudo rm ruby-electric.elc sudo emacs --batch --eval '(byte-compile-file "ruby-electric.el")' test -f inf-ruby.elc && sudo rm inf-ruby.elc sudo emacs --batch --eval '(byte-compile-file "inf-ruby.el")' test -f rubydb2x.elc && sudo rm rubydb2x.elc sudo emacs --batch --eval '(byte-compile-file "rubydb2x.el")' test -f rubydb3x.elc && sudo rm rubydb3x.elc sudo emacs --batch --eval '(byte-compile-file "rubydb3x.el")' } install_emacs_ruby $1 $2