[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 メーリングリストの案内