diff --git a/NEWS b/NEWS index a76447d..ca7f31b 100644 --- a/NEWS +++ b/NEWS @@ -284,6 +284,10 @@ time zones will use a form like "+0100" instead of "CET". ** Dired ++++ +*** New user option: 'dired-allow-duplicate-buffers' +If set, allows multiple dired buffers to visit the same directory. + --- *** Broken and circular links are shown with the 'dired-broken-symlink' face. diff --git a/dired.el b/dired.el index 7839ace..36c2f17 100644 --- a/dired.el +++ b/dired.el @@ -353,6 +353,12 @@ is anywhere on its Dired line, except the beginning of the line." :group 'dired :version "28.1") +(defcustom dired-allow-duplicate-buffers t + "Allow multiple `dired' buffers to visit the same directory." + :type 'boolean + :group 'dired + :version "28.1") + ;; Internal variables (defvar dired-marker-char ?* ; the answer is 42 @@ -1152,9 +1158,11 @@ The return value is the target column for the file names." ;; see there. (let* ((old-buf (current-buffer)) (dirname (if (consp dir-or-list) (car dir-or-list) dir-or-list)) - ;; Look for an existing buffer. - (buffer (dired-find-buffer-nocreate dirname mode)) - ;; Note that buffer already is in dired-mode, if found. + (buffer (when (not (bound-and-true-p dired-allow-duplicate-buffers)) + ;; Look for an existing buffer. + (dired-find-buffer-nocreate dirname mode) + ;; Note that buffer already is in dired-mode, if found. + )) (new-buffer-p (null buffer))) (or buffer (setq buffer (create-file-buffer (directory-file-name dirname))))