# HG changeset patch # User Juri Linkov # Date 1259963129 0 # Node ID c1162f7a37aaa22f7d19a9cd56eb332f83d0cfe1 # Parent 87bc434475d451c96c504cbb13acf14848f45d75 (dired-auto-revert-buffer): New defcustom. (dired-internal-noselect): Use it. diff -r 87bc434475d4 -r c1162f7a37aa etc/NEWS --- a/etc/NEWS Fri Dec 04 21:43:07 2009 +0000 +++ b/etc/NEWS Fri Dec 04 21:45:29 2009 +0000 @@ -201,6 +201,11 @@ exempt buffers that do correspond to files, customize the value of `desktop-files-not-to-save' instead. +** Dired + +*** The new variable `dired-auto-revert-buffer' allows to revert +dired buffers automatically on revisiting. + ** DocView *** When `doc-view-continuous' is non-nil, scrolling a line diff -r 87bc434475d4 -r c1162f7a37aa lisp/ChangeLog --- a/lisp/ChangeLog Fri Dec 04 21:43:07 2009 +0000 +++ b/lisp/ChangeLog Fri Dec 04 21:45:29 2009 +0000 @@ -1,3 +1,8 @@ +2009-12-04 Juri Linkov + + * dired.el (dired-auto-revert-buffer): New defcustom. + (dired-internal-noselect): Use it. + 2009-12-04 Juri Linkov Change roles of modes and functions in image-mode.el (Bug#5062). diff -r 87bc434475d4 -r c1162f7a37aa lisp/dired.el --- a/lisp/dired.el Fri Dec 04 21:43:07 2009 +0000 +++ b/lisp/dired.el Fri Dec 04 21:45:29 2009 +0000 @@ -752,6 +752,24 @@ buffer-read-only (dired-directory-changed-p dirname)))) +;;;###autoload +(defcustom dired-auto-revert-buffer nil + "Automatically revert dired buffer on revisiting. +If t, revisiting an existing dired buffer automatically reverts it. +If its value is a function, call this function with the directory +name as single argument and revert the buffer if it returns non-nil. +Otherwise, a message offering to revert the changed dired buffer +is displayed. +Note that this is not the same as `auto-revert-mode' that +periodically reverts at specified time intervals." + :type '(choice + (const :tag "Don't revert" nil) + (const :tag "Always revert visited dired buffer" t) + (const :tag "Revert changed dired buffer" dired-directory-changed-p) + (function :tag "Predicate function")) + :group 'dired + :version "23.2") + (defun dired-internal-noselect (dir-or-list &optional switches mode) ;; If there is an existing dired buffer for DIRNAME, just leave ;; buffer as it is (don't even call dired-revert). @@ -779,6 +797,14 @@ (setq dired-directory dir-or-list) ;; this calls dired-revert (dired-sort-other switches)) + ;; Always revert regardless of whether it has changed or not. + ((eq dired-auto-revert-buffer t) + (revert-buffer)) + ;; Revert when predicate function returns non-nil. + ((functionp dired-auto-revert-buffer) + (when (funcall dired-auto-revert-buffer dirname) + (revert-buffer) + (message "Changed directory automatically updated"))) ;; If directory has changed on disk, offer to revert. ((when (dired-directory-changed-p dirname) (message "%s"