   (define-key diredp-menu-bar-mark-menu [mark-sexp] ; In `dired-x.el'.
     '(menu-item "Mark If..." dired-mark-sexp
       :help "Mark files for which specified condition is true")))
+(define-key diredp-menu-bar-mark-menu [image-dired-mark-tagged-files]
+  '(menu-item "Mark Image Files Tagged..." image-dired-mark-tagged-files
+    :enable (fboundp 'image-dired-mark-tagged-files)
+    :help "Mark image files whose image tags match regexp"))
+(define-key diredp-menu-bar-mark-menu [mark-cont]
+  '(menu-item "Mark Containing..." dired-mark-files-containing-regexp
+    :help "Mark files whose contents matches regexp"))
+(define-key diredp-menu-bar-mark-menu [mark]
+  '(menu-item "Mark..." dired-mark-files-regexp
+    :help "Mark files matching regexp"))
 (when (fboundp 'dired-mark-omitted)     ; In `dired-x.el'.
   (define-key diredp-menu-bar-mark-menu [mark-omitted]
     '(menu-item "Mark Omitted..." dired-mark-omitted

Otherwise, just move to the buffer limit."
  (interactive "p")
  (diredp-next-line (- (or arg  1))))
  
;;;###autoload
(defun diredp-next-dirline (arg &optional opoint) ; Bound to `>'
  "Goto ARGth next directory file line.


;; REPLACE ORIGINAL in `dired.el':
;;
;; 1, Added optional arg LOCALP, so you can mark/unmark matching different file-name forms.
;; 2. Push REGEXP onto `regexp-search-ring'.
;;
;;;###autoload
(defun dired-mark-files-regexp (regexp &optional marker-char localp)
  "Mark all files matching REGEXP for use in later commands.
`.' and `..' are never marked or unmarked by this command.

Whether to mark or unmark, and what form of file name to match, are
governed by the prefix argument.  For this, a plain (`C-u') or a
double-plain (`C-u C-u') prefix arg is considered only as such - it is
not considered numerically.

Whether to mark or unmark:

 - No prefix arg, a positive, or a negative arg means mark.

 - Plain (`C-u'), double-plain (`C-u C-u'), or zero (e.g. `M-0' means
   unmark.

The form of a file name used for matching:

 - No prefix arg (to mark) or a plain prefix arg (`C-u', to unmark)
   means use the absolute file name, that is, including all directory
   components.

 - A negative arg (e.g. `M--', to mark) or a zero arg (e.g. `M-0', to
   unmark) means use the relative file name (no directory part).

 - A positive arg (e.g. `M-+', to mark) or a double plain arg (`C-u
   C-u', to unmark) means construct the name relative to
   `default-directory'.  For an entry in an inserted subdir listing,
   this means prefix the relative file name (no directory part) with
   the subdir name relative to `default-directory'.

Note that the default matching behavior of this command is different
for Dired+ than it is for vanilla Emacs.  Using a positive prefix arg
or a double plain prefix arg (`C-u C-u' gives you the same behavior as
vanilla Emacs (marking or unmarking, respectively): matching against
names that are relative to the `default-directory'.

What Dired+ offers in addition is the possibility to match against
names that are absolute (no prefix arg or `C-u', to mark or unmark,
respectively) or relative (have no directory part - `M--' or `M-0',
respectively).  The default behavior uses absolute names because it
gives you more flexibility.

REGEXP is an Emacs regexp, not a shell wildcard.  Thus, use `\\.o$'
for object files--just `.o' might mark more than you might expect.

REGEXP is added to `regexp-search-ring', for regexp search."
  (interactive
   (let* ((raw      current-prefix-arg)
          (C-u      (and (consp raw)  (= 4 (car raw))))
          (C-u-C-u  (and (consp raw)  (= 16 (car raw))))
          (num      (and raw  (prefix-numeric-value raw))))
     (list (dired-read-regexp (concat (if raw "UNmark" "Mark")
                                      " files (regexp): "))
           (and raw  (or C-u  C-u-C-u  (zerop num))  ?\040)
           (cond ((or (not raw)  C-u)  nil) ; none, `C-u'
                 ((> num 0)            t) ; `M-+', `C-u C-u'
                 (t                    'no-dir))))) ; `M--', `M-0'
  (add-to-list 'regexp-search-ring regexp) ; Add REGEXP to `regexp-search-ring'.
  (let ((dired-marker-char  (or marker-char  dired-marker-char)))
    (dired-mark-if (and (not (looking-at dired-re-dot))
                        (not (eolp))    ; Empty line
                        (let ((fn  (dired-get-filename localp t)))
                          (and fn  (diredp-string-match-p regexp fn))))
                   "matching file")))

