Cygwin のマウント情報を解釈してファイル名を変換します。 find-file やコマンドライン引数に cygwin のパスを指定して xyzzy でファイルを開くことができます。
NetInstaller でインストールした場合は 3 以降を、
NetInstaller + ni-autoload を使っている人は 4 以降で OK です。
アーカイブをダウンロードします。
<URL:http://miyamuko.s56.xrea.com/xyzzy/archives/cygwin-mount.zip>
~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加します。
;; cygwin-mount (require "cygwin-mount") (cygwin-mount-activate)
設定を反映させるには xyzzy を再起動してください。
※siteinit.l に記述した場合には再ダンプが必要です。
*cygwin-mount-reg-root*cygwin のマウント情報が記録されているレジストリのルートを指定します。 以下の値を指定可能です。
初回実行時に自動的に検出するので通常は設定する必要はありません。
*cygwin-mount-reg-section*cygwin-mount-activateファイルを開くときに cygwin のパスを自動的に Windows のパスに読み替えるように 設定します。
これで cygwin のパスを指定してファイルを開くことができます。
'(詳しい説明 *before-find-file-hook* に ed::cygwin-mount-before-find-file-hook を追加します。)
cygwin-mount-resolve cygpathcygwin のパスを Windows のパスに変換します。
(cygwin-mount-resolve "/bin/cygwin1.dll") => c:\cygwin\bin\cygwin1.dll
なし
コマンドラインからファイルを指定しても xyzzy の *before-find-file-hook* に来るまでに勝手にドライブ文字が追加されてしまいます。 そのため、意図しないファイルを開いてしまう可能性があります。
たとえば、以下のようなディレクトリ構成の場合:
D:/
├ cygwin/
│ ├ etc/
│ │ ├ foo
│ │ └ bar
│ ├ bin/
│ └ sbin/
└ etc
└ foo
cygwin での /etc は d:/cygwin/etc にマウントしているとします。
ここで cygwin から xyzzy /etc/foo として起動した場合、*before-find-file-hook* には d:/etc/foo が渡されます。
本来は d:/cygwin/etc/foo を開きたいところですが、 cygwin から /etc/foo を指定されたのか、Windows から d:/etc/foo を 指定されたかは判断できないので、この場合 d:/etc/foo が開かれます。
一方、cygwin から xyzzy /etc/bar で起動した場合 d:/etc/bar が 渡されます。しかし、d:/etc/bar は存在しないのでこの場合、 cygwin-mount.l ではドライブ文字を削除して /etc/bar が渡されたとみなし cygwin のパスを Windows のパスに変換して d:/cygwin/etc/bar を開きます。
と、このように動作が怪しいのでなるべく cygwin 側で cygpath を使って 変換した上で xyzzy に渡したほうが確実だと思います。
cygwin-mount は修正 BSD ライセンスに基づいて利用可能です。
Copyright (C) 2005 MIYAMUKO Katsuyuki. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.