コマンドのハードコーディングを回避する仕組み
/bin/sh
決め打ちとかそういうのを回避するために使う。こういうの、他の人も色々書いてる気がするけど。
(defvar alternate-program-table
(make-hash-table :test 'equal))
(defmacro define-alternate-program (program alt)
`(puthash ,program ,alt alternate-program-table))
(defun alternate-program (program)
(gethash program alternate-program-table))
(defadvice start-process (around kludge-for-hard-coding (name buffer program &rest program-args) activate)
(let* ((alternate (alternate-program program))
(program (or (if (consp alternate) (car alternate) alternate) program))
(program-args (if (consp alternate) (append (cdr alternate) program-args) program-args)))
ad-do-it))
こういう感じに使う。
(defmacro when-windows (&rest body)
`(if-windows (progn ,@body)))
(when-windows
(define-alternate-program "/bin/sh" '("fakecygpty" "/bin/sh")))
Cygwin環境とfakecygptyがちゃんとあれば、term.elのansi-termとかがWindowsでもきちんと動作するように。
0 件のコメント:
コメントを投稿