/var/log

技術系のあれこれ。※内容は個人の発言であり、所属する組織を代表するものではありません。

emacs@Cygwin

Windowsだけど似非UNIX的な使い方がしたくて。
WindowsCygwinをいれてCygtermから接続してemacsを利用しています。



emacsを起動を制御するスクリプトを自前で用意して
emacs serverが上がっていれば同じ画面につなぎに行くようにしています。

#!/bin/bash

ps_result=`ps -ef | grep emacs-w32 | grep -v grep | wc -l`
if [ $ps_result == 0 ]; then
 echo "Stating Emacs..."
 emacs-w32 $@ &
 echo "...done"
else
 echo "Connect to Emacs Server..."
 emacsclient $@ &
 echo "...done"
fi

これだと以下の場合は問題ないのですが
(1)Cygtermからコマンドで新規に起動する場合
(2)Cygtermからコマンドでファイルを追加で開く場合
(3)既に起動したemacs-w32@GUIにファイルをドロップする場合

以下のケースが動きません。
(4)Windows上のファイルを関連付けて ダブルクリックでファイルを開くとき


というのも
(1)~(3)は何れもCygwin上、またはcygpathが裏で動くので
WindowsのPATHでもCygwinのPATH形式に変換してくれます。


(4)の場合にのみWindowsのPATHでもCygwinのPATH形式に変換できず
困ってしまします。



対策は。。。ぱっと思いつかないので暫く放置。
愚直にやるなら WindowsバッチでCygwinのシェルを呼び出す方法でしょうかねぇ。
美しくないなぁ。。。