Subject: bug#27633: 26.0.50; Dired doesn't update buffer when wildcards have changed

From: Tino Calancha <[email-masked]>
Date: Mon, 10 Jul 2017 12:02:16 +0900

A 2nd Dired call on the same directory must update
the buffer when the wildcards have changed.

emacs -Q -l dired -eval '(dired (expand-file-name "lisp" source-directory))'
M-: (dired (list default-directory "simple.el")) RET
;; Same Dired buffer.
C-x k RET ; kill the buffer.

;; Show Dired buffer with just 'simple.el':
M-: (dired (list (expand-file-name "lisp" source-directory) "simple.el")) RET
C-x d RET ; Same Dired buffer.

--8<-----------------------------cut here---------------start------------->8---
commit 8772e1bede02b1509fccef0445238e1ec9227a53
Author: Tino Calancha <[email-masked]>
Date:   Mon Jul 10 12:00:53 2017 +0900

    Revert Dired buffer if wildcards have change
    
    A 2nd Dired call in the same directory must update
    the buffer if the wildcards have changed (Bug#27633).
    * lisp/dired.el (dired-internal-noselect):
    Revert Dired buffer if wildcards change.

diff --git a/lisp/dired.el b/lisp/dired.el
index 0c1f3e4af6..667cf7fba6 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -898,6 +898,10 @@ dired-internal-noselect
 	       (setq dired-directory dir-or-list)
 	       ;; this calls dired-revert
 	       (dired-sort-other switches))
+	      ;; wildcards have changed.
+	      ((not (equal dired-directory dir-or-list))
+	       (setq dired-directory dir-or-list)
+	       (revert-buffer))
 	      ;; Always revert regardless of whether it has changed or not.
 	      ((eq dired-auto-revert-buffer t)
 	       (revert-buffer))
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-07-09 built
Repository revision: 273f4bde39af5d87f10fd58f35b666dfa8a996a3