最終更新日:2003.07.15
Cygwinと一緒にMeadowを便利に使いたいと思ったとき、デフォルトの設定では困ることがいくつかあります。
あちこちのサイトを参考にさせて貰ったり、試行錯誤したりしてできあがった設定を、ここにメモします。
Meadowのインストーラーは自動的に起動用のBATファイルを生成すると思います。しかし、これをそのままCygwin bashから呼ぶと一々cmd.exeが起動して五月蝿いので、このBATファイルの中身をShell Scriptに移植し、多少手を加えました。
下記の内容を/bin/MeadowNT.shとして保存し、更にシンボリックリンク/bin/emacsを作りました。
#!/bin/sh
emacs_dir_cygwin=/cygdrive/d/Meadow/1.10
emacs_dir="D:/Meadow/1.10"
EMACSLOADPATH="d:/Meadow/1.10/site-lisp;d:/Meadow/site-lisp;d:/Meadow/1.10/lisp"
# Use new proxy shell by default.
SHELL="d:/cygwin/bin/bash.exe"
EMACSDATA=${emacs_dir}/etc
EMACSPATH=$emacs_dir}/bin
EMACSLOCKDIR=${emacs_dir}/lock
# INFOPATH=${emacs_dir}/info
EMACSDOC=${emacs_dir}/etc
# TERM=${SHELL}
# The variable HOME is used to find the startup file, ~/_emacs. Ideally,
# this will not be in this file but should already be before
# this file is invoked. If HOME is not set, use some generic default.
HOME_SAVE=${HOME}
HOME_EXISTS=yes
HOME_DEFAULT=${HOME}
HOME=`cygpath -w ~`
if [ $HOME = $HOME_SAVE ]; then
HOME_EXISTS="no"
fi
if [ $HOME_EXISTS = "yes" ]; then
HOME=$HOME_SAVE
fi
if [ $HOME_EXISTS = "no" ]; then
HOME=$HOME_DEFAULT
fi
if [ "$HOME_EXISTS" != "yes" ]; then
echo "HOME is not set! Using $HOME as a default..."
fi
param=""
f_ate_hh=""
for i in $*; do
t=`echo "$i" | sed -e 's/^-.*//g'`
if [ "$t" != "" ]; then
param="$param `cygpath -i -w $i`"
elif [ "$f_ate_hh" ]; then
param="$param `cygpath -a -i -w -- $i`"
else
if [ "$i" = "--" ]; then
f_ate_hh="true"
else
param="$param $i"
fi
fi
done
$emacs_dir_cygwin/bin/MeadowNT.exe $param
起動時の引数は、上記スクリプトによってCygwinのパスからWindowsのパスに自動変換されるので良いです。でも、起動中にファイルを開くときなどにもCygwinのパスを利用したいので、cygwin-mount.elというものを見つけてきました。
設定例はフジタユウイチ氏のCygwin & Meadow Setupを参考にしましたので、そちらを参照してください。
shell-modeでcygwinのbashを使うために、~/.emacsに次の設定を加えました。
(setq explicit-shell-file-name "bash.exe") (setq shell-file-name "sh.exe") (setq shell-command-switch "-c")
え〜、これに関しては設定情報を記したサイトがそこら中にあるので、改めて書く必要もないでしょうけれど、一応書いておきます。
~/.emacsに次の設定を加えてください。あ、色の設定部分はお好みで#RRGGBB形式で書き換えてください。
(set-language-environment "Japanese")
(set-default-coding-systems 'sjis)
(set-keyboard-coding-system 'sjis)
(set-terminal-coding-system 'euc-jp) ; cygwinのGNUツール用
(setq file-name-coding-system 'sjis)
(set-clipboard-coding-system 'sjis-dos)
(set-w32-system-coding-system 'sjis-dos)
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")
(set-cursor-color "#a0a0ff")
(add-hook 'mw32-ime-on-hook (lambda () (set-cursor-color "orange")))
(add-hook 'mw32-ime-off-hook (lambda () (set-cursor-color "#a0a0ff")))
(setq-default mw32-ime-mode-line-state-indicator "[cC]")
(setq mw32-ime-mode-line-state-indicator-list '("cC" "[に]" "[cC]"))
デフォルトでは、Meadowの起動時のウィンドウサイズは大きすぎるように思いましたので、~/.emacsにこれを加えました。
(setq default-frame-alist
(append (list '(width . 80)
'(height . 30)
)
default-frame-alist)
)
折り返している長い行において、Ctrl+nを押したときに「表示上の」次の行に行ってくれると便利ですが、デフォルトでは次の「論理上の」行に行ってしまいます。
daisaku氏のMeadowというページに設定例が書いてありました。