   (define-key ctl-x-4-map "D" nil)      ; For Emacs 20
   (define-key ctl-x-4-map "DA" 'diredp-add-to-dired-buffer-other-window)   ; `C-x 4 D A'
   (define-key ctl-x-4-map "DF" 'diredp-dired-for-files-other-window)       ; `C-x 4 D F'
-  (define-key ctl-x-4-map "DR" 'diredp-dired-recent-dirs-other-window)     ; `C-x 4 D R'
+  (define-key ctl-x-4-map "DR" 'diredp-dired-recent-files-other-window)    ; `C-x 4 D R'
+  (define-key ctl-x-4-map "Dr" 'diredp-dired-recent-dirs-other-window)     ; `C-x 4 D r'
   (define-key ctl-x-4-map "DS" 'diredp-fileset-other-window)               ; `C-x 4 D S'
   (define-key ctl-x-4-map "DU" 'diredp-dired-union-other-window))          ; `C-x 4 D U'
 

;; works for newer Emacs too.
(when (fboundp 'defvaralias)            ; Emacs 22+
  (defvaralias 'diredp-menu-bar-operate-bookmarks-menu 'diredp-multiple-bookmarks-menu))
(make-obsolete-variable 'diredp-menu-bar-operate-bookmarks-menu 'diredp-multiple-bookmarks-menu) ; 2017-04-09

(when (require 'bookmark+ nil t)
  (define-key diredp-multiple-bookmarks-menu [diredp-do-set-tag-value]


When called from Lisp, optional arg DETAILS is passed to
`diredp-get-subdirs'."
  (interactive (list current-prefix-arg diredp-list-file-attributes))
  (diredp-mark-recursive-1 arg "symlinks" "symbolic link" '(diredp-looking-at-p dired-re-sym) details))

(defun diredp-mark-recursive-1 (arg plural singular predicate-sexp details)
  "Helper for `diredp-mark-*-recursive' commands."
  (let* ((numarg             (and arg  (prefix-numeric-value arg)))
         (unmark             (and numarg  (>= numarg 0)))
         (ignorep            (and numarg  (<= numarg 0)))
         (dired-marker-char  (if unmark ?\040 dired-marker-char))
         (sdirs              (diredp-get-subdirs ignorep nil details))
         (changed            0)
         (matched            0)
         dbufs chg.mtch)
