gnuserv の自動起動

emacs/Meadow はgnuservと同時に利用すると便利である。
gnuservというのは、新しいファイルをemacsで編集するときに、
すでに起動しているemacsの窓がすでにあれば、
その窓の中でファイルを編集できるようにするツールである。

このgnuservは、便利なのだがすでにemacsの窓が開いているかを
判断する必要があるのが、少し億劫である。
つまり、emacsの窓がまだ1つもなければemacsを直接起動し、
emacsの窓が1つあればgnuclientw を実行するというような
手順を踏まなければいけない。

この手間をなくすためにすでに実行しているかの判断と
適切な実行ファイルの選択を自動化するシェルスクリプト
作ってみた。cygwin/meadowで動くような設定になっている。

次のようなファイルになる。


#!/bin/bash

#emacs実行ファイル
EMACS=/usr/local/meadow/2.00b1/bin/Meadow.exe
#gnuclient実行ファイル
CLIENT=/usr/local/bin/gnuclientw

executable_args=""
while [ ${#} -gt 0 ] ; do
arg="$1"; shift
#引数の cygwin path形式からwindows path形式への変換
executable_args="$executable_args $(cygpath -am $arg)"
done

# gnuservが起動済みどうかの判定
ps -W | grep -q "gnuserv"
RETVAL=${?}
if [ ${RETVAL} -eq 0 ]; then
# gnuclientwの起動
echo ${CLIENT} ${executable_args}
${CLIENT} ${executable_args}
else
# emacs の起動
if [ "x${executable_args}" = "x" ] ; then
# emacs の起動、引数なし
# 引数なしのときはhowm-menuを実行
cmd /c $(cygpath -wa ${EMACS}) -f howm-menu &
else
# emacs の起動、引数あり
echo cygstart --hide -o ${EMACS} ${executable_args} &
cygstart --hide -o ${EMACS} ${executable_args} &
fi
fi