[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

M-x emacs-version



こんばんは。

(emacs-version)
"GNU Emacs 22.1.1 (i386-mingw-nt5.0.2195)
 of 2007-07-08 on CUBE
URL: http://svn.meadowy.org/Meadow/trunk
Last Changed Rev: 4213
Last Changed Date: 2007-07-07 09:39:18 +0900 (Sat, 07 Jul 2007)"

上記環境で、M-x emacs-version にてエコーエリアになにも表示されませ
んでした。本来なら

> GNU Emacs 22.1.1 (i386-mingw-nt5.0.2195) of 2007-07-08 on CUBE

のように表示されるはずだと思い、packages/lisp/default.el を変更した
ら表示されるようになりました。

どうも interactive-p の値で挙動を変える関数への advice は注意が必要
なようです。


-- 
Tetsuo Tsukamoto

--- default.el.orig	2007-08-18 12:37:44.285875000 +0900
+++ default.el	2007-08-26 18:42:34.560875000 +0900
@@ -50,16 +50,22 @@
 
 ;; add svn revision
 (when (featurep 'meadow)
-  (defadvice emacs-version (after emacs-version-after activate)
+  (defadvice emacs-version (around emacs-version-around activate)
     "Add svn revison to emacs-version(f)"
-    (let ((info (expand-file-name "../.svn.info" data-directory))
+    (let ((value (if (interactive-p)
+		     (call-interactively 'ad-Orig-emacs-version)
+		   ad-do-it))
+	  (info (expand-file-name "../.svn.info" data-directory))
 	  str)
-      (when (file-exists-p info)
+      (cond
+       ((file-exists-p info)
 	(save-excursion
 	  (set-buffer (find-file-noselect info))
 	  (setq str (buffer-substring-no-properties 
 		     (point-min) (- (point-max) 1)))
 	  (kill-buffer nil))
-	(setq ad-return-value (concat ad-return-value "\n" str))))))
+	(setq ad-return-value (concat value "\n" str)))
+       (t
+	(setq ad-return-value value))))))
 
 ;;; default.el ends here