From 89631590457a0f40306cd1a207a6d8dad3a2c776 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 6 Sep 2008 19:38:44 +0000 Subject: [PATCH] (diff-find-source-location): Declare. (find-change-log): If called from a diff buffer, try to switch to the source buffer (e.g. to respect change-log-default-name there). --- lisp/ChangeLog | 4 ++++ lisp/add-log.el | 26 +++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 907d8cb923..71c10d6ceb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2008-09-06 Glenn Morris + * add-log.el (diff-find-source-location): Declare. + (find-change-log): If called from a diff buffer, try to switch to the + source buffer (e.g. to respect change-log-default-name there). + * progmodes/sh-script.el (sh-get-kw): Remove '()' from the list of unallowed characters; added 2006-10-10 without comment. (Bug#753) diff --git a/lisp/add-log.el b/lisp/add-log.el index 6bb1178fe5..98aa910952 100644 --- a/lisp/add-log.el +++ b/lisp/add-log.el @@ -665,6 +665,8 @@ nil, by matching `change-log-version-number-regexp-list'." regexps nil)))) version))))) +(declare-function diff-find-source-location "diff-mode" + (&optional other-file reverse)) ;;;###autoload (defun find-change-log (&optional file-name buffer-file) @@ -682,12 +684,18 @@ directory and its successive parents for a file so named. Once a file is found, `change-log-default-name' is set locally in the current buffer to the complete file name. Optional arg BUFFER-FILE overrides `buffer-file-name'." - ;; If user specified a file name or if this buffer knows which one to use, - ;; just use that. - (or file-name - (setq file-name (and change-log-default-name - (file-name-directory change-log-default-name) - change-log-default-name)) + ;; If we are called from a diff, first switch to the source buffer; + ;; in order to respect buffer-local settings of change-log-default-name, etc. + (let ((buff (if (eq major-mode 'diff-mode) + (car (ignore-errors (diff-find-source-location)))))) + (with-current-buffer (if (buffer-live-p buff) buff + (current-buffer)) + ;; If user specified a file name or if this buffer knows which one to use, + ;; just use that. + (or file-name + (setq file-name (and change-log-default-name + (file-name-directory change-log-default-name) + change-log-default-name))) (progn ;; Chase links in the source file ;; and use the change log in the dir where it points. @@ -720,9 +728,9 @@ Optional arg BUFFER-FILE overrides `buffer-file-name'." parent-dir))) ;; If we found a change log in a parent, use that. (if (or (get-file-buffer file1) (file-exists-p file1)) - (setq file-name file1))))) - ;; Make a local variable in this buffer so we needn't search again. - (set (make-local-variable 'change-log-default-name) file-name) + (setq file-name file1)))) + ;; Make a local variable in this buffer so we needn't search again. + (set (make-local-variable 'change-log-default-name) file-name))) file-name) (defun add-log-file-name (buffer-file log-file) -- 2.20.1