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
+2009-12-04 Juri Linkov <juri@jurta.org>
+
+ * dired.el (dired-auto-revert-buffer): New defcustom.
+ (dired-internal-noselect): Use it.
+
2009-12-04 Juri Linkov <juri@jurta.org>
Change roles of modes and functions in image-mode.el (Bug#5062).
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).
(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"