Function: mailcap-file-default-commands
mailcap-file-default-commands is a byte-compiled function defined in
mailcap.el.gz.
Signature
(mailcap-file-default-commands FILES)
Documentation
Return a list of default commands for FILES.
Source Code
;; Defined in /usr/src/emacs/lisp/net/mailcap.el.gz
;;;
;;; Useful supplementary functions
;;;
(defun mailcap-file-default-commands (files)
"Return a list of default commands for FILES."
(mailcap-parse-mailcaps)
(mailcap-parse-mimetypes)
(let* ((all-mime-type
;; All unique MIME types from file extensions
(delq nil
(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)
(let (res)
(dolist (mi1 (car all-mime-info))
(dolist (mi2 (cdr all-mime-info))
(when (member mi1 mi2)
(push mi1 res))))
(nreverse res))
(car all-mime-info))))
;; Command strings from `viewer' field of the MIME info
(delete-dups
(let (res command)
(dolist (mime-info common-mime-info)
(setq command (cdr (assq 'viewer mime-info)))
(when (stringp command)
(push
(replace-regexp-in-string
;; Replace mailcap's `%s' placeholder
;; with dired's `?' placeholder
"%s" "?"
(replace-regexp-in-string
;; Remove the final filename placeholder
"[ \t\n]*\\('\\)?%s\\1?[ \t\n]*\\'" ""
command nil t)
nil t)
res)))
(nreverse res)))))