[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v
From: |
Juri Linkov |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v |
Date: |
Tue, 22 Apr 2008 19:51:57 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Juri Linkov <jurta> 08/04/22 19:51:57
Index: dired-aux.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dired-aux.el,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -b -r1.168 -r1.169
--- dired-aux.el 10 Apr 2008 14:09:35 -0000 1.168
+++ dired-aux.el 22 Apr 2008 19:51:57 -0000 1.169
@@ -464,67 +464,33 @@
;;; Shell commands
-(declare-function mailcap-parse-mailcaps "mailcap" (&optional path force))
-(declare-function mailcap-parse-mimetypes "mailcap" (&optional path force))
-(declare-function mailcap-extension-to-mime "mailcap" (extn))
-(declare-function mailcap-mime-info "mailcap"
- (string &optional request no-decode))
-
-(defun dired-read-shell-command-default (files)
- "Return a list of default commands for `dired-read-shell-command'."
- (require 'mailcap)
- (mailcap-parse-mailcaps)
- (mailcap-parse-mimetypes)
- (let* ((all-mime-type
- ;; All unique MIME types from file extensions
- (delete-dups (mapcar (lambda (file)
- (mailcap-extension-to-mime
- (file-name-extension file t)))
- files)))
- (all-mime-info
- ;; All MIME info lists
- (delete-dups (mapcar (lambda (mime-type)
- (mailcap-mime-info mime-type 'all))
- all-mime-type)))
- (common-mime-info
- ;; Intersection of mime-infos from different mime-types;
- ;; or just the first MIME info for a single MIME type
- (if (cdr all-mime-info)
- (delq nil (mapcar (lambda (mi1)
- (unless (memq nil (mapcar
- (lambda (mi2)
- (member mi1 mi2))
- (cdr all-mime-info)))
- mi1))
- (car all-mime-info)))
- (car all-mime-info)))
- (commands
- ;; Command strings from `viewer' field of the MIME info
- (delq nil (mapcar (lambda (mime-info)
- (let ((command (cdr (assoc 'viewer mime-info))))
- (if (stringp command)
- (replace-regexp-in-string
- ;; Replace mailcap's `%s' placeholder
- ;; with dired's `?' placeholder
- "%s" "?"
- (replace-regexp-in-string
- ;; Remove the final filename placeholder
- "\s*\\('\\)?%s\\1?\s*\\'" "" command nil
t)
- nil t))))
- common-mime-info))))
- commands))
+(declare-function mailcap-file-default-commands "mailcap" (files))
+
+(defun minibuffer-default-add-dired-shell-commands ()
+ "Return a list of all commands associted with current dired files.
+This function is used to add all related commands retieved by `mailcap'
+to the end of the list of defaults just after the default value."
+ (interactive)
+ (let ((commands (and (boundp 'files) (require 'mailcap nil t)
+ (mailcap-file-default-commands files))))
+ (if (listp minibuffer-default)
+ (append minibuffer-default commands)
+ (cons minibuffer-default commands))))
;; This is an extra function so that you can redefine it, e.g., to use gmhist.
(defun dired-read-shell-command (prompt arg files)
- "Read a dired shell command prompting with PROMPT (using read-string).
+ "Read a dired shell command prompting with PROMPT (using read-shell-command).
ARG is the prefix arg and may be used to indicate in the prompt which
FILES are affected."
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (set (make-local-variable 'minibuffer-default-add-function)
+ 'minibuffer-default-add-dired-shell-commands))
(dired-mark-pop-up
nil 'shell files
#'read-shell-command
(format prompt (dired-mark-prompt arg files))
- nil nil
- (dired-read-shell-command-default files)))
+ nil nil)))
;; The in-background argument is only needed in Emacs 18 where
;; shell-command doesn't understand an appended ampersand `&'.
- [Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v, Chong Yidong, 2008/04/05
- [Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v, Chong Yidong, 2008/04/06
- [Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v, Stefan Monnier, 2008/04/07
- [Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v, Stefan Monnier, 2008/04/10
- [Emacs-diffs] Changes to emacs/lisp/dired-aux.el,v,
Juri Linkov <=