[mew-win32 4531] NTEmacs で start-process, call-process が無限再帰する

Hayashi Masahiro ( 林 雅博 ) mhayashi1120 at example.com
2009年 2月 5日 (木) 21:49:45 JST


林と申します。

[mew-win32 4516] あたりのスレッドに触発されて最近 Meadow に加えて
NTEmacs も使っているのですが、NTEmacs で mw32script を load-path におく
と start-process, call-process 呼び出しすべてが無限再帰してしまいません
か?

# 1 年近く前の変更ですけど他の方のは動いているのでしょうか?

勘違いしているかもしれないので実験してみました。

(defun hoge (msg)
  (message msg))

(hoge "hoge1")
 => "hoge1"

(defalias 'hoge-original 'hoge)

(defun hoge (msg)
  (apply 'hoge-original '("hoge2")))

(hoge "hoge1")
=> Lisp nesting exceeds `max-lisp-eval-depth'



Index: mew-win32.el
===================================================================
RCS file: /cvsmew/mew/mew-win32.el,v
retrieving revision 1.67
diff -u -r1.67 mew-win32.el
--- mew-win32.el	21 Jan 2009 05:55:00 -0000	1.67
+++ mew-win32.el	5 Feb 2009 04:54:26 -0000
@@ -62,7 +62,7 @@
       (require 'mw32script)
     (file-error nil)) ;; NTEmacs
   (mw32script-make-pathext-regexp)
-  (defalias 'call-process-original 'call-process)
+  (defvar mew-w32-call-process-original (symbol-function 'call-process))
   (defun call-process (PROGRAM INFILE BUFFER DISPLAY &rest PROGRAM-ARGS)
     (let (prog sargs)
       (setq prog (mw32script-openp PROGRAM))
@@ -70,12 +70,12 @@
 	(setq prog (mew-which-exec PROGRAM))
 	(setq sargs (mw32script-resolve-script prog)))
       (if sargs
-	  (apply 'call-process-original
+	  (apply mew-w32-call-process-original
 		 (car sargs) INFILE BUFFER DISPLAY
 		 prog PROGRAM-ARGS)
-	(apply 'call-process-original
+	(apply mew-w32-call-process-original
 	       PROGRAM INFILE BUFFER DISPLAY PROGRAM-ARGS))))
-  (defalias 'start-process-original 'start-process)
+  (defvar mew-w32-start-process-original (symbol-function 'start-process))
   (defun start-process (NAME BUFFER PROGRAM &rest PROGRAM-ARGS)
     (let (prog sargs)
       (setq prog (mw32script-openp PROGRAM))
@@ -83,9 +83,9 @@
 	(setq prog (mew-which-exec PROGRAM))
 	(setq sargs (mw32script-resolve-script prog)))
       (if sargs
-	  (apply 'start-process-original
+	  (apply mew-w32-start-process-original
 		 NAME BUFFER (car sargs) prog PROGRAM-ARGS)
-	(apply 'start-process-original
+	(apply mew-w32-start-process-original
 	       NAME BUFFER PROGRAM PROGRAM-ARGS))))))
 
 ;; printing





Mew-win32 メーリングリストの案内