D.

Emacs 23.2 の派生版 (emacs 23.2 + cedet 1.0 + emacs-w3m) を作った。

GNU Emacs の最新版 23.2 が 5 月にリリースされた。このバージョンには CEDET が標準添付されるようになったのだが、いくつか問題がある。

  1. 8月にリリースされた CEDET 1.0 を利用しようとすると、標準添付された CEDET とバッティングする。
  2. emacs-w3m の最新安定版である 1.4.4 が動作しない。

そこで、オリジナルの emacs 23.2 から cedet を除外した版を作成し、emacs-w3m は最新の cvs head とマージして、自分でソースコードを管理することにした。ソースコード一式は以下の通り。

emacs-w3m (cvs head とマージ, emacs 23.2 で動作可)

http://github.com/id774-2/emacs-w3m

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