[mew-dist 27662] Re: [Q] Mew on Cygwin Emacs 21.3.50
Sumio KOBAYASHI
dki at example.com
2007年 5月 10日 (木) 22:47:37 JST
小林です. こんばんは. 良い(酔い)気分で御帰宅です. 大丈夫かなあ?
On Thu, 10 May 2007 16:35:51 +0900 (JST),
Hideyuki SHIRAI (白井秀行) <shirai at example.com> wrote in
Message-ID: <20070510.163551.68547962.shirai.hideyuki at example.com>:
> > Elisp もよくわかっていないのですが, mew-win32.el で fiber.exe を定義す
> > るところで,
>
> (defvar mew-w32-exec (if (eq system-type 'cygwin)
> "cygstart"
> "fiber.exe"))
>
> ですね。ちなみに、今回の場合、~/.emacs に
>
> (setq mew-w32-exec "cygstart")
>
> と書いておけば、mew-win32.el をいじらなくても大丈夫ですよ。
えっと, 上のように書いておけば, cygwin が来ようが, meadow, NTEmacs が
大丈夫かな, というつもりです.
最近のMewの例題(mew.dot.emacs でしたっけ?)を見ると, .emacs には
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
しか無いので, .mew.el に
(setq mew-w32-exec "cygstart")
を書いてみたら無効でした. Typo かなあ? 確認します.
> ところで、mew-win32.el では簡易印刷用に
>
> (defvar mew-w32-prog-print "notepad.exe")
> (defvar mew-w32-prog-print-arg nil)
>
> というのが設定してあるのですが、cygwin だとなにが良いのか、ある
> いはどうすれば良いのかわかりませんか?
これは周囲の印刷環境がどうなっているのか, に依存すると思うのですが, 小
生の場合, 多数派のFreeBSD マシンの一つににプリンタがつながってる状態で,
Windows マシンは少数派です. Mew message をプリントアウトするために, 昔
(Mew が IM を使っていたころ, mew-1.9 位ですか?) mewlpr という perl
script を作って, '|' で渡してます. XP の場合, BSD由来(互換かも?)の
lpr.exe が載っているので, FreeBSD で作った mewlpr の微修正で使えてま
す. 答えになって無いかも.
一方, Windows上で使う以上, cygwin から Windows command を極力活用した
いということで, 後述のスクリプト(cmd.pl)を作ってます.
Windows_comand.exe path_to_file で起動できる windows_command.exe を集
めて, /usr/local/bin/ (cygwin の場合, ほとんど空なのです)に symbolic
link を張っておきます. 一方, ~/bin/ の PATH 順を /usr/local/bin/ よ
り優先させておいて, ここに, cmd.pl (755) を置いて,
ln -s cmd.pl windows_command (.exe を付けない)
として完了です.
以下は ln -s を張りまくる script です. Notepad が見えないのは, 本体が,
cygwin のPATH が通っている /c/WINDOWS/system32/ にあるからです.
------------------------------
#!/bin/sh
# $0: install.sh
#
HOMEBIN=$HOME/bin
USLOBIN=/usr/local/bin
LNSF='ln -sf -T'
GROUP=Administrators
CYGCMD=\
'acroread excel msaccess powerpnt pptview sbase scalc simpress swriter
winword wordpad wordview'
CMDPL='cmd.pl'
if [ ! -f $HOMEBIN/$CMDPL ] || [ $CMDPL -nt $HOMEBIN/$CMDPL ]; then
echo $CMDPL
install -o $USER -g $GROUP -m 755 $CMDPL $HOMEBIN/
fi
if [ -d /cygdrive ]; then
CYGDRIVE='/cygdrive'
else
CYGDRIVE=''
fi
ACROREAD="$CYGDRIVE/c/Program Files/Adobe/Acrobat 7.0/Reader/AcroRd32.exe"
EXCEL="$CYGDRIVE/c/Program Files/Microsoft Office/Office/EXEL.EXE"
MSACCESS="$CYGDRIVE/c/Program Files/Microsoft Office/Office/MSACCESS.EXE"
POWERPNT="$CYGDRIVE/c/Program Files/Microsoft Office/Office/POWERPNT.EXE"
PPTVIEW="$CYGDRIVE/c/Program Files/Microsoft Office/PowerPoint Viewer/PPTVIEW.EXE"
SBASE="$CYGDRIVE/c/Program Files/OpenOffice.org 2.0/program/sbase.exe"
SCALC="$CYGDRIVE/c/Program Files/OpenOffice.org 2.0/program/scalc.exe"
SIMPRESS="$CYGDRIVE/c/Program Files/OpenOffice.org 2.0/program/simpress.exe"
SWRITER="$CYGDRIVE/c/Program Files/OpenOffice.org 2.0/program/swriter.exe"
WINWORD="$CYGDRIVE/c/Program Files/Microsoft Office/Office/WINWORD.EXE"
WORDPAD="$CYGDRIVE/c/Program Files/Windows NT/Accessories/wordpad.exe"
WORDVIEW="$CYGDRIVE/c/Program Files/Microsoft Office/OFFICE11/WORDVIEW.EXE"
if [ -f "$ACROREAD" ] & ! [ -f $USLOBIN/acroread.exe ]; then
$LNSF "$ACROREAD" $USLOBIN/acroread.exe
echo 'acroread.exe'
fi
if [ -f "$EXCEL" ] & ! [ -f $USLOBIN/excel.exe ]; then
$LNSF "$EXCEL" $USLOBIN/excel.exe
echo 'excel.exe'
fi
if [ -f "$MSACCESS" ] & ! [ -f $USLOBIN/msaccess.exe ]; then
$LNSF "$MSACCESS" $USLOBIN/msaccess.exe
echo 'msaccess.exe'
fi
if [ -f "$POWERPNT" ] & ! [ -f $USLOBIN/powerpnt.exe ]; then
$LNSF "$POWERPNT" $USLOBIN/powerpnt.exe
echo 'powerpnt.exe'
fi
if [ -f "$PPTVIEW" ] & ! [ -f $USLOBIN/pptview.exe ]; then
$LNSF "$PPTVIEW" $USLOBIN/pptview.exe
echo 'pptview.exe'
fi
if [ -f "$SBASE" ] & ! [ -f $USLOBIN/sbase.exe ]; then
$LNSF "$SBASE" $USLOBIN/sbase.exe
echo 'sbase.exe'
fi
if [ -f "$SCALC" ] & ! [ -f $USLOBIN/scalc.exe ]; then
$LNSF "$SCALC" $USLOBIN/scalc.exe
echo 'scalc.exe'
fi
if [ -f "$SIMPRESS" ] & ! [ -f $USLOBIN/simpress.exe ]; then
$LNSF "$SIMPRESS" $USLOBIN/simpress.exe
echo 'simpress.exe'
fi
if [ -f "$SWRITER" ] & ! [ -f $USLOBIN/swriter.exe ]; then
$LNSF "$SWRITER" $USLOBIN/swriter.exe
echo 'swriter.exe'
fi
if [ -f "$WINWORD" ] & ! [ -f $USLOBIN/winword.exe ]; then
$LNSF "$WINWORD" $USLOBIN/winword.exe
echo 'winword.exe'
fi
if [ -f "$WORDPAD" ] & ! [ -f $USLOBIN/wordpad.exe ]; then
$LNSF "$WORDPAD" $USLOBIN/wordpad.exe
echo 'wordpad.exe'
fi
if [ -f "$WORDVIEW" ] & ! [ -f $USLOBIN/wordview.exe ]; then
$LNSF "$WORDVIEW" $USLOBIN/wordview.exe
echo 'wordview.exe'
fi
cd $HOMEBIN
if [ ! -f notepad ]; then
ln $CMDPL notepad
fi
for f in $CYGCMD; do
if [ -f "$USLOBIN/$f.exe" ] & [ ! -f "$f" ]; then
ln $CMDPL $f
fi
done
exit
------------------------------
一方, cmd.pl はこんな感じ.
------------------------------
#!/usr/bin/perl
#$unixpath = $ARGV[0];
if (@ARGV) {
$winpath = qx{cygpath -w "$ARGV[0]"};
@winpath = split /\\/, $winpath;
$cygwinpath = join '\\\\', @winpath;
} else {
$cygwinpath=''
}
$cmd = (split '/',$0)[-1];
qx{$cmd.exe $cygwinpath};
exit;
------------------------------
答えになっていないかもしれませんが, ここに挙げた windows command は問
題無く cygwin から起動できます.
----------
Sumio KOBAYASHI <dki at example.com>
Mew-dist メーリングリストの案内