Mercurial > emacs
diff lisp/add-log.el @ 2463:d3c9f0ad5964
(find-change-log): New function.
(add-change-log-entry): FILE-NAME frobnicating code moved there; call it.
author | Roland McGrath <roland@gnu.org> |
---|---|
date | Mon, 05 Apr 1993 23:48:01 +0000 |
parents | 10e417efb12a |
children | 8291de1718d4 |
line wrap: on
line diff
--- a/lisp/add-log.el Mon Apr 05 23:10:10 1993 +0000 +++ b/lisp/add-log.el Mon Apr 05 23:48:01 1993 +0000 @@ -42,6 +42,46 @@ nil default)))) ;;;###autoload +(defun find-change-log (&optional file-name) + "Find a change log file for \\[add-change-log-entry] and return the name. +Optional arg FILE-NAME is a name to try first. +If FILE-NAME is nil, use the value of `change-log-default-name' if non-nil. +Failing that, use \"ChangeLog\" in the current directory. +If the file does not exist in the named directory, successive parent +directories are tried. + +Once a file is found, `change-log-default-name' is set locally in the +current buffer to the complete file name." + (or file-name + (setq file-name (or change-log-default-name + default-directory))) + (if (file-directory-p file-name) + (setq file-name (expand-file-name (change-log-name) file-name))) + ;; Chase links before visiting the file. + ;; This makes it easier to use a single change log file + ;; for several related directories. + (setq file-name + (expand-file-name (or (file-symlink-p file-name) file-name))) + ;; Move up in the dir hierarchy till we find a change log file. + (let ((file1 file-name) + parent-dir) + (while (and (not (file-exists-p file1)) + (progn (setq parent-dir + (file-name-directory + (directory-file-name + (file-name-directory file1)))) + ;; Give up if we are already at the root dir. + (not (string= (file-name-directory file1) parent-dir)))) + ;; Move up to the parent dir and try again. + (setq file1 (expand-file-name (change-log-name) parent-dir))) + ;; If we found a change log in a parent, use that. + (if (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) + file-name) + +;;;###autoload (defun add-change-log-entry (&optional whoami file-name other-window) "Find change log file and add an entry for today. Optional arg (interactive prefix) non-nil means prompt for user name and site. @@ -64,34 +104,8 @@ (system-name))) (defun (add-log-current-defun)) paragraph-end entry) - (or file-name - (setq file-name (or change-log-default-name - default-directory))) - (setq file-name (if (file-directory-p file-name) - (expand-file-name (change-log-name) file-name) - (expand-file-name file-name))) - ;; Chase links before visiting the file. - ;; This makes it easier to use a single change log file - ;; for several related directories. - (setq file-name - (expand-file-name (or (file-symlink-p file-name) file-name))) - ;; Move up in the dir hierarchy till we find a change log file. - (let ((file1 file-name) - parent-dir) - (while (and (not (file-exists-p file1)) - (progn (setq parent-dir - (file-name-directory - (directory-file-name - (file-name-directory file1)))) - ;; Give up if we are already at the root dir. - (not (string= (file-name-directory file1) parent-dir)))) - ;; Move up to the parent dir and try again. - (setq file1 (expand-file-name (change-log-name) parent-dir))) - ;; If we found a change log in a parent, use that. - (if (file-exists-p file1) - (setq file-name file1))) - (set (make-local-variable 'change-log-default-name) file-name) + (setq file-name (find-change-log file-name)) ;; Set ENTRY to the file name to use in the new entry. (and buffer-file-name