From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: Minibuffer default values list Date: Sun, 28 Oct 2007 12:57:19 +0200 Organization: JURTA Message-ID: <87hckbecc0.fsf@jurta.org> References: <87zlycuhrd.fsf@jurta.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1193569951 13658 80.91.229.12 (28 Oct 2007 11:12:31 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 28 Oct 2007 11:12:31 +0000 (UTC) Cc: emacs-devel@gnu.org To: rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Oct 28 12:12:32 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Im64F-0001yy-8u for ged-emacs-devel@m.gmane.org; Sun, 28 Oct 2007 12:12:31 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Im646-00066X-0L for ged-emacs-devel@m.gmane.org; Sun, 28 Oct 2007 07:12:22 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Im642-00066J-Ve for emacs-devel@gnu.org; Sun, 28 Oct 2007 07:12:19 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Im642-000667-3b for emacs-devel@gnu.org; Sun, 28 Oct 2007 07:12:18 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Im642-000664-0o for emacs-devel@gnu.org; Sun, 28 Oct 2007 07:12:18 -0400 Original-Received: from mailman.kiev.sovam.com ([89.162.150.100]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Im63x-0003lh-GU; Sun, 28 Oct 2007 07:12:13 -0400 Original-Received: from relay01.kiev.sovam.com ([62.64.120.200]) by mailman.kiev.sovam.com with esmtp (Exim 4.63 (FreeBSD)) (envelope-from ) id 1Im8s8-000LW3-H9; Sun, 28 Oct 2007 14:12:12 +0000 Original-Received: from [83.170.232.243] (helo=smtp.svitonline.com) by relay01.kiev.sovam.com with esmtp (Exim 4.67) (envelope-from ) id 1Im63t-000Jbs-QT; Sun, 28 Oct 2007 13:12:10 +0200 In-Reply-To: (Richard Stallman's message of "Tue\, 23 Oct 2007 03\:12\:33 -0400") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.50 (gnu/linux) X-Scanner-Signature: b88a486dba0f71889b871e8b63a4ea3b X-DrWeb-checked: yes X-SpamTest-Envelope-From: juri@jurta.org X-SpamTest-Group-ID: 00000000 X-SpamTest-Header: Not Detected X-SpamTest-Info: Profiles 1690 [Oct 27 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {HEADERS: header Content-Type found without required header Content-Transfer-Encoding} X-SpamTest-Method: none X-SpamTest-Rate: 25 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release X-detected-kernel: by monty-python.gnu.org: FreeBSD 6.x (1) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:81931 Archived-At: > Thanks for implementing this feature. > > Now I propose to improve dired-x to read a list of commands from the mailcap > mechanism, and later to move this code to dired.el. An alternative would be > to start implementing this in dired.el (provide a list of mailcap commands > available via M-n), but then after loading dired-x users will get less > useful list of commands in ! (since this is not implemented in dired-x). > > You could put this code in both. dired-x is not used by most users, > so having it only in dired-x is not very useful. Below is a prototype code that puts commands retrieved by the mailcap feature into the default list of the command `!' in Dired. `M-n' allows selecting a command to run. The default list contains commands common to all marked files. Since mailcap marks the argument placeholder with `%s', it's necessary to replace it with `*' used in Dired for the same purpose, or remove it at the end of the command. If this approach is right, before installing in CVS this code could be changed to not use cl functions. (defun dired-read-shell-command (prompt arg files) (dired-mark-pop-up nil 'shell files (function read-string) (format prompt (dired-mark-prompt arg files)) nil 'shell-command-history (mapcan (lambda (mime-info) (let ((command (cdr (assoc 'viewer mime-info)))) (if (stringp command) (list (replace-regexp-in-string "'%s'" "*" (replace-regexp-in-string "\s*'%s'$" "" command nil t) nil t))))) (reduce 'intersection (mapcar (lambda (mime-type) (mailcap-mime-info mime-type 'all)) (delete-dups (mapcar (lambda (file) (mailcap-extension-to-mime (file-name-extension file t))) files))))))) -- Juri Linkov http://www.jurta.org/emacs/