diff -cw dired.el dired-patched-2013-07-20.el
*** dired.el	Sat Jul 20 12:10:57 2013
--- dired-patched-2013-07-20.el	Sat Jul 20 12:18:28 2013
***************
*** 249,254 ****
--- 249,266 ----
    :version "24.4"
    :group 'dired)
  
+ (defcustom dired-hide-details-initially t
+   "Non-nil means hide details in Dired from the outset."
+   :type 'boolean :version "24.4" :group 'dired)
+ 
+ (defcustom dired-hide-details-propagate t
+   "Non-nil means display the next Dired buffer the same way as the last.
+ The last `dired-hide-details-mode' value set is used by the next Dired
+ buffer created."
+   :type 'boolean :version "24.4" :group 'dired)
+ 
+ 
+ 
  ;; Internal variables
  
  (defvar dired-marker-char ?*		; the answer is 42
***************
*** 297,302 ****
--- 309,322 ----
  
  (put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
  
+ (defvar dired-hide-details-last-state dired-hide-details-initially
+   "Last `dired-hide-details-mode' value.
+ Initialized to the value of option `dired-hide-details-initially'.")
+ 
+ (defvar dired-hide-details-toggled nil
+   "Non-nil means you have already toggled hiding details in this buffer.")
+ (make-variable-buffer-local 'dired-hide-details-toggled)
+ 
  (defvar dired-re-inode-size "[0-9 \t]*"
    "Regexp for optional initial inode and file size as made by `ls -i -s'.")
  
***************
*** 2265,2286 ****
        (substring file (match-end 0))
      file))
  
! ;;; Minor mode for hiding details
  ;;;###autoload
  (define-minor-mode dired-hide-details-mode
    "Hide details in Dired mode."
    :group 'dired
!   (unless (derived-mode-p 'dired-mode)
!     (error "Not a Dired buffer"))
    (dired-hide-details-update-invisibility-spec)
    (if dired-hide-details-mode
!       (add-hook 'wdired-mode-hook
! 		'dired-hide-details-update-invisibility-spec
! 		nil
! 		t)
!     (remove-hook 'wdired-mode-hook
! 		 'dired-hide-details-update-invisibility-spec
! 		 t)))
  
  (defun dired-hide-details-update-invisibility-spec ()
    (funcall (if dired-hide-details-mode
--- 2285,2309 ----
        (substring file (match-end 0))
      file))
  
! ;;; Minor modes for hiding details
! 
! ;;;###autoload
! (define-globalized-minor-mode global-dired-hide-details-mode dired-hide-details-mode
!   dired-hide-details-if-dired)
! 
  ;;;###autoload
  (define-minor-mode dired-hide-details-mode
      "Hide details in Dired mode."
+   (and dired-hide-details-propagate  dired-hide-details-last-state)
    :group 'dired
!   (unless (derived-mode-p 'dired-mode) (error "Not a Dired buffer"))
    (dired-hide-details-update-invisibility-spec)
+   (setq dired-hide-details-toggled  t)
+   (when dired-hide-details-propagate
+     (setq dired-hide-details-last-state  dired-hide-details-mode))
    (if dired-hide-details-mode
!       (add-hook 'wdired-mode-hook 'dired-hide-details-update-invisibility-spec nil t)
!     (remove-hook 'wdired-mode-hook 'dired-hide-details-update-invisibility-spec t)))
  
  (defun dired-hide-details-update-invisibility-spec ()
    (funcall (if dired-hide-details-mode
***************
*** 2299,2304 ****
--- 2322,2342 ----
  	     'remove-from-invisibility-spec)
  	   'dired-hide-details-link))
  
+ (defun dired-hide/show-details ()
+   "Hide/show details according to user options.
+ If `dired-hide-details-propagate' is non-nil and details have
+ never been hidden in the buffer, then hide/show according to your last
+ hide/show choice in any other Dired buffer or, if no last choice,
+ according to option `dired-hide-details-initially'."
+   (unless (or dired-hide-details-toggled ; No op if hide/show already set.
+               (buffer-narrowed-p)) ; No-op when showing just newly copied file etc.
+     (cond (dired-hide-details-propagate
+            (dired-hide-details-mode (if dired-hide-details-last-state 1 -1)))
+           (dired-hide-details-initially
+            (dired-hide-details-mode 1)))))
+ 
+ (add-hook 'dired-after-readin-hook #'dired-hide/show-details)
+ 
  ;;; Functions for finding the file name in a dired buffer line.
  
  (defvar dired-permission-flags-regexp

Diff finished.  Sat Jul 20 12:20:35 2013
