diff lisp/pcvs.el @ 78753:cd3530596f8e

(cvs-mode-add-change-log-entry-other-window): Use add-log-buffer-file-name-function rather than bind buffer-file-name, so we dont end up calling change-log-mode in *cvs* when `fi' is the ChangeLog file itself.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 08 Sep 2007 03:11:43 +0000
parents e3a7c52130ec
children 73661ddc7ac7 5039706521c9
line wrap: on
line diff
--- a/lisp/pcvs.el	Sat Sep 08 03:09:31 2007 +0000
+++ b/lisp/pcvs.el	Sat Sep 08 03:11:43 2007 +0000
@@ -2210,13 +2210,21 @@
 (defun-cvs-mode cvs-mode-add-change-log-entry-other-window ()
   "Add a ChangeLog entry in the ChangeLog of the current directory."
   (interactive)
+  ;; Require `add-log' explicitly, because if it gets autoloaded when we call
+  ;; add-change-log-entry-other-window below, the
+  ;; add-log-buffer-file-name-function ends up unbound when we leave the `let'.
+  (require 'add-log)
   (dolist (fi (cvs-mode-marked nil nil))
     (let* ((default-directory (cvs-expand-dir-name (cvs-fileinfo->dir fi)))
-	   (buffer-file-name (expand-file-name (cvs-fileinfo->file fi))))
-      (if (file-directory-p buffer-file-name)
-          ;; Be careful to use a directory name, otherwise add-log starts
-          ;; looking for a ChangeLog file in the parent dir.
-          (setq buffer-file-name (file-name-as-directory buffer-file-name)))
+	   (add-log-buffer-file-name-function
+            (lambda ()
+              (let ((file (expand-file-name (cvs-fileinfo->file fi))))
+                (if (file-directory-p file)
+                    ;; Be careful to use a directory name, otherwise add-log
+                    ;; starts looking for a ChangeLog file in the
+                    ;; parent dir.
+                    (file-name-as-directory file)
+                  file)))))
       (kill-local-variable 'change-log-default-name)
       (save-excursion (add-change-log-entry-other-window)))))