[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[BUG] msvc-process-argument-quoting
- X-ml-count: 478
- Subject: [BUG] msvc-process-argument-quoting
- From: Keisuke Mori <ksk@xxxxxxxx>
- Date: Wed, 27 Jan 1999 17:40:37 +0900
- X-mailer: Chao-gnus 6.8.0 (based on Gnus 5.6.22; for SEMI 1.8/FLIM 1.8)
どうも argument editing のバグらしいので報告です。
デフォルトの、すなわち MSVC アプリケーション用の argument
editing で、引数に F:\ のように最後に \ がつく値を指定した場合、
"F:\" と quote されますが、これを MSVC アプリケーションは F:" と
解釈してしまう、というものです。
とりあえずの対処としては、以下に示す
msvc-process-argument-quoting 関数を、 .emacs に記述して再定義す
るか、あるいは直接${MEADOW}/lisp/international/mw32misc.el 中の
定義を置き換えて、バイトコンパイル、ダンプし直せばよいと思います。
----8<--------8<--------8<--------8<--------8<--------8<----
(defun msvc-process-argument-quoting (arg)
(mapcar (lambda (x)
(let ((start 0) (result "\"") pos end)
(while (string-match "\\\\*\"" x start)
(setq pos (match-beginning 0)
end (match-end 0)
result (concat result
(substring x start pos)
(make-string (* (- end pos 1) 2) ?\\ )
"\\\"")
start end))
(concat result
(if (string-match "\\\\*\\'" x start)
(concat (substring x start (match-beginning 0))
(make-string (* (- (match-end 0)
(match-beginning 0))
2) ?\\))
(substring x start))
"\"")))
arg))
----8<--------8<--------8<--------8<--------8<--------8<----
これが具体的に問題になったのは、汎用辞書検索ツール Lookup[*1] で
eblook を使おうとしたときに、辞書の指定を F:\ のように指定する場
合です。以前はこおりやまさんのページ[*2]で紹介されているように
(define-process-argument-editing
"/eblook\\.exe\\'"
(lambda (x) (general-process-argument-editing-function x nil t)))
という設定をするのが解決法でしたが、これは必要なくなります。
[*1] http://www.ring.gr.jp/openlab/lookup/
[*2] http://www02.u-page.so-net.or.jp/ba2/kory/emacs/meadow.html
# しかし、MSVC アプリケーションって、なしてあんなケッタイな
# quoting 処理をするんだろう…
--
Keisuke MORI / NTT Software Corp. California Branch
E-Mail: ksk@xxxxxxxx