X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 28 Jul 2014 18:27:01 +0000 Resent-Message-ID: <handler.18132.B.14065719968137 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 18132 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-emacs <bug-emacs@HIDDEN> Received: via spool by submit <at> debbugs.gnu.org id=B.14065719968137 (code B ref -1); Mon, 28 Jul 2014 18:27:01 +0000 Received: (at submit) by debbugs.gnu.org; 28 Jul 2014 18:26:36 +0000 Received: from localhost ([127.0.0.1]:41229 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XBpd2-000272-9l for submit <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:26:36 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44233) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <rrt@HIDDEN>) id 1XBpcv-00026Z-9P for submit <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:26:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcp-0004JA-1E for submit <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:26:19 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,HTML_MESSAGE, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38155) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpco-0004J6-Ue for submit <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:26:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcn-0000kU-Ph for bug-gnu-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcm-0004Ie-N8 for bug-gnu-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:17 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:51028) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcm-0004IZ-KX for bug-gnu-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41869) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcm-0005eE-9F for bug-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcj-0004I4-AJ for bug-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:16 -0400 Received: from mail-lb0-x229.google.com ([2a00:1450:4010:c04::229]:53156) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <rrt@HIDDEN>) id 1XBpcj-0004Hd-0B for bug-emacs@HIDDEN; Mon, 28 Jul 2014 14:26:13 -0400 Received: by mail-lb0-f169.google.com with SMTP id s7so6201007lbd.28 for <bug-emacs@HIDDEN>; Mon, 28 Jul 2014 11:26:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:date:message-id:subject:from:to:content-type; bh=pFlc8bUlVfys9JrsbsW+wqKOHSqyHagMu83xxwDJ72k=; b=QpG0CVOK9ZUYY/yiMcD4mYmtfaBbSo/LazT0z5GGj0aK4809NHRtcGW+L08QS/f6Bi 3TuYGVUJ9hVS6p6yrB1tBpyb2Svi2eCTHoWSQd2nISc5esUv2CWp1vbVQdQ8mujL8rp4 NPQO7gYWWBEtPnUk+hF/PUm+wbkFFtc4twxhA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=pFlc8bUlVfys9JrsbsW+wqKOHSqyHagMu83xxwDJ72k=; b=OfjoOtkSN3QFLZAXMYk0hYaC2Cj1i6jt6ijQMMvF+H/Sq4WjQEMiJYDGgm61rhKthP NnAf3HdxEFcXW7Q9GjBdv+xU8voG7yVGA62wTA18kwkUBL6VbhxrZO9EbkknV866TDGO p/UjyGAavDAHnrwq8FxLhuuhYfDaAa3iWtI8a1ctmHLDvVUigYajxMtK3tD8mW01GhpM cFepkdivGpHgUeqOn8FZXmbxqrqTqT5CIFIcY55OIee6pR8RRukWkLtfSrGK3KMqyYaN +eLz7zRkY2mn9mS5ZgUAd7CDCHEo19WBkXDRaB4iaynXWhfwFqUUE+6NaPB9HCidlpUk ogjQ== X-Gm-Message-State: ALoCoQlsMtng9Y6+T/FIdkAwjVy8x5qnFhtrLk/HpbjcFj/VTd2/MBM758QZg7xRT4GU1SdSVeLe MIME-Version: 1.0 X-Received: by 10.112.2.167 with SMTP id 7mr4778614lbv.103.1406571967777; Mon, 28 Jul 2014 11:26:07 -0700 (PDT) Received: by 10.152.163.4 with HTTP; Mon, 28 Jul 2014 11:26:07 -0700 (PDT) Date: Mon, 28 Jul 2014 19:26:07 +0100 Message-ID: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Content-Type: multipart/alternative; boundary=14dae94ee0197dab3e04ff450e14 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.1 (----) --14dae94ee0197dab3e04ff450e14 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable These days, there are mature programs for launching an arbitrary file with an appropriate viewer: run-mailcap (which is mature to the point of obsolescence) and xdg-open on GNU systems; open on Mac OS X; start on MS Windows). xdg-open already works reasonably well: http://lists.gnu.org/archive/html/help-gnu-emacs/2012-01/msg00143.html (I have a fix for the "multiple files" problem, which I'll be sending to xdg-utils upstream when I can.) Hence it would seem sensible to have a new default for dired-guess-shell-alist-default, which matches any file and returns the appropriate command for the OS, probably doing some testing to see which commands are available on a GNU system ("xdg-open", "gvfs-open", "see"=E2= =80=A6). The user then only needs to understand and configure one command-launching system, and the coverage of different filetypes is much more comprehensive in most such systems than in dired-x.el. An advantage to Emacs is that this system could then be used elsewhere. For example, org-mode already has a similar, separate system, org-file-apps, which might benefit from building on dired-x, and only retaining its own configuration where it's desirable to open a file "internally" to org-mode. --=20 http://rrt.sc3d.org --14dae94ee0197dab3e04ff450e14 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>These days, there are mature programs for launching a= n arbitrary file with an appropriate viewer: run-mailcap (which is mature t= o the point of obsolescence) and xdg-open on GNU systems; open on Mac OS X;= start on MS Windows).<br> <br></div>xdg-open already works reasonably well: <a href=3D"http://lists.g= nu.org/archive/html/help-gnu-emacs/2012-01/msg00143.html">http://lists.gnu.= org/archive/html/help-gnu-emacs/2012-01/msg00143.html</a><br clear=3D"all"> <div><div><div><div><div><br></div><div>(I have a fix for the "multipl= e files" problem, which I'll be sending to xdg-utils upstream when= I can.)<br><br></div><div>Hence it would seem sensible to have a new defau= lt for dired-guess-shell-alist-default, which matches any file and returns = the appropriate command for the OS, probably doing some testing to see whic= h commands are available on a GNU system ("xdg-open", "gvfs-= open", "see"=E2=80=A6).<br> <br></div><div>The user then only needs to understand and configure one com= mand-launching system, and the coverage of different filetypes is much more= comprehensive in most such systems than in dired-x.el.<br><br></div><div> An advantage to Emacs is that this system could then be used elsewhere. For= example, org-mode already has a similar, separate system, org-file-apps, w= hich might benefit from building on dired-x, and only retaining its own con= figuration where it's desirable to open a file "internally" t= o org-mode.<br> </div><div><br>-- <br><a href=3D"http://rrt.sc3d.org">http://rrt.sc3d.org</= a> </div></div></div></div></div></div> --14dae94ee0197dab3e04ff450e14--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Reuben Thomas <rrt@HIDDEN> Subject: bug#18132: Acknowledgement (Time for a smarter dired-guess-shell-alist-default? (dired-x.el)) Message-ID: <handler.18132.B.14065719968137.ack <at> debbugs.gnu.org> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> X-Gnu-PR-Message: ack 18132 X-Gnu-PR-Package: emacs Reply-To: 18132 <at> debbugs.gnu.org Date: Mon, 28 Jul 2014 18:27:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 18132 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 18132: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D18132 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Sample code References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> In-Reply-To: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 28 Jul 2014 18:45:01 +0000 Resent-Message-ID: <handler.18132.B18132.14065730899975 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.14065730899975 (code B ref 18132); Mon, 28 Jul 2014 18:45:01 +0000 Received: (at 18132) by debbugs.gnu.org; 28 Jul 2014 18:44:49 +0000 Received: from localhost ([127.0.0.1]:41248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XBpuf-0002ak-Fq for submit <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:44:49 -0400 Received: from mail-la0-f53.google.com ([209.85.215.53]:55048) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <rrt@HIDDEN>) id 1XBpua-0002aR-Fz for 18132 <at> debbugs.gnu.org; Mon, 28 Jul 2014 14:44:44 -0400 Received: by mail-la0-f53.google.com with SMTP id gl10so5858837lab.12 for <18132 <at> debbugs.gnu.org>; Mon, 28 Jul 2014 11:44:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:date:message-id:subject:from:to:content-type; bh=cIE3GgVKRT97YQrdOkMa5QlqF6OuqVLWEzXEiYzf1k4=; b=pgIG0JsNgwbhmBFvFYryGefN0EdadhkSL0Wcw7ub6YCbwW6two3fkZMRtjilnyC7zx W8H8Pn71FKIf9oPEajjxw3bNNcgbSDTwgi7ZuVTfby3uheKY6lWtPmG2MREjbuo8ivCk aeDwA6/0Xj5oDynGa96kvF9EoA7LPgLkWjWfQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=cIE3GgVKRT97YQrdOkMa5QlqF6OuqVLWEzXEiYzf1k4=; b=TcACwngUNEBmLfA1f8+YHK+dZhFR/0/Yd80E8gMwWZG9OBUqElNT7A6KoAO5Ic8cZy KFShO9KoWQgLJHK9TP0nmTPCXoBrFBTVapZ6OM4CQuYptf+SVMvaWOlGKvAT1TewEcsq q6vjNWn6b4zx80ik81J9JprM3ZKe7sLrNJmCIIugc9zZhNR1jJ2WEOuMlnIVwlzJbzH2 E3KsMkJYsm8aiRUBmkayGnEsAoTM4uhFLZ36EYuAFmGrIzoKsnrEuQpV/9JHvMooLFga x1qzq5mQbu9ldmbHaRMR2ThuJ8xAZqjAQNkiRgoOxe0ZjL+pIiIKI69UW0nAWIeIC9mt Eizw== X-Gm-Message-State: ALoCoQkSyeqMc19IayU+03sttQIfS0BpGhPqOmXiQY9RnI6eoswW4kj8UJ0a5lwzmn5KZGNdG5eJ MIME-Version: 1.0 X-Received: by 10.152.87.229 with SMTP id bb5mr11663848lab.75.1406573074092; Mon, 28 Jul 2014 11:44:34 -0700 (PDT) Received: by 10.152.163.4 with HTTP; Mon, 28 Jul 2014 11:44:34 -0700 (PDT) Date: Mon, 28 Jul 2014 19:44:34 +0100 Message-ID: <CAOnWdoiVB8YqOX_X=XNgKfbeP86X_VGZPA+Hkp=ehMYbizmmAQ@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Content-Type: multipart/alternative; boundary=001a11c34e066eaf8804ff45504c X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --001a11c34e066eaf8804ff45504c Content-Type: text/plain; charset=UTF-8 Xah Lee has already written some code to do this: http://ergoemacs.org/emacs/emacs_dired_open_file_in_ext_apps.html -- http://rrt.sc3d.org --001a11c34e066eaf8804ff45504c Content-Type: text/html; charset=UTF-8 <div dir="ltr">Xah Lee has already written some code to do this:<br><br><a href="http://ergoemacs.org/emacs/emacs_dired_open_file_in_ext_apps.html">http://ergoemacs.org/emacs/emacs_dired_open_file_in_ext_apps.html</a><br clear="all"> <br>-- <br><a href="http://rrt.sc3d.org">http://rrt.sc3d.org</a> </div> --001a11c34e066eaf8804ff45504c--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 29 Jul 2014 23:53:01 +0000 Resent-Message-ID: <handler.18132.B18132.140667792428711 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140667792428711 (code B ref 18132); Tue, 29 Jul 2014 23:53:01 +0000 Received: (at 18132) by debbugs.gnu.org; 29 Jul 2014 23:52:04 +0000 Received: from localhost ([127.0.0.1]:42362 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XCHBc-0007Sv-3A for submit <at> debbugs.gnu.org; Tue, 29 Jul 2014 19:52:04 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:34169 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <juri@HIDDEN>) id 1XCHBZ-0007SU-OX for 18132 <at> debbugs.gnu.org; Tue, 29 Jul 2014 19:52:02 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 5EE3D37E8E88E5; Tue, 29 Jul 2014 16:52:00 -0700 (PDT) From: Juri Linkov <juri@HIDDEN> Organization: JURTA References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> Date: Wed, 30 Jul 2014 02:49:31 +0300 In-Reply-To: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> (Reuben Thomas's message of "Mon, 28 Jul 2014 19:26:07 +0100") Message-ID: <87d2cn67zo.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > These days, there are mature programs for launching an arbitrary file with > an appropriate viewer: run-mailcap (which is mature to the point of > obsolescence) and run-mailcap is fully supported by shell-command and async-shell-command where the list of available commands can be accessed using M-n in its minibuffer. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > These days, there are mature programs for launching an arbitrary file with > an appropriate viewer: run-mailcap (which is mature to the point of > obsolescence) and run-mailcap is fully supported by shell-command and async-shell-command where the list of available commands can be accessed using M-n in its minibuffer. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] > These days, there are mature programs for launching an arbitrary file with > an appropriate viewer: run-mailcap (which is mature to the point of > obsolescence) and run-mailcap is fully supported by shell-command and async-shell-command where the list of available commands can be accessed using M-n in its minibuffer. > xdg-open on GNU systems; open on Mac OS X; start on MS Windows). xdg-open is a single command that is too easy to add to the top of this list.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 30 Jul 2014 03:57:01 +0000 Resent-Message-ID: <handler.18132.B18132.140669256427759 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Reply-To: Eli Zaretskii <eliz@HIDDEN> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140669256427759 (code B ref 18132); Wed, 30 Jul 2014 03:57:01 +0000 Received: (at 18132) by debbugs.gnu.org; 30 Jul 2014 03:56:04 +0000 Received: from localhost ([127.0.0.1]:42456 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XCKzk-0007Df-2k for submit <at> debbugs.gnu.org; Tue, 29 Jul 2014 23:56:04 -0400 Received: from mtaout21.012.net.il ([80.179.55.169]:37324) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <eliz@HIDDEN>) id 1XCKzg-0007D9-Pq for 18132 <at> debbugs.gnu.org; Tue, 29 Jul 2014 23:56:02 -0400 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0N9I00700A5CMZ00@HIDDEN> for 18132 <at> debbugs.gnu.org; Wed, 30 Jul 2014 06:55:53 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0N9I007WZAX5KJ70@HIDDEN>; Wed, 30 Jul 2014 06:55:53 +0300 (IDT) Date: Wed, 30 Jul 2014 06:56:12 +0300 From: Eli Zaretskii <eliz@HIDDEN> In-reply-to: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> X-012-Sender: halo1@HIDDEN Message-id: <83bns7ts83.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 1.0 (+) > Date: Mon, 28 Jul 2014 19:26:07 +0100 > From: Reuben Thomas <rrt@HIDDEN> > > These days, there are mature programs for launching an arbitrary file with > an appropriate viewer: run-mailcap (which is mature to the point of > obsolescence) and xdg-open on GNU systems; open on Mac OS X; start on MS > Windows). It would be a bad idea to use 'start' on Windows: it has too many quirks regarding quoting of its command line. Instead, just invoke the existing primitive w32-shell-execute with the 'open' verb. As a nice side effect, this will support Unicode file names, something that is currently impossible when you invoke an external command.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 30 Jul 2014 09:13:02 +0000 Resent-Message-ID: <handler.18132.B18132.140671157028930 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140671157028930 (code B ref 18132); Wed, 30 Jul 2014 09:13:02 +0000 Received: (at 18132) by debbugs.gnu.org; 30 Jul 2014 09:12:50 +0000 Received: from localhost ([127.0.0.1]:42551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XCPwH-0007WX-7C for submit <at> debbugs.gnu.org; Wed, 30 Jul 2014 05:12:49 -0400 Received: from mail-lb0-f171.google.com ([209.85.217.171]:33698) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <rrt@HIDDEN>) id 1XCPwF-0007WJ-15 for 18132 <at> debbugs.gnu.org; Wed, 30 Jul 2014 05:12:48 -0400 Received: by mail-lb0-f171.google.com with SMTP id l4so659065lbv.30 for <18132 <at> debbugs.gnu.org>; Wed, 30 Jul 2014 02:12:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=OU+VvUr9qT/K6fkF/7DKP9pFXTlcpGxtVsyCK8JuChQ=; b=23lIJoJKN6kqa6o2jGm2vNFbYls0dYksV0mfuZ+5HH8SOvjAvXMUIamKmQJ+xSnCXO kdMKeXhwM7JqpJ6lE495f6qI8POWmBSoagQC/jIF0DEXHz2Ei8yV4SXMpQYjniewmIDG I5CPvzcTNqtQK/gx1/0aJfWZbiAU5ql1bSknY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=OU+VvUr9qT/K6fkF/7DKP9pFXTlcpGxtVsyCK8JuChQ=; b=XmDMkFzuGsfSgkiXeBsQvvUo4/2PblESSytjRzEumeBpJeYHzj7KGqRAr6PlTbCUKH +3ZDbQUEZ0qkKG6cTMAlwhfKskxhAA5vqoh65aqHuYImcRelQ6nu4LhsTs9XoZ7+Zkj9 9AcGtsTKyz4SB3v8azULTkeTUrKKqHq31NPwKjsjES00W2Eu21QjSzliiZgkwW4gYMjn GXmMU9bgI4kqs/YhyKlR51pzHziTUEsrN6bxI0+uwncBiQNG1+HkvHqNiKg2mXLumIO/ v4q6uSIFR1inxPLqej0N/90Ufzz0IZ3U+03CF8q64z9kUs5hCypV1rbmbM56Qd+dtmCQ piig== X-Gm-Message-State: ALoCoQlHSFz4gI5Ff96a4puQaZwHJyEbo8al/RbTpoT0yPwKgKmWVR1T8ugKSBDm+WMq1F+mfNQu MIME-Version: 1.0 X-Received: by 10.152.43.34 with SMTP id t2mr3013626lal.28.1406711560710; Wed, 30 Jul 2014 02:12:40 -0700 (PDT) Received: by 10.152.163.4 with HTTP; Wed, 30 Jul 2014 02:12:40 -0700 (PDT) In-Reply-To: <87d2cn67zo.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> Date: Wed, 30 Jul 2014 10:12:40 +0100 Message-ID: <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Content-Type: multipart/alternative; boundary=001a11c35704e0bead04ff658ef6 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --001a11c35704e0bead04ff658ef6 Content-Type: text/plain; charset=UTF-8 On 30 July 2014 00:49, Juri Linkov <juri@HIDDEN> wrote: > > These days, there are mature programs for launching an arbitrary file > with > > an appropriate viewer: run-mailcap (which is mature to the point of > > obsolescence) and > > run-mailcap is fully supported by shell-command and async-shell-command > where > the list of available commands can be accessed using M-n in its minibuffer. > I can't see any mention of run-mailcap in the Emacs source; do you mean simply that it's possible to add it to the list of commands used? > > xdg-open on GNU systems; open on Mac OS X; start on MS Windows). > > xdg-open is a single command that is too easy to add to the top of this > list. > Did you mean "easy too"? So, yes, both of these commands can be added. My original point is that they're not currently used; instead there is a custom list that has to be configured separately by the user from either of these. Hence, I suggest using these commands (and similarly "open" on Mac OS, and, as per Eli's suggestion, w32-shell-execute on Windows) instead of the current contents of dired-guess-shell-alist-default. Since each of these commands tackles all file types, it would seem simplest to add a new function shell-execute, modelled on w32-shell-execute, and have dired-read-shell-command use that instead of dired-guess-shell-command, which could then become an option that shell-execute can be configured to use, for those who are used to it. -- http://rrt.sc3d.org --001a11c35704e0bead04ff658ef6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 3= 0 July 2014 00:49, Juri Linkov <span dir=3D"ltr"><<a href=3D"mailto:juri= @jurta.org" target=3D"_blank">juri@HIDDEN</a>></span> wrote:<br><bloc= kquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #cc= c solid;padding-left:1ex"> > These days, there are mature programs for launching an arbitrary file = with<br> > an appropriate viewer: run-mailcap (which is mature to the point of<br= > > obsolescence) and<br> <br> run-mailcap is fully supported by shell-command and async-shell-command whe= re<br> the list of available commands can be accessed using M-n in its minibuffer.= <br></blockquote><div><br></div><div>I can't see any mention of run-mai= lcap in the Emacs source; do you mean simply that it's possible to add = it to the list of commands used?<br> </div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 = 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> > xdg-open on GNU systems; open on Mac OS X; start on MS Windows).<br> <br> xdg-open is a single command that is too easy to add to the top of this lis= t.<br> </blockquote></div><br></div><div class=3D"gmail_extra">Did you mean "= easy too"?<br><br></div><div class=3D"gmail_extra">So, yes, both of th= ese commands can be added.<br><br>My original point is that they're not= currently used; instead there is a custom list that has to be configured s= eparately by the user from either of these.<br> <br>Hence, I suggest using these commands (and similarly "open" o= n Mac OS, and, as per Eli's suggestion, w32-shell-execute on Windows) i= nstead of the current contents of dired-guess-shell-alist-default.<br><br> </div><div class=3D"gmail_extra">Since each of these commands tackles all f= ile types, it would seem simplest to add a new function shell-execute, mode= lled on w32-shell-execute, and have dired-read-shell-command use that inste= ad of dired-guess-shell-command, which could then become an option that she= ll-execute can be configured to use, for those who are used to it.<br> </div><div class=3D"gmail_extra"><br>-- <br><a href=3D"http://rrt.sc3d.org"= >http://rrt.sc3d.org</a> </div></div> --001a11c35704e0bead04ff658ef6--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 30 Jul 2014 16:38:02 +0000 Resent-Message-ID: <handler.18132.B18132.140673822724924 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140673822724924 (code B ref 18132); Wed, 30 Jul 2014 16:38:02 +0000 Received: (at 18132) by debbugs.gnu.org; 30 Jul 2014 16:37:07 +0000 Received: from localhost ([127.0.0.1]:52028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XCWsE-0006To-Cc for submit <at> debbugs.gnu.org; Wed, 30 Jul 2014 12:37:06 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:51491 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <juri@HIDDEN>) id 1XCWsB-0006SY-Aw for 18132 <at> debbugs.gnu.org; Wed, 30 Jul 2014 12:37:04 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 589F93725F96A3; Wed, 30 Jul 2014 09:37:01 -0700 (PDT) From: Juri Linkov <juri@HIDDEN> Organization: JURTA References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> Date: Wed, 30 Jul 2014 19:32:58 +0300 In-Reply-To: <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> (Reuben Thomas's message of "Wed, 30 Jul 2014 10:12:40 +0100") Message-ID: <87bns6dcul.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> run-mailcap is fully supported by shell-command and async-shell-command where >> the list of available commands can be accessed using M-n in its minibuffer. > > I can't see any mention of run-mailcap in the Emacs source; do you mean > simply that it's possible to add it to the list of commands used? [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> run-mailcap is fully supported by shell-command and async-shell-command where >> the list of available commands can be accessed using M-n in its minibuffer. > > I can't see any mention of run-mailcap in the Emacs source; do you mean > simply that it's possible to add it to the list of commands used? [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >> run-mailcap is fully supported by shell-command and async-shell-command where >> the list of available commands can be accessed using M-n in its minibuffer. > > I can't see any mention of run-mailcap in the Emacs source; do you mean > simply that it's possible to add it to the list of commands used? grep -nH mailcap *.el ./dired-aux.el:558:(declare-function mailcap-file-default-commands "mailcap" (files)) ./dired-aux.el:562:This function is used to add all related commands retrieved by `mailcap' ./dired-aux.el:565: (let ((commands (and (boundp 'files) (require 'mailcap nil t) ./dired-aux.el:566: (mailcap-file-default-commands files)))) ./simple.el:2743:(declare-function mailcap-file-default-commands "mailcap" (files)) ./simple.el:2748:This function is used to add all related commands retrieved by `mailcap' ./simple.el:2754: (commands (and filename (require 'mailcap nil t) ./simple.el:2755: (mailcap-file-default-commands (list filename))))) > My original point is that they're not currently used; instead there is a > custom list that has to be configured separately by the user from either of > these. We could leave the original list intact, and add xdg-open/w32-shell-execute to the top of the list, so it would be the first suggestion that the user will get after the first M-n. There is a good example how to check its availability in `browse-url-can-use-xdg-open' that could be moved to a more general file like simple.el.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 30 Jul 2014 16:45:01 +0000 Resent-Message-ID: <handler.18132.B18132.140673866325644 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140673866325644 (code B ref 18132); Wed, 30 Jul 2014 16:45:01 +0000 Received: (at 18132) by debbugs.gnu.org; 30 Jul 2014 16:44:23 +0000 Received: from localhost ([127.0.0.1]:52043 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XCWzH-0006fX-5I for submit <at> debbugs.gnu.org; Wed, 30 Jul 2014 12:44:23 -0400 Received: from mail-la0-f47.google.com ([209.85.215.47]:65259) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <rrt@HIDDEN>) id 1XCWzD-0006fJ-ND for 18132 <at> debbugs.gnu.org; Wed, 30 Jul 2014 12:44:21 -0400 Received: by mail-la0-f47.google.com with SMTP id mc6so1137708lab.34 for <18132 <at> debbugs.gnu.org>; Wed, 30 Jul 2014 09:44:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=2GfkD9Dr9auYjN10lIRGnJLUKQRJpjQ9254uaWm/Qo8=; b=MPuFP/JbWeXBNMjTE9LMeRduVRpliubOIknxxRANuaqbv/ZmtwRC8ERSq1p2iKEtdB 44lf98qruLeDEvvqODUIJuW8XfDYzGKap6qj8fsWR11QW72hlHTIFDYZZSexBN0G6bB1 2evQfLTEji4xVKhcu1LXtCMHWFBaBDiDnmxa0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=2GfkD9Dr9auYjN10lIRGnJLUKQRJpjQ9254uaWm/Qo8=; b=FhN7GrFRFoXegnBFkSrM3Jmh7nitXTJTnNe0JuyW0w1CrqCObePSQDEdvUZkYMQNvD xY9CBKz0UHuyB8kzREAfUPTn88AUelT5XCgTaZFDZh++l6Hl4YBt/MRsKWjIiYKNqUEN TKb04rnXj3sbErM+1fG/iq0GRdSPDrC5nCpwMB88RkOUIjK3KKljleT0X3w2Gwl6ZtHY brfU7UK8X4NhxD8kgAriynNScpa1DyxtlZ4eZr3atRTJ7GiRy/C8NGNrPE47nRw/TJkj qJFYODXgLJ7FV9hNbe12bC+TiaOhUydkv+yWhhqPZPXaf611Hw21sdH5sUaAf2xt5sMw tdRg== X-Gm-Message-State: ALoCoQnYzNBXnJApIdnyT34PtAzc9IJkBCOHlpOEFB6eWiUpqAfZgTt/0wNL52ziGWP4obZYK5ux MIME-Version: 1.0 X-Received: by 10.152.202.197 with SMTP id kk5mr6059276lac.19.1406738653536; Wed, 30 Jul 2014 09:44:13 -0700 (PDT) Received: by 10.152.163.4 with HTTP; Wed, 30 Jul 2014 09:44:13 -0700 (PDT) In-Reply-To: <87bns6dcul.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> Date: Wed, 30 Jul 2014 17:44:13 +0100 Message-ID: <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Content-Type: multipart/alternative; boundary=001a1135f8dcbc811604ff6bdd85 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --001a1135f8dcbc811604ff6bdd85 Content-Type: text/plain; charset=UTF-8 On 30 July 2014 17:32, Juri Linkov <juri@HIDDEN> wrote: > >> run-mailcap is fully supported by shell-command and async-shell-command > where > >> the list of available commands can be accessed using M-n in its > minibuffer. > > > > I can't see any mention of run-mailcap in the Emacs source; do you mean > > simply that it's possible to add it to the list of commands used? > > grep -nH mailcap *.el > ./dired-aux.el:558:(declare-function mailcap-file-default-commands > "mailcap" (files)) > ./dired-aux.el:562:This function is used to add all related commands > retrieved by `mailcap' > ./dired-aux.el:565: (let ((commands (and (boundp 'files) (require > 'mailcap nil t) > ./dired-aux.el:566: (mailcap-file-default-commands > files)))) > ./simple.el:2743:(declare-function mailcap-file-default-commands "mailcap" > (files)) > ./simple.el:2748:This function is used to add all related commands > retrieved by `mailcap' > ./simple.el:2754: (commands (and filename (require 'mailcap nil t) > ./simple.el:2755: (mailcap-file-default-commands > (list filename))))) > I'm sorry if I've missed something, but I don't see what this has to do with run-mailcap. > We could leave the original list intact, and add xdg-open/w32-shell-execute > to the top of the list, so it would be the first suggestion that the user > will get after the first M-n. > It would be good to discourage customization of dired-guess-shell-alist-{default,user}, and steer users towards the non-program-specific mechanisms. It would also be good eventually not to have to maintain the list, or indeed the dired-guess-shell mechanism at all. As for your mention of "the first M-n", as far as I can discover, the first time I press M-n, the default command, which was already mentioned in the prompt, is simply inserted at point, as if I had typed it. So is "the first suggestion that the user will get after the first M-n" actually the same thing as "the default suggestion"? (I hope so!) > There is a good example how to check its availability in > `browse-url-can-use-xdg-open' that could be moved > to a more general file like simple.el. > Thanks for the pointer. -- http://rrt.sc3d.org --001a1135f8dcbc811604ff6bdd85 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 3= 0 July 2014 17:32, Juri Linkov <span dir=3D"ltr"><<a href=3D"mailto:juri= @jurta.org" target=3D"_blank">juri@HIDDEN</a>></span> wrote:<br><bloc= kquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #cc= c solid;padding-left:1ex"> <div class=3D"">>> run-mailcap is fully supported by shell-command an= d async-shell-command where<br> >> the list of available commands can be accessed using M-n in its mi= nibuffer.<br> ><br> > I can't see any mention of run-mailcap in the Emacs source; do you= mean<br> > simply that it's possible to add it to the list of commands used?<= br> <br> </div>grep -nH mailcap *.el<br> ./dired-aux.el:558:(declare-function mailcap-file-default-commands "ma= ilcap" (files))<br> ./dired-aux.el:562:This function is used to add all related commands retrie= ved by `mailcap'<br> ./dired-aux.el:565: =C2=A0(let ((commands (and (boundp 'files) (require= 'mailcap nil t)<br> ./dired-aux.el:566: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0(mailcap-file-default-commands files))))<br> ./simple.el:2743:(declare-function mailcap-file-default-commands "mail= cap" (files))<br> ./simple.el:2748:This function is used to add all related commands retrieve= d by `mailcap'<br> ./simple.el:2754: =C2=A0 =C2=A0 =C2=A0 =C2=A0(commands (and filename (requi= re 'mailcap nil t)<br> ./simple.el:2755: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 (mailcap-file-default-commands (list filename)))))<br>= </blockquote><div><br></div><div>I'm sorry if I've missed something= , but I don't see what this has to do with run-mailcap.<br> </div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 = 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We could leave the or= iginal list intact, and add xdg-open/w32-shell-execute<br> to the top of the list, so it would be the first suggestion that the user<b= r> will get after the first M-n.<br></blockquote><div><br></div><div>It would = be good to discourage customization of dired-guess-shell-alist-{default,use= r}, and steer users towards the non-program-specific mechanisms. It would a= lso be good eventually not to have to maintain the list, or indeed the dire= d-guess-shell mechanism at all.<br> <br></div><div>As for your mention of "the first M-n", as far as = I can discover, the first time I press M-n, the default command, which was = already mentioned in the prompt, is simply inserted at point, as if I had t= yped it. So is "the first suggestion that the user will get after the = first M-n" actually the same thing as "the default suggestion&quo= t;? (I hope so!)<br> </div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 = 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> There is a good example how to check its availability in<br> `browse-url-can-use-xdg-open' that could be moved<br> to a more general file like simple.el.<br> </blockquote></div><br></div><div class=3D"gmail_extra">Thanks for the poin= ter.<br clear=3D"all"></div><div class=3D"gmail_extra"><br>-- <br><a href= =3D"http://rrt.sc3d.org">http://rrt.sc3d.org</a> </div></div> --001a1135f8dcbc811604ff6bdd85--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 05 Aug 2014 00:11:02 +0000 Resent-Message-ID: <handler.18132.B18132.140719744512729 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.140719744512729 (code B ref 18132); Tue, 05 Aug 2014 00:11:02 +0000 Received: (at 18132) by debbugs.gnu.org; 5 Aug 2014 00:10:45 +0000 Received: from localhost ([127.0.0.1]:58010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XESKy-0003JD-Ch for submit <at> debbugs.gnu.org; Mon, 04 Aug 2014 20:10:44 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:58440 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <juri@HIDDEN>) id 1XESKv-0003Iy-Eu for 18132 <at> debbugs.gnu.org; Mon, 04 Aug 2014 20:10:42 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 0C5453094551C1; Mon, 4 Aug 2014 17:10:39 -0700 (PDT) From: Juri Linkov <juri@HIDDEN> Organization: JURTA References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> Date: Tue, 05 Aug 2014 02:45:55 +0300 In-Reply-To: <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> (Reuben Thomas's message of "Wed, 30 Jul 2014 17:44:13 +0100") Message-ID: <87silbstsc.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > I'm sorry if I've missed something, but I don't see what this has to do > with run-mailcap. run-mailcap always runs the first alternative, but with `mailcap-file-default-commands' you can select a command to run using several M-n. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > I'm sorry if I've missed something, but I don't see what this has to do > with run-mailcap. run-mailcap always runs the first alternative, but with `mailcap-file-default-commands' you can select a command to run using several M-n. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] > I'm sorry if I've missed something, but I don't see what this has to do > with run-mailcap. run-mailcap always runs the first alternative, but with `mailcap-file-default-commands' you can select a command to run using several M-n. > It would be good to discourage customization of > dired-guess-shell-alist-{default,user}, and steer users towards the > non-program-specific mechanisms. It would also be good eventually not to > have to maintain the list, or indeed the dired-guess-shell mechanism at all. Instead of customization, a more useful UI would be to remember the most frequently used commands, and provide them at the top of the completions in the minibuffer. > As for your mention of "the first M-n", as far as I can discover, the first > time I press M-n, the default command, which was already mentioned in the > prompt, is simply inserted at point, as if I had typed it. So is "the first > suggestion that the user will get after the first M-n" actually the same > thing as "the default suggestion"? (I hope so!) Yes, this is so when the prompt displays the default value.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 05 Aug 2014 09:42:01 +0000 Resent-Message-ID: <handler.18132.B18132.14072317198808 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.14072317198808 (code B ref 18132); Tue, 05 Aug 2014 09:42:01 +0000 Received: (at 18132) by debbugs.gnu.org; 5 Aug 2014 09:41:59 +0000 Received: from localhost ([127.0.0.1]:58274 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1XEbFm-0002Hz-87 for submit <at> debbugs.gnu.org; Tue, 05 Aug 2014 05:41:58 -0400 Received: from mail-la0-f51.google.com ([209.85.215.51]:45224) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <rrt@HIDDEN>) id 1XEbFi-0002Hk-Tc for 18132 <at> debbugs.gnu.org; Tue, 05 Aug 2014 05:41:56 -0400 Received: by mail-la0-f51.google.com with SMTP id pn19so512270lab.10 for <18132 <at> debbugs.gnu.org>; Tue, 05 Aug 2014 02:41:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=qRrfbmmIIAk1KjwkN7HtxrnC+XK24zhyATZypO3CIjI=; b=tCgvBLdKCl8lKVrEQWkqqK252QDwOkuv8piSSg5Ulo9EeHR3PS6stb1JHWj+J5c9p1 0EDypAiRh4M8s7Qy89VUa/Jq2+JzyHDmVBjIJEg2Evevjl1WLI/QaIfa1IXxgFI6XO5K /Tgib7c+IwQzGoFCHjXl7ij8FDt6ll7RC8g9U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=qRrfbmmIIAk1KjwkN7HtxrnC+XK24zhyATZypO3CIjI=; b=PWAum/IQb85Y/ykJfPk/g2gbmCR2ID4b+IuL2fzL6VcB/KCl5eprN1tpfcmJ5UQrY9 fWyptgwv/NY9lgYa8UZJ8m8OtessFtsjSQZQedMbAGCnkYqbseyJXsp38NLpeVKmTi0v KSW7RTYuJ54KwBsP7wuYvOWp5TLPKG5k271fjOpIN96WUqF1A8AHHz6GbT8c2H+CVunK BEVaUCr2ucFKeCoYswXlscIW2rX3s8kXeasTTVaIdvXmIFLJDffdPf0tsj9xynZfb0c+ RXRd+JFsymhOZIA80x15ZhKyp2qukTtrcGqvbuayCH7rWCCGccUIJP01DXMKNNGfbawS d2yA== X-Gm-Message-State: ALoCoQmD4UNAlS1abtvFgxgaPg27NhvXHx7DAINrFwA3E+QC2eb1Uc1o685NNZLJ2ti4GzwMQxLR MIME-Version: 1.0 X-Received: by 10.112.138.195 with SMTP id qs3mr2556857lbb.49.1407231708695; Tue, 05 Aug 2014 02:41:48 -0700 (PDT) Received: by 10.152.246.10 with HTTP; Tue, 5 Aug 2014 02:41:48 -0700 (PDT) In-Reply-To: <87silbstsc.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> Date: Tue, 5 Aug 2014 10:41:48 +0100 Message-ID: <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Content-Type: multipart/alternative; boundary=089e011609d01d39ed04ffdeaab9 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --089e011609d01d39ed04ffdeaab9 Content-Type: text/plain; charset=UTF-8 On 5 August 2014 00:45, Juri Linkov <juri@HIDDEN> wrote: > > I'm sorry if I've missed something, but I don't see what this has to do > > with run-mailcap. > > run-mailcap always runs the first alternative, but with > `mailcap-file-default-commands' you can select a command > to run using several M-n. > > ... > > Instead of customization, a more useful UI would be to remember > the most frequently used commands, and provide them at the top > of the completions in the minibuffer. > Unfortunately, we seem to have strayed from my question, "can I replace dired-guess-shell-* with a function that calls a suitable file-type dispatcher (xdg-open, open, w32-shell-execute &c.)" to a discussion of mailcap support, which is related, but perhaps better dealt with separately (given that I'm talking about removing, not adding, functionality from Emacs). I was really trying to address two concerns: 1. Do other maintainers agree that it is sensible to remove Emacs's duplicated mechanism for guessing which command to run on a given filetype, and instead use a system mechanism (according to the underlying system)? 2. I assume that for reasons of backward compatibility it would not be acceptable immediately to remove dired-guess-shell-*, hence my suggestion to implement step 1 in the first instance by supplying a new default value for dired-guess-shell-alist-default. If later this variable could be deprecated and replaced with a simple function, so much the better. -- http://rrt.sc3d.org --089e011609d01d39ed04ffdeaab9 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 5= August 2014 00:45, Juri Linkov <span dir=3D"ltr"><<a href=3D"mailto:jur= i@HIDDEN" target=3D"_blank">juri@HIDDEN</a>></span> wrote:<br><blo= ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c= cc solid;padding-left:1ex"> <div class=3D"">> I'm sorry if I've missed something, but I don&= #39;t see what this has to do<br> > with run-mailcap.<br> <br> </div>run-mailcap always runs the first alternative, but with<br> `mailcap-file-default-commands' you can select a command<br> to run using several M-n.<br> <div class=3D""><br></div></blockquote><div>... <br></div><blockquote class= =3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd= ing-left:1ex"><div class=3D""> <br> </div>Instead of customization, a more useful UI would be to remember<br> the most frequently used commands, and provide them at the top<br> of the completions in the minibuffer.<br> </blockquote><div><br></div><div>Unfortunately, we seem to have strayed fro= m my question, "can I replace dired-guess-shell-* with a function that= calls a suitable file-type dispatcher (xdg-open, open, w32-shell-execute &= amp;c.)" to a discussion of mailcap support, which is related, but per= haps better dealt with separately (given that I'm talking about removin= g, not adding, functionality from Emacs).<br> <br></div><div>I was really trying to address two concerns:<br><br></div><d= iv>1. Do other maintainers agree that it is sensible to remove Emacs's = duplicated mechanism for guessing which command to run on a given filetype,= and instead use a system mechanism (according to the underlying system)?<b= r> <br></div><div>2. I assume that for reasons of backward compatibility it wo= uld not be acceptable immediately to remove dired-guess-shell-*, hence my s= uggestion to implement step 1 in the first instance by supplying a new defa= ult value for dired-guess-shell-alist-default. If later this variable could= be deprecated and replaced with a simple function, so much the better.<br> </div></div><br>-- <br><a href=3D"http://rrt.sc3d.org">http://rrt.sc3d.org<= /a> </div></div> --089e011609d01d39ed04ffdeaab9--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Stefan Kangas <stefan@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 05:26:02 +0000 Resent-Message-ID: <handler.18132.B18132.16349667174663 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: Juri Linkov <juri@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16349667174663 (code B ref 18132); Sat, 23 Oct 2021 05:26:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 05:25:17 +0000 Received: from localhost ([127.0.0.1]:34151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1me9Wv-0001D9-9C for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 01:25:17 -0400 Received: from mail-pj1-f50.google.com ([209.85.216.50]:43644) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1me9Wt-0001Cq-4l for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 01:25:16 -0400 Received: by mail-pj1-f50.google.com with SMTP id k2-20020a17090ac50200b001a218b956aaso248075pjt.2 for <18132 <at> debbugs.gnu.org>; Fri, 22 Oct 2021 22:25:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:user-agent :mime-version:date:message-id:subject:to:cc; bh=F4muWsel3OfhOKsXUG1ea0mxsLpEkqnRfbZeqZ+QQ84=; b=PJ70XAOUV3ndSeY50IJN13SuGFbV9mpxO6W9sRhT3SoAYrtaoQT6qyFwV5PRoZgMZa vAcYyLDfU9NN/0PYCDaz8ATaLItkRXG7J7tZcDQ3cmE+z2ueIxH86hdT1huzng9KcaLx LDeeaGLZ3JMNAkTEQyRhSpV5smbGVxC7WHwmJxMl/D4PNuOnPyI/hhEnWPkFPS/c/mef xkTkRiYCYl1OYF3moy52VNXf01cs4D+QmQ27G5pcF+ddktekDRAWx1WvvjkGFVm6wmQ3 thIxanG43F6VCuMqnMWAZaoWlPpySwF76wBDwe+Do/NORAz5lHh/EMpXiiczWMt0Qqs1 WhlA== X-Gm-Message-State: AOAM530tAX8LVPE3wqSLUK9+D93+N+l5XOu6QvOD2hpZGaklbRUJkzBJ x4bF2tBwEb0XFR3CST4x5hXp4ShHCABRea6zyLo= X-Google-Smtp-Source: ABdhPJzX7XaJ9bgj8nZnhN4af96yCxWTXdsQ9CGP4GUJ64g8q+r/Ax4n4WSSl+9/LXXjih1ai5aiaM4mckIq0WjBMYI= X-Received: by 2002:a17:90b:3b86:: with SMTP id pc6mr2271380pjb.143.1634966709519; Fri, 22 Oct 2021 22:25:09 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 22 Oct 2021 22:25:09 -0700 From: Stefan Kangas <stefan@HIDDEN> In-Reply-To: <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> (Reuben Thomas's message of "Tue, 5 Aug 2014 10:41:48 +0100") References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Date: Fri, 22 Oct 2021 22:25:09 -0700 Message-ID: <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Reuben Thomas <rrt@HIDDEN> writes: > Unfortunately, we seem to have strayed from my question, "can I > replace dired-guess-shell-* with a function that calls a suitable > file-type dispatcher (xdg-open, open, w32-shell-execute &c.)" to a > discussion of mailcap support, which is related, but perhaps better > dealt with separately (given that I'm talking about removing, not > adding, functionality from Emacs). > > I was really trying to address two concerns: > > 1. Do other maintainers agree that it is sensible to remove Emacs's > duplicated mechanism for guessing which command to run on a given > filetype, and instead use a system mechanism (according to the > underlying system)? I agree, but I will add that it would be very nice if we don't lose the capability of seeing which command will be run on a file when typing & (dired-do-async-shell-command) on a file in Dired. It sucks when the default only says "xdg-open", as you don't know what program that will open or if it is indeed the one you want. Does xdg-open have the capability to just print what it would run without actually executing it? I can't see such a flag on Debian stable/bookworm. If that is missing, should we perhaps add a feature request for it? https://www.freedesktop.org/wiki/Software/xdg-utils/ But in that case, we would need to check for that capability first, somehow... > 2. I assume that for reasons of backward compatibility it would not be > acceptable immediately to remove dired-guess-shell-*, hence my > suggestion to implement step 1 in the first instance by supplying a > new default value for dired-guess-shell-alist-default. If later this > variable could be deprecated and replaced with a simple function, so > much the better. Right, we can't just remove it outright.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 07:46:01 +0000 Resent-Message-ID: <handler.18132.B18132.163497512818978 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163497512818978 (code B ref 18132); Sat, 23 Oct 2021 07:46:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 07:45:28 +0000 Received: from localhost ([127.0.0.1]:34270 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meBiZ-0004w1-V9 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 03:45:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1meBiV-0004vm-Q7 for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 03:45:26 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53768) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meBiO-00031y-V7; Sat, 23 Oct 2021 03:45:16 -0400 Received: from [87.69.77.57] (port=2893 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meBiI-0006os-Lz; Sat, 23 Oct 2021 03:45:15 -0400 Date: Sat, 23 Oct 2021 10:44:57 +0300 Message-Id: <83lf2k5gna.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> (message from Stefan Kangas on Fri, 22 Oct 2021 22:25:09 -0700) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stefan Kangas <stefan@HIDDEN> > Date: Fri, 22 Oct 2021 22:25:09 -0700 > Cc: 18132 <at> debbugs.gnu.org > > Reuben Thomas <rrt@HIDDEN> writes: > > > 1. Do other maintainers agree that it is sensible to remove Emacs's > > duplicated mechanism for guessing which command to run on a given > > filetype, and instead use a system mechanism (according to the > > underlying system)? > > I agree, but I will add that it would be very nice if we don't lose the > capability of seeing which command will be run on a file when typing & > (dired-do-async-shell-command) on a file in Dired. It sucks when the > default only says "xdg-open", as you don't know what program that will > open or if it is indeed the one you want. It's not only that. Emacs's ability to run programs given a file can extend and surpass those of the underlying OS, and the ability of Emacs users to configure and customize that in a unified system-independent manner are either better or simply not available at all in the OS-level tools which offer similar functionality. So I think it would be nice to extend dired-guess-shell-* so that it could delegate to the OS-level capabilities like xdg-open or w32-shell-execute, but we should preserve the abilities to override or extend that with Emacs-level associations between files and programs. > > 2. I assume that for reasons of backward compatibility it would not be > > acceptable immediately to remove dired-guess-shell-*, hence my > > suggestion to implement step 1 in the first instance by supplying a > > new default value for dired-guess-shell-alist-default. If later this > > variable could be deprecated and replaced with a simple function, so > > much the better. > > Right, we can't just remove it outright. I'm not sure I understand what exactly is proposed here as "step 1", but it sounds like it's the same as my "extend dired-guess-shell-*" proposal above? Then I agree, of course, I just think that we don't need to do anything else, and in particular we should never remove the ability of Emacs users to augment/extend/override those system-level facilities.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Stefan Kangas <stefan@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 08:17:01 +0000 Resent-Message-ID: <handler.18132.B18132.163497701730371 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163497701730371 (code B ref 18132); Sat, 23 Oct 2021 08:17:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 08:16:57 +0000 Received: from localhost ([127.0.0.1]:34300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meCD3-0007tn-CK for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 04:16:57 -0400 Received: from mail-pf1-f181.google.com ([209.85.210.181]:38655) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1meCD1-0007tZ-GV for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 04:16:56 -0400 Received: by mail-pf1-f181.google.com with SMTP id k26so5730608pfi.5 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 01:16:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=ovjPY4SOWG8lwVvQtFig6GhdGVmHDiEqB/j2uZaGWDE=; b=5A0dbq0Rc00aYqXUVNEWs9i/JEHyA8Usu9iiBb83Ay/TU9waqCulX9+Xp6xnzVtUHl NzJlxJvuNzWhU/QTjGqzhuJhsLFEU2XSXy+QwJzUn/wcGrq27ltpGHaCiydZaBp22O/K esUnC1eDP2oBG+6f1aOu39tefnf91gWEiairQ/Dtlc7V2dEY8WCag61wsB5msC3NnM5g 4iacLXoRlkCYlqONPAp94rS2GGFv8GSg/EuwdXPudxc+LEk8ux3RoMuCIxKaTmUuKV3S 9iIsiXm83ClKVItyg7jts22EW5TkT1SHsxqw3OlwERo7/xSgjUOp3kS5RnLK5PZQnRJS QrZw== X-Gm-Message-State: AOAM533jWnwwgxuL+LW5Gm25zf4dui6lmC2URU4fIboOaQoUCopVSXXw Gz6pBIbFyZ5vLTcU0BXMfpGkAJ6e35FqhA0v7Jc= X-Google-Smtp-Source: ABdhPJzpK79qu7vx4WQm4CpERNz1JSl+uig8VUkLKQnVI9udOOcz1IYC0amL+lA1IKs2mkkAVs5PLXXH+yxhfjI3Elg= X-Received: by 2002:aa7:978b:0:b0:44c:abf1:a8b8 with SMTP id o11-20020aa7978b000000b0044cabf1a8b8mr5091264pfp.35.1634977009641; Sat, 23 Oct 2021 01:16:49 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 23 Oct 2021 01:16:48 -0700 From: Stefan Kangas <stefan@HIDDEN> In-Reply-To: <83lf2k5gna.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> MIME-Version: 1.0 Date: Sat, 23 Oct 2021 01:16:48 -0700 Message-ID: <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Eli Zaretskii <eliz@HIDDEN> writes: > It's not only that. Emacs's ability to run programs given a file can > extend and surpass those of the underlying OS, and the ability of > Emacs users to configure and customize that in a unified > system-independent manner are either better or simply not available at > all in the OS-level tools which offer similar functionality. > > So I think it would be nice to extend dired-guess-shell-* so that it > could delegate to the OS-level capabilities like xdg-open or > w32-shell-execute, but we should preserve the abilities to override or > extend that with Emacs-level associations between files and programs. That sounds like exactly the right thing to do. So we need to add stuff here, without taking anything away. However, I will add that while we maintain our current capabilities for customization, we might want to consider removing or updating some entries from `dired-guess-shell-alist-default'. For example, we currently recommend xpdf for PDF:s, which, sure, is presumably available "everywhere", but also is pretty lacking in features and just plain clunky compared to something like evince. To make matters even worse, emacs -Q --eval "(progn (require 'dired-x) (dired \"~\"))" happily offers up xpdf as the default command for PDF:s even though I don't even have xpdf installed! So perhaps it's not that ubiquitous these days... you have to specifically install it to even have it. Looking even more closely at this, I guess `xdg-open' could be used as some final fallback, but it doesn't seem to add anything that isn't already available from mailcap? And we already have `mailcap-file-default-commands', so why not just provide a default based on that? On my machine, I get the very reasonable: (mailcap-file-default-commands '("foo.pdf")) => ("evince" "xdg-open") So why not just move the guessing stuff over to dired.el, re-base it on mailcap, and minimize the list in `dired-guess-shell-alist-default' to something more reasonable. Perhaps that list could be just nil by default if we have the usual mailcap stuff?
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 08:36:01 +0000 Resent-Message-ID: <handler.18132.B18132.163497811932183 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163497811932183 (code B ref 18132); Sat, 23 Oct 2021 08:36:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 08:35:19 +0000 Received: from localhost ([127.0.0.1]:34322 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meCUo-0008N1-Id for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 04:35:19 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1meCUl-0008Ml-TT for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 04:35:16 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55150) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meCUf-0000fk-TU; Sat, 23 Oct 2021 04:35:09 -0400 Received: from [87.69.77.57] (port=2203 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meCUc-0004cA-M5; Sat, 23 Oct 2021 04:35:09 -0400 Date: Sat, 23 Oct 2021 11:34:52 +0300 Message-Id: <83h7d85ec3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> (message from Stefan Kangas on Sat, 23 Oct 2021 01:16:48 -0700) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stefan Kangas <stefan@HIDDEN> > Date: Sat, 23 Oct 2021 01:16:48 -0700 > Cc: rrt@HIDDEN, 18132 <at> debbugs.gnu.org > > Eli Zaretskii <eliz@HIDDEN> writes: > > > It's not only that. Emacs's ability to run programs given a file can > > extend and surpass those of the underlying OS, and the ability of > > Emacs users to configure and customize that in a unified > > system-independent manner are either better or simply not available at > > all in the OS-level tools which offer similar functionality. > > > > So I think it would be nice to extend dired-guess-shell-* so that it > > could delegate to the OS-level capabilities like xdg-open or > > w32-shell-execute, but we should preserve the abilities to override or > > extend that with Emacs-level associations between files and programs. > > That sounds like exactly the right thing to do. So we need to add stuff > here, without taking anything away. Yes, that's the idea. > However, I will add that while we maintain our current capabilities for > customization, we might want to consider removing or updating some > entries from `dired-guess-shell-alist-default'. For example, we > currently recommend xpdf for PDF:s, which, sure, is presumably available > "everywhere", but also is pretty lacking in features and just plain > clunky compared to something like evince. > > To make matters even worse, > > emacs -Q --eval "(progn (require 'dired-x) (dired \"~\"))" > > happily offers up xpdf as the default command for PDF:s even though I > don't even have xpdf installed! So perhaps it's not that ubiquitous > these days... you have to specifically install it to even have it. I think that's a separate issue: how to deal with a failure to invoke the program which we guessed would be appropriate for the file in question. I could argue that we should try invoking the program anyway, because failure to invoke it could mean the user should install some component, and that is useful information for the user. > Looking even more closely at this, I guess `xdg-open' could be used as > some final fallback, but it doesn't seem to add anything that isn't > already available from mailcap? And we already have > `mailcap-file-default-commands', so why not just provide a default based > on that? Because that's not portable enough? > On my machine, I get the very reasonable: > > (mailcap-file-default-commands '("foo.pdf")) > => ("evince" "xdg-open") Here, the above returns something much less useful: ("pdftotext ? -" "gv -safer") None of that would have helped me to view a PDF file. So if we want to use mailcap for this, we'd need to extend that, and make it smarter, in particular on non-GNU/Linux platforms. More generally, I'm not sure mailcap is the right tool for the job: its main purpose is to view attachments to email messages, where we generally have metadata (MIME etc.) which is not necessarily available for arbitrary disk files.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Stefan Kangas <stefan@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 09:49:02 +0000 Resent-Message-ID: <handler.18132.B18132.163498250815128 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163498250815128 (code B ref 18132); Sat, 23 Oct 2021 09:49:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 09:48:28 +0000 Received: from localhost ([127.0.0.1]:34411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meDdc-0003vw-4I for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 05:48:28 -0400 Received: from mail-pj1-f51.google.com ([209.85.216.51]:51934) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1meDdZ-0003vi-MK for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 05:48:26 -0400 Received: by mail-pj1-f51.google.com with SMTP id u12so553987pjy.1 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 02:48:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=mZjfyGRcUlW61sLXlL+w9mG9sWkZiHnMshVx297+h9A=; b=UDY/pd1XmI3I74vWigm6d+FlPVKSmQWFQm4PwHnff1l+MF/e5CFGiTZsaDMXPSfG9x yZJjbkylKnbwTffJliKkaEW+7Lf0MzPYt8EP4C1iUX6TDMRFSmvHaAlzYeE+KuJj28Tk jw+JqVvsaRivCs3A1g5955utEdy7bs1AzsD/wR+kTxUdFq+0JOFLZVEq7UxsTSdCQPkw ORTY0qRt+gG/XGCDNNjU5SX7Dy3ne7A6TnSZ6EnkV1PYl9Fp5XYGq7HtVdoaMWSnAwzS eyonG31llHqEeUhhU1cv9Wy0JRHcYVlvia9hdPahtU2UtEcmiwMb0vZYkX76HuzPVWzp ASMw== X-Gm-Message-State: AOAM531mDaTFxbJVZMMp24gkiuXMdjnZLD2E4WI83na6gS6JUcLQIEG3 Sv29L57leZNim94NpBSsRlUSxJldOVrgEdFSXxQ= X-Google-Smtp-Source: ABdhPJwE2hJ2bZ6/gI1yiZGtfLb5jDP+1fnoSM0u+oK7QO+ypZXmlRJVxK7kviW6H/bchp2Ww5ieUQ0jB2S4oxrPnQo= X-Received: by 2002:a17:90a:245:: with SMTP id t5mr5732378pje.133.1634982500037; Sat, 23 Oct 2021 02:48:20 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 23 Oct 2021 02:48:19 -0700 From: Stefan Kangas <stefan@HIDDEN> In-Reply-To: <83h7d85ec3.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <83h7d85ec3.fsf@HIDDEN> MIME-Version: 1.0 Date: Sat, 23 Oct 2021 02:48:19 -0700 Message-ID: <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Eli Zaretskii <eliz@HIDDEN> writes: > More generally, I'm not sure mailcap is the right tool for the job: > its main purpose is to view attachments to email messages, where we > generally have metadata (MIME etc.) which is not necessarily available > for arbitrary disk files. Isn't that just "file --mime-type -b"? file is a BSD command AFAICT so it should presumably be available almost everywhere. I also see in the man page than a certain Reuben Thomas has been involved in its development so maybe he has something to add here. :-)
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 11:49:01 +0000 Resent-Message-ID: <handler.18132.B18132.163498970528224 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163498970528224 (code B ref 18132); Sat, 23 Oct 2021 11:49:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 11:48:25 +0000 Received: from localhost ([127.0.0.1]:34525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meFVh-0007LA-29 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 07:48:25 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49198) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1meFVf-0007Kw-OT for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 07:48:24 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58482) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meFVZ-0002YH-P9; Sat, 23 Oct 2021 07:48:17 -0400 Received: from [87.69.77.57] (port=2406 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meFVZ-0003es-Ak; Sat, 23 Oct 2021 07:48:17 -0400 Date: Sat, 23 Oct 2021 14:48:06 +0300 Message-Id: <83a6j055e1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> (message from Stefan Kangas on Sat, 23 Oct 2021 02:48:19 -0700) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <83h7d85ec3.fsf@HIDDEN> <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stefan Kangas <stefan@HIDDEN> > Date: Sat, 23 Oct 2021 02:48:19 -0700 > Cc: rrt@HIDDEN, 18132 <at> debbugs.gnu.org > > Eli Zaretskii <eliz@HIDDEN> writes: > > > More generally, I'm not sure mailcap is the right tool for the job: > > its main purpose is to view attachments to email messages, where we > > generally have metadata (MIME etc.) which is not necessarily available > > for arbitrary disk files. > > Isn't that just "file --mime-type -b"? file is a BSD command AFAICT so > it should presumably be available almost everywhere. It isn't available on Windows, for starters. (I do have it, but I ported it myself.) And what about files that have no MIME type defined for them? Or where 'file's output is not really useful, like this: $ file --mime-type -b elisp.info application/octet-stream
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 13:02:02 +0000 Resent-Message-ID: <handler.18132.B18132.16349941203305 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16349941203305 (code B ref 18132); Sat, 23 Oct 2021 13:02:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 13:02:00 +0000 Received: from localhost ([127.0.0.1]:34660 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meGeu-0000rF-F8 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:02:00 -0400 Received: from mail-pl1-f174.google.com ([209.85.214.174]:44712) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rrt@HIDDEN>) id 1meGeq-0000qx-3K for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:01:58 -0400 Received: by mail-pl1-f174.google.com with SMTP id t11so4639963plq.11 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 06:01:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GntigtZRpeffG1TRnCZGJGxpWZzr0xkoArolpz1Th68=; b=ZqdtqydKQXIqGk1tCjX6A1JZNuffTifmAm1F3HVBAYsRDPIwqwc/Hq7/UT83U9CxG+ enfPBe/lF8+dnVmo4WaStXcsdqQuiSnMaUCe8F3W2WraZzsSPeThSADMo39SKiVN26i/ BI0uJj4NDyFntvAHH+Kl7whgWhRNGPbY4r8fs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GntigtZRpeffG1TRnCZGJGxpWZzr0xkoArolpz1Th68=; b=q4Ez5IWgfXkqjZpnL3hVoqrSGPdPDDpR4X+o7w3e+wnrfZxsHKCCMtvhhllBMhzJHy reTwWrjSpUyPugx4NDhPB0gd1fJ36VY/26JkY59lsI4eAf2dCRkCIuSDfbibwjx9BgwR GLBeB9S8/fS/t0bs4xhWdICmuluUYu1RXVmPXeZsyq2akNosTe/4+oEVu5lz71Ij02oX VBjDOQn6TvwT090SxwohAFLt6M2rAPVtlIiCRWUwzpve4+GcwK/FuJrAq6VMQ5DYOwYX q+OS8VKAJnnftkIwQQ8XyLWWjWaVSbWsO3rFTxvTxEB531BU2RRjRQHh0uErV71XCTxw hUgw== X-Gm-Message-State: AOAM530QEjWtY6Nv4KNnliGlgvSJkdbuFK53HRbdoqHUmM5rSlHk0bIu ZBVvxK0UDi5XwDu2bfc6a3KmBEm+mIURVqNOnhB4Sw== X-Google-Smtp-Source: ABdhPJwXqniFCY9dWC5KKktDO8txyly467Bj/7PC71Bq1G9Ln/kRoG40bNxtcHkHn3KvXwHd2K97skVzuj9+GTq5SiA= X-Received: by 2002:a17:902:d718:b0:13d:e2ec:1741 with SMTP id w24-20020a170902d71800b0013de2ec1741mr5806908ply.38.1634994110176; Sat, 23 Oct 2021 06:01:50 -0700 (PDT) MIME-Version: 1.0 References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> In-Reply-To: <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Date: Sat, 23 Oct 2021 14:01:39 +0100 Message-ID: <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000025b4e105cf04bb1e" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000025b4e105cf04bb1e Content-Type: text/plain; charset="UTF-8" On Sat, 23 Oct 2021 at 09:16, Stefan Kangas <stefan@HIDDEN> wrote: > > That sounds like exactly the right thing to do. So we need to add stuff > here, without taking anything away. > That would be a shame: there are too many things in Emacs that just get more complicated over time. I'm dubious about the utility of system-independent configuration here too. Looking even more closely at this, I guess `xdg-open' could be used as > some final fallback, but it doesn't seem to add anything that isn't > already available from mailcap? xdg-open uses the underlying desktop system's MIME infrastructure. For a GNU system, that would most typically be GNOME, and its "gio open" (or on older systems, gvfs-open) command. -- https://rrt.sc3d.org --00000000000025b4e105cf04bb1e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr"><span class=3D"gmail_default" style=3D"font-family:arial,helvetica,s= ans-serif;font-size:small"></span>On Sat, 23 Oct 2021 at 09:16, Stefan Kang= as <<a href=3D"mailto:stefan@HIDDEN">stefan@HIDDEN</a>> wrote= :<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.= 8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br> That sounds like exactly the right thing to do.=C2=A0 So we need to add stu= ff<br> here, without taking anything away.<br></blockquote><div><br></div><div><di= v style=3D"font-family:arial,helvetica,sans-serif;font-size:small" class=3D= "gmail_default">That would be a shame: there are too many things in Emacs t= hat just get more complicated over time. I'm dubious about the utility = of system-independent configuration here too.<br></div><br></div><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex"> Looking even more closely at this, I guess `xdg-open' could be used as<= br> some final fallback, but it doesn't seem to add anything that isn't= <br> already available from mailcap?</blockquote><div><br></div><div><div style= =3D"font-family:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_= default">xdg-open uses the underlying desktop system's MIME infrastruct= ure. For a GNU system, that would most typically be GNOME, and its "gi= o open" (or on older systems, gvfs-open) command.</div><br></div>-- <b= r></div><div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div><d= iv dir=3D"ltr"><a href=3D"https://rrt.sc3d.org" target=3D"_blank">https://r= rt.sc3d.org</a></div></div></div></div></div> --00000000000025b4e105cf04bb1e--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 13:07:02 +0000 Resent-Message-ID: <handler.18132.B18132.16349944063808 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16349944063808 (code B ref 18132); Sat, 23 Oct 2021 13:07:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 13:06:46 +0000 Received: from localhost ([127.0.0.1]:34683 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meGjV-0000zL-W3 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:06:46 -0400 Received: from mail-pl1-f177.google.com ([209.85.214.177]:46679) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rrt@HIDDEN>) id 1meGjT-0000z7-Vr for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:06:45 -0400 Received: by mail-pl1-f177.google.com with SMTP id c4so768507plg.13 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 06:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NU0U2NCMz49bYJHNzpipYNA8j/RYtqDPO2w9H0gbQuM=; b=VIo+u/57MTVRnB+tX2GIOBWSQ+hFPOcuud9kL17+GdbuDy34TrmMnOpHNm01t8Veno 4BzZR8Tx03H6Rt4BdEQCVkgnuq/75QanTiBie7xfE99zv+aVVQ0ktyYZ8sq2K0S4p4RL gcEb4RD4w3iBqeZT9RnJQnwirxyyBbKJXtdXA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NU0U2NCMz49bYJHNzpipYNA8j/RYtqDPO2w9H0gbQuM=; b=IhDWlVBIomojTbDNM6ugqjkosGvouNybc3Q+bOiPDL4WqeTV+FbzPBLje4vxyIKRjr b7n0KqW2b4JI/7nvU2V9AceYPjUOo8rYn4NBpU+cEbdGXHMeyr0FqH9ruatGWDD+UURl 5KlluZEyrXd1p4CV/m8gruSnJ0TE/OxNO3wMudDVgc+yFBxLDCKtf72ObmevQfWmayWA i5V1de7BiB3mK31LXDGleQsusReDQCgEORvsHRkMMIyUVYjLqmf3zIkltF+eXlYT9dA1 CpPC8RUorqlXcXkE6KYxV2I7PvZTnrRkt8hKTgWCw5/Lgd7SlhaSpkagLDN55uAHkF99 EUhw== X-Gm-Message-State: AOAM533y0o8LG2vCwib4Ag4skiD6RUYjJNk0TnFAtLfGc8ARMWdGAwp+ fu/FGSzZGNYhxrMkJy7iZCU4BLQIQ1XFawB9hu2aV/zd9a0= X-Google-Smtp-Source: ABdhPJwML52ZN18gtDUdPVh/5SR01buV5xeKI+JBqv5/aLPO9Yxz0KQdi7a9RP9cXtMoD+XcqKg7u3JRbaX70lKQEi8= X-Received: by 2002:a17:902:bd94:b0:13f:f96c:aa22 with SMTP id q20-20020a170902bd9400b0013ff96caa22mr5610119pls.43.1634994398284; Sat, 23 Oct 2021 06:06:38 -0700 (PDT) MIME-Version: 1.0 References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <83h7d85ec3.fsf@HIDDEN> <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> In-Reply-To: <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Date: Sat, 23 Oct 2021 14:06:27 +0100 Message-ID: <CAOnWdoiexqZFZdKfVH=POFgYVhG4FkoutF_O7eBjd32NxH4jEA@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000051e0ec05cf04cc4d" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000051e0ec05cf04cc4d Content-Type: text/plain; charset="UTF-8" On Sat, 23 Oct 2021 at 10:48, Stefan Kangas <stefan@HIDDEN> wrote: > Eli Zaretskii <eliz@HIDDEN> writes: > > > More generally, I'm not sure mailcap is the right tool for the job: > > its main purpose is to view attachments to email messages, where we > > generally have metadata (MIME etc.) which is not necessarily available > > for arbitrary disk files. > > Isn't that just "file --mime-type -b"? file is a BSD command AFAICT so > it should presumably be available almost everywhere. > > I also see in the man page than a certain Reuben Thomas has been > involved in its development so maybe he has something to add here. :-) > I agree with Eli that mailcap is not the right tool for the job. file's MIME-type support is easy to fix for types that don't (yet) have a MIME type supplied; file is actively maintained and frequently released. Note that xdg-open won't use file on a system that has its own MIME-type handling, such as GNOME. -- https://rrt.sc3d.org --00000000000051e0ec05cf04cc4d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr">On Sat, 23 Oct 2021 at 10:48, Stefan Kangas <<a href=3D"mailto:st= efan@HIDDEN">stefan@HIDDEN</a>> wrote:<br></div><blockquote clas= s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r= gb(204,204,204);padding-left:1ex">Eli Zaretskii <<a href=3D"mailto:eliz@= gnu.org" target=3D"_blank">eliz@HIDDEN</a>> writes:<br> <br> > More generally, I'm not sure mailcap is the right tool for the job= :<br> > its main purpose is to view attachments to email messages, where we<br= > > generally have metadata (MIME etc.) which is not necessarily available= <br> > for arbitrary disk files.<br> <br> Isn't that just "file --mime-type -b"?=C2=A0 file is a BSD co= mmand AFAICT so<br> it should presumably be available almost everywhere.<br> <br> I also see in the man page than a certain Reuben Thomas has been<br> involved in its development so maybe he has something to add here.=C2=A0 :-= )<br> </blockquote></div><br clear=3D"all"><div><div style=3D"font-family:arial,h= elvetica,sans-serif;font-size:small" class=3D"gmail_default">I agree with E= li that mailcap is not the right tool for the job.</div><div style=3D"font-= family:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_default">= <br></div><div style=3D"font-family:arial,helvetica,sans-serif;font-size:sm= all" class=3D"gmail_default">file's MIME-type support is easy to fix fo= r types that don't (yet) have a MIME type supplied; file is actively ma= intained and frequently released. Note that xdg-open won't use file on = a system that has its own MIME-type handling, such as GNOME.<br></div></div= ><div><br></div>-- <br><div dir=3D"ltr" class=3D"gmail_signature"><div dir= =3D"ltr"><div><div dir=3D"ltr"><a href=3D"https://rrt.sc3d.org" target=3D"_= blank">https://rrt.sc3d.org</a></div></div></div></div></div> --00000000000051e0ec05cf04cc4d--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 13:21:01 +0000 Resent-Message-ID: <handler.18132.B18132.16349952365211 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, stefan@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16349952365211 (code B ref 18132); Sat, 23 Oct 2021 13:21:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 13:20:36 +0000 Received: from localhost ([127.0.0.1]:34700 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meGwu-0001Lz-8G for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:20:36 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1meGws-0001Lm-KA for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:20:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:32860) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meGwn-0008Ha-44; Sat, 23 Oct 2021 09:20:29 -0400 Received: from [87.69.77.57] (port=4352 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meGwm-0001Ti-N4; Sat, 23 Oct 2021 09:20:29 -0400 Date: Sat, 23 Oct 2021 16:20:16 +0300 Message-Id: <834k976fov.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <CAOnWdoiexqZFZdKfVH=POFgYVhG4FkoutF_O7eBjd32NxH4jEA@HIDDEN> (message from Reuben Thomas on Sat, 23 Oct 2021 14:06:27 +0100) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <83h7d85ec3.fsf@HIDDEN> <CADwFkmmBAT7XchCZxPfesNf0CCYqEDzTocgsaWYoC5FsoOon9g@HIDDEN> <CAOnWdoiexqZFZdKfVH=POFgYVhG4FkoutF_O7eBjd32NxH4jEA@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Reuben Thomas <rrt@HIDDEN> > Date: Sat, 23 Oct 2021 14:06:27 +0100 > Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org > > I agree with Eli that mailcap is not the right tool for the job. (Then why are we still talking about 'file'?) > file's MIME-type support is easy to fix for types that don't (yet) have a MIME type supplied; file is actively > maintained and frequently released. Not sure it will help. Example: $ file --mime-type -k -b lisp/international/uni-bidi.el application/octet-stream Looks like there are some fundamental problems in 'file' that make it not ideal for this purpose, to say the least. Which, to me, just reiterates what I already said up-thread: we should allow users to override what the system-level tools provide, because they will never be 100% satisfactory for our needs.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Stefan Kangas <stefan@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 13:58:02 +0000 Resent-Message-ID: <handler.18132.B18132.163499742710871 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163499742710871 (code B ref 18132); Sat, 23 Oct 2021 13:58:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 13:57:07 +0000 Received: from localhost ([127.0.0.1]:36829 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meHWF-0002pH-9R for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:57:07 -0400 Received: from mail-pj1-f52.google.com ([209.85.216.52]:50945) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1meHWD-0002oo-Je for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 09:57:06 -0400 Received: by mail-pj1-f52.google.com with SMTP id gn3so4916178pjb.0 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 06:57:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=HD39IURI3dM+/WeLZo9UCdLo6Xsw5ham8TJpH2Sf5xo=; b=OcCl7RQbgDEAVPCWEgpsoM23vXm9BXrtkjJkMzMrEmbLyNpqRa32OjNjfymisXMlic IQkdRJQztzqfLRAPY2SjrTtqFaLt8ypCMFSwHXTRZjt1tG6P5WTX4v8acfo1xl9o0mLP PMKrxsNMoYG6MdNG6OpDqALLK+AjapN1VefLOqaS+lJYD6myaaxCdPB7vq+lH+U3vLM5 H0H/KqexIsH48qTKL80jjPavsZAP9ScVkEvvv0Ei0umd4zfcATuoL5/0/Tmu/5Q36i+T lglS/0HKB/KmFzcpl0u3JUCc1YfHcsjfmJg3g9JpJdVADFtf+EpQ9UfbGeSWghwzR/mN 7gUg== X-Gm-Message-State: AOAM533RCuYo/XjfNtk8Lr4A9gKTcw9p2X2rXFFOTsbgxCnN7fxiGobL Bkuyj8jjnUI3lw0SCS8eAp0c5dBOBUq9zzXO2pc= X-Google-Smtp-Source: ABdhPJz2I6fqTQrgnHlk3e3IfDna0m+jqQbr8A+LnONkm+h86Uyarq28Q3UcrZUx8p7DlOo2YoKjpxdI+LEdKfDC8tw= X-Received: by 2002:a17:902:e750:b0:140:2693:b2e8 with SMTP id p16-20020a170902e75000b001402693b2e8mr5813838plf.22.1634997419731; Sat, 23 Oct 2021 06:56:59 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 23 Oct 2021 06:56:59 -0700 From: Stefan Kangas <stefan@HIDDEN> In-Reply-To: <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> MIME-Version: 1.0 Date: Sat, 23 Oct 2021 06:56:59 -0700 Message-ID: <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Reuben Thomas <rrt@HIDDEN> writes: > xdg-open uses the underlying desktop system's MIME infrastructure. For a > GNU system, that would most typically be GNOME, and its "gio open" (or on > older systems, gvfs-open) command. I don't see that shooting away blindly to xdg-open is satisfactory; the user should be able to a) know which command is being run before running it and b) modify it on the fly. Maybe I want to open PDF:s first with one and then another PDF reader to see if it looks the same, just as I would be able to from a graphical file manager. Thus, the most important question to my mind is "how can we get the default command for a file in the best way". I think ideally we should get this from the system, optionally with overrides and/or fallbacks from Emacs or the user. I don't particularly care if it comes from mailcap, from /usr/share/applications, but we should preferably pick the "best" one. Eli says that portability is a concern with mailcap, which is true but also not something we can't work around. You say that mailcap is the wrong tool for the job. (Why?) I claim that the `xdg-open' script does not seem to solve the problem. Then I ask: what is the correct tool for the job of finding the command to run? Maybe we need try several different things? I see that `xdg-open' tries all kinds of different things ("gio open", "gvfs open", "open_generic", etc.). But our needs are different: we want the command as a string, we don't just want to run it. PS. For the sake of simplicity, I would suggest that we could first figure out what to do on GNU/Linux and then we'll see if we can get that solution to work elsewhere or if we need to get other things in place.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 14:05:02 +0000 Resent-Message-ID: <handler.18132.B18132.163499785411790 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163499785411790 (code B ref 18132); Sat, 23 Oct 2021 14:05:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 14:04:14 +0000 Received: from localhost ([127.0.0.1]:36833 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meHd8-000346-3Q for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 10:04:14 -0400 Received: from mail-pj1-f47.google.com ([209.85.216.47]:50709) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rrt@HIDDEN>) id 1meHd3-00033p-Fm for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 10:04:12 -0400 Received: by mail-pj1-f47.google.com with SMTP id gn3so4923931pjb.0 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 07:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qomim8nb2L61S6mo5n+YiU04n4GDihB41m138vMGLkU=; b=t17MM4qo5+m7+LjOMIGXu/DVioQtgYVKb1JFabnyzODYzWlF6eKOu7jTGc+0S27HMu yrdajRAFH/pq2OXPVhHbwZ0L4fpcz533h/4YJTVaxwfe6k9w7HV9hOOx8R4mXZD0ZxNt BIhqQz0cAJK/76vGBxx5cPYwA9K2VTtJ5580Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qomim8nb2L61S6mo5n+YiU04n4GDihB41m138vMGLkU=; b=od7TljOwzKFuD6hh0QGY9vLfGePsgiYtbL58cZq6zY9StJWOA8Mr0zzXp8gvqb/ZiM /3NT8/dphgHBhsrZAhtjyzHGfBDbXcgLZLxOAZ/PhlhzFwZv6bIyLWCmt64wFncUbQc4 P7IigJrYetCxgnFr+HXFS1IRyx4/8xagkGhYl/wQYY0VmZxQtIWZuxj9XxZLNDZkikyi 6U3VHXVS4ihy583Eq9nKXdTkLUZ2dpsKOasayU5exPYGG2paViUZMUI18Cjx9hv3Ix4o 1hpnRVSHiyoakdNajqWkjEKyyLR/Fp+JPQGcb/IdYcJwqrpdcyMPo0opL2vQvuvpKhQZ o1fw== X-Gm-Message-State: AOAM531SIaGJIUacGphaMQJGnRAjl1wUwyCcDFLL33cFDFK4YZgCbUVe jQAYfIMRN66dWZTfm6GCYdm6RLigdMdRuhh2SBTe0A== X-Google-Smtp-Source: ABdhPJxNTrF5NW1eFQ7VzmRZetZEXULVln/W0CjujWbTqmJIW07paHgzAP4DvDNdrcdX3Y4PETnp2t4lX5LKeyUT1pw= X-Received: by 2002:a17:90a:2b8f:: with SMTP id u15mr3092358pjd.44.1634997843491; Sat, 23 Oct 2021 07:04:03 -0700 (PDT) MIME-Version: 1.0 References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> In-Reply-To: <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Date: Sat, 23 Oct 2021 15:03:52 +0100 Message-ID: <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000ab936d05cf059983" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000ab936d05cf059983 Content-Type: text/plain; charset="UTF-8" On Sat, 23 Oct 2021 at 14:57, Stefan Kangas <stefan@HIDDEN> wrote: > Maybe I want to open PDF:s first with > one and then another PDF reader to see if it looks the same, just as I > would be able to from a graphical file manager. > Then you won't be using the default command anyway. You say that mailcap is the wrong tool for the job. (Why?) > I agree with Eli's reasoning. -- https://rrt.sc3d.org --000000000000ab936d05cf059983 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr">On Sat, 23 Oct 2021 at 14:57, Stefan Kangas <<a href=3D"mailto:st= efan@HIDDEN">stefan@HIDDEN</a>> wrote:<br></div><blockquote clas= s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r= gb(204,204,204);padding-left:1ex">Maybe I want to open PDF:s first with<br> one and then another PDF reader to see if it looks the same, just as I<br> would be able to from a graphical file manager.<br></blockquote><div><br></= div><div><div style=3D"font-family:arial,helvetica,sans-serif;font-size:sma= ll" class=3D"gmail_default">Then you won't be using the default command= anyway.</div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0= px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> You say that mailcap is the wrong tool for the job.=C2=A0 (Why?)<br></block= quote><div><br></div><div><div style=3D"font-family:arial,helvetica,sans-se= rif;font-size:small" class=3D"gmail_default">I agree with Eli's reasoni= ng.</div></div></div><br>-- <br><div dir=3D"ltr" class=3D"gmail_signature">= <div dir=3D"ltr"><div><div dir=3D"ltr"><a href=3D"https://rrt.sc3d.org" tar= get=3D"_blank">https://rrt.sc3d.org</a></div></div></div></div></div> --000000000000ab936d05cf059983--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Stefan Kangas <stefan@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 15:46:02 +0000 Resent-Message-ID: <handler.18132.B18132.163500391130099 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163500391130099 (code B ref 18132); Sat, 23 Oct 2021 15:46:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 15:45:11 +0000 Received: from localhost ([127.0.0.1]:36977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meJCp-0007pO-0d for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 11:45:11 -0400 Received: from mail-pf1-f180.google.com ([209.85.210.180]:43530) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1meJCm-0007p1-TZ for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 11:45:09 -0400 Received: by mail-pf1-f180.google.com with SMTP id 187so6362136pfc.10 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 08:45:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=mLqvl/Eo/7+rM8vjmeByhkUF6Yp7w6uZdZ34LAHbhjo=; b=GSRPYQ0A95NkksSaagoZKs5b7AMAnIJezDYPj6qm31QH+4OFHRjZudERMhcitzfLg3 cuTCM7kHr5/AoG5QCu5l+JIXQS0cY9D5Jo4gi7Mf/Bja00khznSry7lVEkEaojxHTVIT 20s+lHXqT3ew7ngZerP6VsDkRiQmsOkBVT35i21mbiDH5QSOm2wLuxD0kUNllkzIYgzT T/9iH9dLI0OWNqX6Ah5B+RRHVaAjg6XroEbYoWpaYGKLorPb4JiaE2s2bHfApCRBojat TtLCMRf1NAaRbfaVZvBPH+JAzcAuzKGijUk5cZXImBgfiVUuvn9DBoOx+b3PXaBahNmR RUag== X-Gm-Message-State: AOAM532XQPAFC/LLa002/zcHI65L3BqKrHNjwSK+YsElpVN7gkvrARCr sBCLBglBiHxIZruIvFsYlxNoMgFYLnCQZWWuzBg= X-Google-Smtp-Source: ABdhPJwq/Ziz8+mUERNo5TYX7DgtZOo/tGZhJCI9nS72UsVQzVZ2AUEFjyGIQdFXLDsMTcPoxLByRf3ElYzbbbHPLxQ= X-Received: by 2002:a63:81c2:: with SMTP id t185mr5143344pgd.114.1635003902965; Sat, 23 Oct 2021 08:45:02 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 23 Oct 2021 08:45:02 -0700 From: Stefan Kangas <stefan@HIDDEN> In-Reply-To: <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> MIME-Version: 1.0 Date: Sat, 23 Oct 2021 08:45:02 -0700 Message-ID: <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Reuben Thomas <rrt@HIDDEN> writes: > On Sat, 23 Oct 2021 at 14:57, Stefan Kangas <stefan@HIDDEN> wrote: > >> Maybe I want to open PDF:s first with >> one and then another PDF reader to see if it looks the same, just as I >> would be able to from a graphical file manager. >> > > Then you won't be using the default command anyway. What I want is more or less the exact behavior of xdg-open, but I want to be able to check the actual command (e.g. "evince", not just "xdg-open") before pressing RET. I also want to be able to override xdg-open with customizations inside Emacs. > I agree with Eli's reasoning. Please bare with me as I'm trying to understand. Is your preference still to just run "xdg-open", as you explained in your original bug report? (It was quite some time ago, which is why I'm asking, in case your position has changed.) Do you agree that if we could get my idea to work, you could have your cake and eat it too? IOW, do you disagree with the approach because you think it is infeasible to make it work well, or because you don't think that the feature sounds useful? Or do you merely disagree with using mailcap to implement it? Thanks.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Gregory Heytings <gregory@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 17:18:02 +0000 Resent-Message-ID: <handler.18132.B.16350094317397 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN X-Debbugs-Original-Cc: bug-gnu-emacs@HIDDEN, 18132 <at> debbugs.gnu.org, Reuben Thomas <rrt@HIDDEN> Received: via spool by submit <at> debbugs.gnu.org id=B.16350094317397 (code B ref -1); Sat, 23 Oct 2021 17:18:02 +0000 Received: (at submit) by debbugs.gnu.org; 23 Oct 2021 17:17:11 +0000 Received: from localhost ([127.0.0.1]:37074 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meKdr-0001vE-6x for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:17:11 -0400 Received: from lists.gnu.org ([209.51.188.17]:47844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gregory@HIDDEN>) id 1meKdo-0001v6-E2 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:17:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48876) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <gregory@HIDDEN>) id 1meKdo-0000Hb-8Q for bug-gnu-emacs@HIDDEN; Sat, 23 Oct 2021 13:17:08 -0400 Received: from heytings.org ([95.142.160.155]:35612) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <gregory@HIDDEN>) id 1meKdm-0000Ii-6W for bug-gnu-emacs@HIDDEN; Sat, 23 Oct 2021 13:17:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635009422; bh=kxv2amKwyu2/uZ4Fppv1VdSBNo/RXlIHIGKYfca8qz4=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Se/VbpjJdzYMFNYoVNJGrBiUbU6ScHHotaXZhCfu3s0mDDDuU4kK6lMkiUc1lNvzB K/BBZ0F1hV5LqZF9NBIf1rOClqU5lYv2i2VuFqTr4N5AK5VTn6yv3wts2skCz8fBfN GEkiinLPUoXLmZLIfWk/IOL4spgL8QYdKHErKal1OJvMo/52W5CdHAVLlmP1wSGuUA 7S2WS6kPu+jYGF0BUMQk/YrAQH5ky2n/v3M6uHZESSeVpPUeWyGZ0k0h/AXPhRtIuV 0vbiL3lyMtpx3j+rskL8AqubJXcHMahBqJv3vpnrIBYkJwVZzrbCo/JBGZ5gl6bD3I 5x2bMWGoheLqw== Date: Sat, 23 Oct 2021 17:17:02 +0000 From: Gregory Heytings <gregory@HIDDEN> In-Reply-To: <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> Message-ID: <2d6e9fbc478a853dcc7f@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@HIDDEN; helo=heytings.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.3 (--) > > What I want is more or less the exact behavior of xdg-open, but I want > to be able to check the actual command (e.g. "evince", not just > "xdg-open") before pressing RET. > xdg-mime query default $(xdg-mime query filetype FILE) should return the name of one of the files /usr/share/applications, and you can check for the line starting with Exec in that file to see what command it launches.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Gregory Heytings <gregory@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 17:18:02 +0000 Resent-Message-ID: <handler.18132.B18132.16350094277380 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, rrt@HIDDEN X-Debbugs-Original-Cc: bug-gnu-emacs@HIDDEN, 18132 <at> debbugs.gnu.org, Reuben Thomas <rrt@HIDDEN> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16350094277380 (code B ref 18132); Sat, 23 Oct 2021 17:18:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 17:17:07 +0000 Received: from localhost ([127.0.0.1]:37071 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meKdn-0001uy-0A for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:17:07 -0400 Received: from heytings.org ([95.142.160.155]:60038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gregory@HIDDEN>) id 1meKdk-0001uo-9M for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:17:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635009422; bh=kxv2amKwyu2/uZ4Fppv1VdSBNo/RXlIHIGKYfca8qz4=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Se/VbpjJdzYMFNYoVNJGrBiUbU6ScHHotaXZhCfu3s0mDDDuU4kK6lMkiUc1lNvzB K/BBZ0F1hV5LqZF9NBIf1rOClqU5lYv2i2VuFqTr4N5AK5VTn6yv3wts2skCz8fBfN GEkiinLPUoXLmZLIfWk/IOL4spgL8QYdKHErKal1OJvMo/52W5CdHAVLlmP1wSGuUA 7S2WS6kPu+jYGF0BUMQk/YrAQH5ky2n/v3M6uHZESSeVpPUeWyGZ0k0h/AXPhRtIuV 0vbiL3lyMtpx3j+rskL8AqubJXcHMahBqJv3vpnrIBYkJwVZzrbCo/JBGZ5gl6bD3I 5x2bMWGoheLqw== Date: Sat, 23 Oct 2021 17:17:02 +0000 From: Gregory Heytings <gregory@HIDDEN> In-Reply-To: <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> Message-ID: <2d6e9fbc478a853dcc7f@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) > > What I want is more or less the exact behavior of xdg-open, but I want > to be able to check the actual command (e.g. "evince", not just > "xdg-open") before pressing RET. > xdg-mime query default $(xdg-mime query filetype FILE) should return the name of one of the files /usr/share/applications, and you can check for the line starting with Exec in that file to see what command it launches.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) In-Reply-To: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> Resent-From: Howard Melman <hmelman@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 17:58:01 +0000 Resent-Message-ID: <handler.18132.B.163501184819870 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 18132 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.163501184819870 (code B ref -1); Sat, 23 Oct 2021 17:58:01 +0000 Received: (at submit) by debbugs.gnu.org; 23 Oct 2021 17:57:28 +0000 Received: from localhost ([127.0.0.1]:37141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meLGp-0005AP-V3 for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:57:28 -0400 Received: from lists.gnu.org ([209.51.188.17]:56606) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1meLGn-0005AF-EU for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 13:57:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53322) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1meLGn-00007g-5r for bug-gnu-emacs@HIDDEN; Sat, 23 Oct 2021 13:57:25 -0400 Received: from ciao.gmane.io ([116.202.254.214]:54460) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1meLGk-00021d-Cw for bug-gnu-emacs@HIDDEN; Sat, 23 Oct 2021 13:57:24 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1meLGh-000533-MO for bug-gnu-emacs@HIDDEN; Sat, 23 Oct 2021 19:57:19 +0200 X-Injected-Via-Gmane: http://gmane.org/ From: Howard Melman <hmelman@HIDDEN> Date: Sat, 23 Oct 2021 13:57:11 -0400 Message-ID: <lyv91neia0.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (darwin) Cancel-Lock: sha1:9v+mUvFv6qY8pzFxwo0z948/isM= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@HIDDEN; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) >> xdg-open uses the underlying desktop system's MIME infrastructure. For a >> GNU system, that would most typically be GNOME, and its "gio open" (or on >> older systems, gvfs-open) command. > > I don't see that shooting away blindly to xdg-open is satisfactory; the > user should be able to a) know which command is being run before running > it and b) modify it on the fly. Maybe I want to open PDF:s first with > one and then another PDF reader to see if it looks the same, just as I > would be able to from a graphical file manager. In the spirit of "we need to add stuff here, without taking anything away" can I suggest just adding a new dired-do-open command that calls out to xdg-open on gnu/linux or open on darwin or windows. Such a command has been written many times and people add it to their local configs. I have it bound on X in dired and use it far more often than I do M-!. Such a command emulates what double clicking on an icon does which most of the time is what a user wants (because it's configured it do what their most common app need is). Having emacs provide the command means it could be correct reguarding shell quoting and other small issues that people might get wrong on their own. For those that want more control either in picking the command that is run or seeing it beforehand, they can use and configure dired-guess-shell-alist-default. -- Howard
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 18:38:02 +0000 Resent-Message-ID: <handler.18132.B18132.163501422432663 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Howard Melman <hmelman@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163501422432663 (code B ref 18132); Sat, 23 Oct 2021 18:38:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 18:37:04 +0000 Received: from localhost ([127.0.0.1]:37273 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meLtA-0008UU-9J for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 14:37:04 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:46147) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1meLt3-0008Sv-SV for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 14:36:58 -0400 Received: (Authenticated sender: juri@HIDDEN) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id C143FFF804; Sat, 23 Oct 2021 18:36:50 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <lyv91neia0.fsf@HIDDEN> Date: Sat, 23 Oct 2021 21:29:38 +0300 In-Reply-To: <lyv91neia0.fsf@HIDDEN> (Howard Melman's message of "Sat, 23 Oct 2021 13:57:11 -0400") Message-ID: <87sfwr8utt.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > Such a command emulates what double clicking on an icon does > which most of the time is what a user wants (because it's > configured it do what their most common app need is). Such a command is long overdue. I used the following command for a long time, and forgot it's not in dired-x. I don't suggest to use this implementation, but something like this. Then like clicking the right mouse button on a file shows a list of available apps to open the file in, and M-& does practically the same with the keyboard. Then like double clicking on an icon, some key should use the default command to open the file. #+begin_src emacs-lisp (define-key dired-mode-map [(control return)] 'my-dired-run-find-file) (defun my-dired-run-find-file () "View file for dired." (interactive) (let* ((file (dired-get-filename))) (cond ((let* ((command (and (functionp 'mm-mime-info) (mm-mime-info (mm-extension-to-mime (file-name-extension file)))))) (if (and command (stringp command)) ;; always return ‘t’ for ‘cond’ (or (ignore (async-shell-command (concat (format command file) "&"))) t)))) ((string-match "\\.html?$" file) (cond ((fboundp 'browse-url) (browse-url file)))) ((string-match "\\.elc?$" file) (load-file file)) ((string-match "\\.info?$" file) (info file)) ((let* ((file-list (list (dired-get-filename))) (command (dired-guess-default file-list)) (async-shell-command-display-buffer nil)) (if (listp command) (setq command (car command))) (if command (async-shell-command (dired-shell-stuff-it command file-list nil 0))))) (t (message "%s" file))))) #+end_src
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: [External] : bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Drew Adams <drew.adams@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 19:23:01 +0000 Resent-Message-ID: <handler.18132.B18132.163501696113126 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN>, Howard Melman <hmelman@HIDDEN> Cc: "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163501696113126 (code B ref 18132); Sat, 23 Oct 2021 19:23:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 19:22:41 +0000 Received: from localhost ([127.0.0.1]:37329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meMbJ-0003Pd-BL for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 15:22:41 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:11374) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <drew.adams@HIDDEN>) id 1meMbG-0003PT-6T for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 15:22:39 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19NJ7kD8018739; Sat, 23 Oct 2021 19:22:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2021-07-09; bh=cthFcXpppPKCBuIPuk531b5EqFtdilxpTDFT8i+tIlk=; b=sRPgDvt/SO1Ms/MJkKK381tFtHb6+5t9NzVq7jNnxjgY89hhxYkU8FdYt+PRrdKo3eR/ vxLnM8OvSWpd3IxuypNUq7rTACxB7aNmFy2lcyPmldF2UV9GSORxILPImA2bLYaQZQlS m49A3swWb4M+YgfpoJsYsrP4R2plQ9lUJiaV/WzPpyuoS0LAR/DrPMh22Jjmg5yDl5lo cy57n9W7bXh0JD41YMk99R8JFtOICTpIR4L5tqbA+hF3gBG3O2asn489qYBcgREE6Eui bKsDYWTm8rxhBKJczYS4waR3iwnYHPgJFc3ZR87XpQEpBDIHNIcjh6fljGjZWgpHc5fK 5w== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3bv9019xr4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 23 Oct 2021 19:22:36 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 19NJH5KV130760; Sat, 23 Oct 2021 19:22:35 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by aserp3030.oracle.com with ESMTP id 3bv8ebdsyy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 23 Oct 2021 19:22:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gBKl7Lv9q+8NGRdltqrcYD5erDk9pDNdduizwwdV1VLHbbgJO/mLlwpDUZKwMYK76r//XRtE/oZVYP/4oU6YM5cUj6w/KQ6oQcKR5O+BqWmUS4jG7ylVPOxGKbr8q75VuK1mC0MeYG1+xMQscq9tuqOrKr782MOreQzgtbUApnHmrY0kUnyFohu9pRQ8CM2jUFgAJxPQmo5PggYW1kXZX0hEUEaxEgYKJIVtpYLUbpa9UcTk88f4h4NkNab8KogiqJ56LYBItFH2AP8dWL3qatHCU2NwvuAqMRaw0fbFSVooL9pFE4jWum7NHZzuwPZOsujcvAr04rKf1/68fu/Z1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cthFcXpppPKCBuIPuk531b5EqFtdilxpTDFT8i+tIlk=; b=BJalUkrTiGZFMcMpfXeAZ2Ud0xEsuub+sXlIBZJJZJ1f0mxb3xY2CLdVIjs2Cly7ZmiE3nr002VJ0hoB/+8trv4BCuUgTw2aDRr6u3wNi5cLZ0GLVrS4fWKEILeBZYXbUILZTzqJ9MTxjcP++Cgsm/AdaCMtpvt74mD+KuETVxdmgdm3ZQ43Izff7QLkhIpt+zVipucdYVo8ITE/ruOySo9JX19bj8xeCioQCHvfySB1Zlm7fxNi1g/BkO34cJis6dS6pcyseYolAn9bOR590p8tmJ2p/f99cFEpVkon/xGdYYHZcaoj9M9qBanDszPuJSXMndwglsiwgK//1IPA7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cthFcXpppPKCBuIPuk531b5EqFtdilxpTDFT8i+tIlk=; b=FhuCSMyR32IuZX4t/mNnYg/pipd/jHdvomWKtGmmw/rYtivIY2s+gm2D5VTR3CGH3tz7fpl56itlu5e8yGahZSkkxTVcfA2vyS+RCvg+mWHBnQz3bMQSzD8rzmdALWIA4kM1cqNo7GMqeW195BAVWY+DF0BQrO5GSUWrexnu4gM= Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by BYAPR10MB3032.namprd10.prod.outlook.com (2603:10b6:a03:82::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Sat, 23 Oct 2021 19:22:33 +0000 Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::c0bc:7c3a:292f:8a82]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::c0bc:7c3a:292f:8a82%8]) with mapi id 15.20.4628.020; Sat, 23 Oct 2021 19:22:33 +0000 From: Drew Adams <drew.adams@HIDDEN> Thread-Topic: [External] : bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Thread-Index: AQHXyD4lOIpRMSpRPEmShgChgQwEK6vg8wUw Date: Sat, 23 Oct 2021 19:22:33 +0000 Message-ID: <SJ0PR10MB5488E976659A2B15E4F920A1F3819@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <lyv91neia0.fsf@HIDDEN> <87sfwr8utt.fsf@HIDDEN> In-Reply-To: <87sfwr8utt.fsf@HIDDEN> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linkov.net; dkim=none (message not signed) header.d=none;linkov.net; dmarc=none action=none header.from=oracle.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: eafde9a7-019d-4be7-55e9-08d9965a76eb x-ms-traffictypediagnostic: BYAPR10MB3032: x-microsoft-antispam-prvs: <BYAPR10MB3032895999B3A3496C76EE82F3819@HIDDEN> x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xn7cs+RYzxzxnACUxAWa2PaDwuyX0DVfdqcIhg6xVMZUCp8GCnXMgkA6mj7FejxoPe+z7+22DzQUBbpfRM9xdr27sRi4RnQUmnW9wrFgu1rjYyd5gxHnjWz12xxC8gHGxYJQnF53Bp5Y1qPm1Gz8kMxDKveEK03cbCFPrCZQo32TGSIimM/bSpjtGvmra9A0+WgrJlH7tvVq5IgRqRI8xPgktGJDwnEVcJ+AmkVy5ON0fomunT8ftHzGE5126/sferEPWUUPYur/lFAe+AvpQwSGtq47Xb+VUDVDERK+r0uaayGhfsXFMMxLAvhDIFnyzkL5JEGfxru832f6OjR+dGsQwmGp0L4eWihijhc0AMd+Ufk2zEWdWp8Z20gcT/ceFQf63QdZKnc5SSyKa4qqhj+g4IwQ0TyAqb8gtM3stOOHwdJD0BlyVbbkx7wKwikRqKI+gUfdtI3uEPKGgUcc3p36TmM1DKU6qnTJAWSoM+16EAUeTykzuJpnPEGJIUFRFowrdqf8DYsBZX33P01w+lrmCFVczCZ/ZqnMaLnk3QNTj0fkb2qeu+75c85fD7KbmnG+O66HShYxOERltLvVPoIZvlIfvgrFkSwuuB670EdmshaIFZ+xpPZ4fOPg3Ssy3QCCS5atcG0X/3yp3Oz9QYWK3MW0NF6thR093XfqaPOJpNGmHhH3ntn2xGn/r8lTXJ7qGRUKCpI8uKo4rDPraUNc9U9jwVUlf/uEoU4K1r4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(5660300002)(4326008)(66446008)(38100700002)(8936002)(316002)(44832011)(33656002)(26005)(186003)(6506007)(52536014)(66574015)(8676002)(7696005)(64756008)(508600001)(122000001)(76116006)(66946007)(66476007)(9686003)(38070700005)(110136005)(2906002)(66556008)(86362001)(71200400001)(55016002)(460985005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: nK6AC6PU6btBg7fq68tIVqjaAYky5tN6r+/jnmEZD9gQ4ZiU9tExrlIEM4rxEtWGjq03B/6x/aK/OgjnxTHARJkyWuFiamqOrCQlmNCeaGzKpwKsrfT2+S9WbmBDPbhiz3fcbLhbUKx8prS97x633A6WkSwAOUsRjkR4LFUHQXqoLtEMixHFmWaB22oSxWQo2fH/X9zNsB9m1iButy1ztYWsqSE2zY91JLk0iDqaGlpJdpkxHbH3sXSwIg3b38noszgYdAW9NZQEW4IIEzw9wK0JLJwaRc/jX5QKSNS7NgYQnXR8xWfn1hsqYWQqfSQ8vgyhAt34Svl6DCOvp0pMKfkSPhvgtS8sLiSpvNb0Gfv2LnjlxhWnOff2m2Iu9MnGgq5YX1wVHdlNahGb/TtL8xH4OJD5CcclgqRckNP8wH9nhiwjqL14almB+7x5xI8qOixkkx1E0piY7EmfnIsrNVDuc/YEzPhEKyOTLUcxXqofC2aFJwG3kvqPki8MpPqmJyeneLsd/Yv3qES7qlewmV6XxRcFnOR9emFb2KxjP2a012KW7Ao9hPbPHOo/cJ1EAlCjLVyBNDoMtqH2ydft6jV48X9FsHXdd0w+CfZYsa9cUFAii6umybrtsA3BHWMBrQNHqnNij2hJrFUupccpyLsVJOaeZaJiJTAKE3tOyifN/AwZZGVz7uUNDGuDwgtn5dJTEGS7hmnaytZpCIBvEPwada57AbPJioFolVimbpK3VArjLnvYJNXqOOHmE5QZK8rY0ewJiNdiCmRofIs8IzbR/QczK6sI6YQ11OEWTmHzGdlpsz1TBaH6yuzT76us/1RF9WkgFL4hqtwQYkJjosCpLivdUKIrdN2V/A7bcTRaPFeVjN/AON0RiJzg5BP3ocpSqH73mOdkDN406r4ubvezp6/qbczpGHKm8Iy0qn8uQvAwmsoR9TUq+Cudq3J7Q+McymBnwNPRmX+hf08ukY341KfT3faiAyUb5l/VknjR3yW8S/yq3zovwguqW3ssAxEuq7AVMc82F6L57/YTeTlwWUiXWjCIcy3mznKTC5Zmk+OdtHhrlNvpatO5bpHvaktgpK9sLWVgVxHBkMRFphjyVfCHv/ngz2NjJopYszDvNOsIppgl3UBruGPhq9ckjS16CZslR4zaWZTMTXQ2V1ZdplPR+UwjutmQeC3+cfD/HMCxC/3lvtwOk0HN83YZyvM1RKe8SgWX24p2uJrBQZdnV6qBJBI5cABqunAJsunNfHZ8jenFeM130VGFPf/E6KA4g/vldf+oUCe5nCU/P61dQSxNHmT3cEmDXbb5qiTqA9MAGE2Jv16eZix9Phgi0IyrbUA+CHCtgJVpQApLKCWJj2yFR0TVOCQMHwpYIIjgNGTP1cCb9eAGZYwqdaYQ1zeb7ZDK60GPH9Vce4R0cYjrBmklgmXS+H0KS3paQsQkLYrFuem26XAcFLM0UWdxAzlceVJCSfjwV3RIa3Mz+tK2Qq3gNn8r5H8vXw12gxwY+yysL68+LMNL4PuNi9UIt/awUioXTi+I+BTkwatzFYDy50mxu02egQKYSDl0o3Lc/yhe9DLJcTqNE/ygdUpyotwIN91MY1CRcPyxxNb0vQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eafde9a7-019d-4be7-55e9-08d9965a76eb X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2021 19:22:33.4997 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WWL+2nFC3axOVGcWtNSWxyGf6krqsDtdt6VxoPk3kTM1Zxm8LW6vfKpbuKtrqZ75MJHjynVFfvTBk8h383hktQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR10MB3032 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10146 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 mlxscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2110230124 X-Proofpoint-GUID: vRZ1zq8itkHPfnG9S3E30Na6NovbNPq6 X-Proofpoint-ORIG-GUID: vRZ1zq8itkHPfnG9S3E30Na6NovbNPq6 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) PiBTdWNoIGEgY29tbWFuZCBpcyBsb25nIG92ZXJkdWUuICBJIHVzZWQgdGhlIGZvbGxvd2luZyBj b21tYW5kDQo+IGZvciBhIGxvbmcgdGltZSwgYW5kIGZvcmdvdCBpdCdzIG5vdCBpbiBkaXJlZC14 LiAgSSBkb24ndCBzdWdnZXN0DQo+IHRvIHVzZSB0aGlzIGltcGxlbWVudGF0aW9uLCBidXQgc29t ZXRoaW5nIGxpa2UgdGhpcy4NCg0KTGlrZXdpc2UuICBUaGVyZSBhcmUgbG90cyBvZiBzaW1pbGFy IHBvc3NpYmlsaXRpZXMuDQpUaGVzZSBhcmUgd2hhdCBJIHVzZSwgZm9yIE1TIFdpbmRvd3MuICBJ biBEaXJlZCwgDQpJIGhhdmUgdGhlc2UgYmluZGluZ3MgKHBsdXMgbW91c2UgdmVyc2lvbnMpOg0K DQogIEMtUkVUICAgIGRpcmVkLXczMmV4cGxvcmUNCiAgTS1SRVQgICAgZGlyZWQtdzMyLWJyb3dz ZXINCiAgQy1NLVJFVCAgZGlyZWQtbXVsdGlwbGUtdzMyLWJyb3dzZXINCg0KKGRlZnVuIGRpcmVk LXczMi1icm93c2VyICgpDQogICJSdW4gZGVmYXVsdCBXaW5kb3dzIGFwcGxpY2F0aW9uIGFzc29j aWF0ZWQgd2l0aCBjdXJyZW50IGxpbmUncyBmaWxlLg0KSWYgZmlsZSBpcyBhIGRpcmVjdG9yeSwg dGhlbiBgZGlyZWQtZmluZC1maWxlJyBpbnN0ZWFkLg0KSWYgbm8gYXBwbGljYXRpb24gaXMgYXNz b2NpYXRlZCB3aXRoIGZpbGUsIHRoZW4gYGZpbmQtZmlsZScuIg0KICAoaW50ZXJhY3RpdmUpDQog IChsZXQgKChmaWxlICAoZGlyZWQtZ2V0LWZpbGVuYW1lIG5pbCB0KSkpDQogICAgKGlmIChmaWxl LWRpcmVjdG9yeS1wIGZpbGUpDQogICAgICAgIChkaXJlZC1maW5kLWZpbGUpDQogICAgICAodzMy LWJyb3dzZXIgKHN1YnN0LWNoYXItaW4tc3RyaW5nID8vID9cXCBmaWxlKSkpKSkNCg0KKGRlZnVu IHczMi1icm93c2VyIChmaWxlKQ0KICAiUnVuIGRlZmF1bHQgV2luZG93cyBhcHBsaWNhdGlvbiBh c3NvY2lhdGVkIHdpdGggRklMRS4NCklmIG5vIGFzc29jaWF0ZWQgYXBwbGljYXRpb24sIHRoZW4g YGZpbmQtZmlsZScgRklMRS4iDQogIChpbnRlcmFjdGl2ZSAiZkZpbGU6ICIpDQogIChvciAoY29u ZGl0aW9uLWNhc2UgbmlsDQogICAgICAgICAgKHczMi1zaGVsbC1leGVjdXRlIG5pbCBmaWxlKSAg OyBVc2UgV2luZG93cyBmaWxlIGFzc29jaWF0aW9uDQogICAgICAgIChlcnJvciBuaWwpKQ0KICAg ICAgKGZpbmQtZmlsZSBmaWxlKSkpDQoNCihkZWZ1biBkaXJlZC13MzJleHBsb3JlICgpDQogICJP cGVuIFdpbmRvd3MgRXhwbG9yZXIgdG8gY3VycmVudCBmaWxlIG9yIGZvbGRlci4iDQogIChpbnRl cmFjdGl2ZSkNCiAgKHczMmV4cGxvcmUgKGRpcmVkLWdldC1maWxlbmFtZSBuaWwgdCkpKQ0KDQoo ZGVmdW4gdzMyZXhwbG9yZSAoZmlsZSkNCiAgIk9wZW4gV2luZG93cyBFeHBsb3JlciB0byBGSUxF IChhIGZpbGUgb3IgYSBmb2xkZXIpLiINCiAgKGludGVyYWN0aXZlICJmRmlsZTogIikNCiAgKGxl dCAoKHczMmZpbGUgKHN1YnN0LWNoYXItaW4tc3RyaW5nID8vID9cXCAoZXhwYW5kLWZpbGUtbmFt ZSBmaWxlKSkpKQ0KICAgIChpZiAoZmlsZS1kaXJlY3RvcnktcCB3MzJmaWxlKQ0KICAgICAgICAo dzMyLXNoZWxsLWV4ZWN1dGUgImV4cGxvcmUiIHczMmZpbGUgIi9lLC9zZWxlY3QsIikNCiAgICAg ICh3MzItc2hlbGwtZXhlY3V0ZSAib3BlbiIgImV4cGxvcmVyIiAoY29uY2F0ICIvZSwvc2VsZWN0 LCIgdzMyZmlsZSkpKSkpDQoNCihkZWZ1biBkaXJlZC1tdWx0aXBsZS13MzItYnJvd3NlciAoKQ0K ICAiUnVuIGRlZmF1bHQgV2luZG93cyBhcHBsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIG1hcmtl ZCBmaWxlcy4iDQogIChpbnRlcmFjdGl2ZSkNCiAgKGxldCAoKGZpbGVzIChkaXJlZC1nZXQtbWFy a2VkLWZpbGVzKSkpDQogICAgKHdoaWxlIGZpbGVzDQogICAgICAodzMyLWJyb3dzZXIgKGNhciBm aWxlcykpDQogICAgICAoc2xlZXAtZm9yIHczMi1icm93c2VyLXdhaXQtdGltZSkNCiAgICAgIChz ZXRxIGZpbGVzIChjZHIgZmlsZXMpKSkpKQ0KDQooZGVmdW4gZGxnb3Blbi1vcGVuLWZpbGVzICgm b3B0aW9uYWwgZmxpcCkNCiAgIk9wZW4gZmlsZXMgdXNpbmcgdGhlIFdpbmRvd3Mgc3RhbmRhcmQg T3BlbiBkaWFsb2cgYm94Lg0KVmFyIGBkbGdvcGVuLWV4ZWN1dGFibGUtcGF0aCcgaXMgcGF0aCBv ZiBleGVjdXRhYmxlIGBnZXRmaWxlLmV4ZScuDQoNCklmIGB3MzItYnJvd3NlcicgaXMgZGVmaW5l ZCwgdGhlbiBpdCBpcyB1c2VkIHRvIG9wZW4gdGhlIHNlbGVjdGVkDQpmaWxlcy4gIE90aGVyd2lz ZSwgc3RhbmRhcmQgRW1hY3MgYGZpbmQtZmlsZScgZnVuY3Rpb25zIGFyZSB1c2VkLg0KDQpJZiBg dzMyLWJyb3dzZXInIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGBkbGdvcGVuLW90aGVyLXdpbmRvdycN CmNvbnRyb2xzIGhvdyBzZWxlY3RlZCBmaWxlcyBhcmUgb3BlbmVkOg0KICBub24tbmlsID0+IERp c3BsYXkgY2hvc2VuIGZpbGUocykgaW4gc2VwYXJhdGUgd2luZG93cy4NCiAgbmlsICAgICA9PiBE aXNwbGF5IGEgc2luZ2xlIGNob3NlbiBmaWxlIGluIHRoZSBjdXJyZW50IHdpbmRvdzsNCiAgICAg ICAgICAgICBkb24ndCBkaXNwbGF5IG11bHRpcGxlIGNob3NlbiBmaWxlcy4NCg0KT3B0aW9uYWwg cHJlZml4IGFyZyBGTElQIG5vbi1uaWwgcmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiB2YXJpYWJsZQ0K YGRsZ29wZW4tb3RoZXItd2luZG93JywgZm9yIHRoaXMgY2FsbC4iDQogIChpbnRlcmFjdGl2ZSAi UCIpDQogICh1bmxlc3MgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQ0KICAgIChlcnJvciAi Q29tbWFuZCBgZGxnb3Blbi1vcGVuLWZpbGVzJyBpcyBmb3IgV2luZG93cyBvbmx5IikpDQogIChs ZXQgKChidWZmZXIgIiIpDQogICAgICAgIChmaWxlLWZxbiAiIikNCiAgICAgICAgKGxpbmVzLWlu LXBhZ2UgMCkNCiAgICAgICAgKGRpci1wYXRoICIiKQ0KICAgICAgICAob3RoZXItd2luIChpZiBm bGlwDQogICAgICAgICAgICAgICAgICAgICAgIChub3QgZGxnb3Blbi1vdGhlci13aW5kb3cpDQog ICAgICAgICAgICAgICAgICAgICBkbGdvcGVuLW90aGVyLXdpbmRvdykpKQ0KICAgIChzZXRxIGJ1 ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiZmlsZXMtdG8tb3BlbiIpKQ0KICAgICh3aGVuIChj YWxsLXByb2Nlc3MgZGxnb3Blbi1leGVjdXRhYmxlLXBhdGggbmlsIGJ1ZmZlcikNCiAgICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcg0KICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAg ICAgICAoZ290by1saW5lIDEpDQogICAgICAgICAgKHNldHEgZGlyLXBhdGggKGdldC1jdXJyZW50 LWxpbmUpKQ0KICAgICAgICAgIDs7IElmIGJ1ZmZlciBlbXB0eSwgdGhlbiB1c2VyIGhhcyBjYW5j ZWxsZWQgb3IgdGhlIG9wZW4gZmFpbGVkLg0KICAgICAgICAgIDs7IElmIG9ubHkgb25lIGxpbmUg aW4gYnVmZmVyLCB0aGVuIG9ubHkgb25lIGZpbGUgc2VsZWN0ZWQsIHNvIHVzZSBpdC4NCiAgICAg ICAgICAod2hlbiAoPiAoYnVmZmVyLXNpemUpIDApDQogICAgICAgICAgICAoaWYgKD0gMSAoc2V0 cSBsaW5lcy1pbi1wYWdlIChjb3VudC1saW5lcyAxIChidWZmZXItc2l6ZSkpKSkNCiAgICAgICAg ICAgICAgICAoaWYgKGZib3VuZHAgJ3czMi1icm93c2VyKQ0KICAgICAgICAgICAgICAgICAgICAo dzMyLWJyb3dzZXIgZGlyLXBhdGgpDQogICAgICAgICAgICAgICAgICAoaWYgb3RoZXItd2luDQog ICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZS1vdGhlci13aW5kb3cgZGlyLXBhdGgpDQog ICAgICAgICAgICAgICAgICAgIChmaW5kLWZpbGUgZGlyLXBhdGgpKSkNCiAgICAgICAgICAgICAg KHdoaWxlICg+IGxpbmVzLWluLXBhZ2UgMSkNCiAgICAgICAgICAgICAgICAoZGVjZiBsaW5lcy1p bi1wYWdlKQ0KICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpDQogICAgICAgICAgICAgICAg KHNldHEgZmlsZS1mcW4gKGNvbmNhdCBkaXItcGF0aCAiLyIgKGdldC1jdXJyZW50LWxpbmUpKSkN CiAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAgICAgICAgICAgICAgIChpZiAo ZmJvdW5kcCAndzMyLWJyb3dzZXIpDQogICAgICAgICAgICAgICAgICAgICAgKHczMi1icm93c2Vy IGZpbGUtZnFuKQ0KICAgICAgICAgICAgICAgICAgICAoaWYgb3RoZXItd2luDQogICAgICAgICAg ICAgICAgICAgICAgICAoZmluZC1maWxlLW90aGVyLXdpbmRvdyBmaWxlLWZxbikNCiAgICAgICAg ICAgICAgICAgICAgICAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGUtZnFuKSkpKSkpKSkpKSA7IG5v IGRpc3BsYXkNCiAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpDQoNCg==
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Reuben Thomas <rrt@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 23 Oct 2021 20:54:01 +0000 Resent-Message-ID: <handler.18132.B18132.163502241930558 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163502241930558 (code B ref 18132); Sat, 23 Oct 2021 20:54:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Oct 2021 20:53:39 +0000 Received: from localhost ([127.0.0.1]:37461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meO1L-0007wn-7l for submit <at> debbugs.gnu.org; Sat, 23 Oct 2021 16:53:39 -0400 Received: from mail-pf1-f170.google.com ([209.85.210.170]:38786) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <rrt@HIDDEN>) id 1meO1H-0007wY-7b for 18132 <at> debbugs.gnu.org; Sat, 23 Oct 2021 16:53:37 -0400 Received: by mail-pf1-f170.google.com with SMTP id k26so6818253pfi.5 for <18132 <at> debbugs.gnu.org>; Sat, 23 Oct 2021 13:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mChTIT2+0PYhPUZEBBHJ3PRd+J4CN2XqpqUDnrPVog4=; b=pLcyV+w6v7GGLK62pkMTU6wknZzrrn3KyVlSOmsoa4mhNlZBltInTg//422m/7AMPb ojul332lDMYcJqpahlcNOgWAPr5rBRRuZPg8afV6yrbD4yQk6IpX9yoRSnh67iwAe9Qp xdqCm/0Z0rBqZUbzQuhSBXxyuW8akVzgRRAbE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mChTIT2+0PYhPUZEBBHJ3PRd+J4CN2XqpqUDnrPVog4=; b=s8PsOzgcCP1fM0lGf8IPPAmKKanmmZUcLDeaaD18Pj7p49/f41ArXGYka+Z0P9aU2o xM9ZnDiUjxuSy5BKIqbr+o4662S7pASh4naRbhtwui8TuPS1eYJ2pdZ+ExW04ZteAlo3 shAOzaRKbPE2AgvXu7q7YxVBAw/nyErNFk06eLOz9EZ8gthaZxOAY+1x8QuVDRICwSzJ pzO7Psb7F0Q0SOQnvnmQPazX/Iyg/ERqfQjpUbZzSmX75QcST+VT0QRy5m4mXxzns2Fb IXqAAipVM3/rrF4Ar81+ryAwUWSaGbsX/vn42M2HhW7UFGbvd33U6RwZIGurblljeDjj plrg== X-Gm-Message-State: AOAM533JctNPRO6MelpuJU5Fu9o4P0E93m1p8mofnj3yFS7AS3yBJtjy RK0twroC0+8RHaOmo77lxtszP12XuyA+ZLkInKtqcw== X-Google-Smtp-Source: ABdhPJxZgwybv8M1I8Lm/xIEPu+Z9aOps4WA5qtihrr/PfmjvjUpEdOEe166zd7GbCXHyrNfRCP3H23GGxvSHXyiDLc= X-Received: by 2002:a63:2b85:: with SMTP id r127mr6199315pgr.215.1635022409025; Sat, 23 Oct 2021 13:53:29 -0700 (PDT) MIME-Version: 1.0 References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> In-Reply-To: <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> From: Reuben Thomas <rrt@HIDDEN> Date: Sat, 23 Oct 2021 21:53:17 +0100 Message-ID: <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000e3e39d05cf0b51a7" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000e3e39d05cf0b51a7 Content-Type: text/plain; charset="UTF-8" On Sat, 23 Oct 2021 at 16:45, Stefan Kangas <stefan@HIDDEN> wrote: > > What I want is more or less the exact behavior of xdg-open, but I want > to be able to check the actual command (e.g. "evince", not just > "xdg-open") before pressing RET. > I don't understand why this is useful. If you want a particular command for every file of a type, configure it; if you want a particular command this time, specify it. I also want to be able to override xdg-open with customizations inside > Emacs. > This just adds complexity to the system. Please bare with me as I'm trying to understand. > "bear" ;) Is your preference still to just run "xdg-open", as you explained in > your original bug report? Yes. Do you agree that if we could get my idea to work, you could have your > cake and eat it too? No, because I was hoping we could make the cake smaller. IOW, do you disagree with the approach because you > think it is infeasible to make it work well, or because you don't think > that the feature sounds useful? Or do you merely disagree with using > mailcap to implement it? > I agree with Eli that mailcap is not a good match; also it's widely considered deprecated (for example, GNOME's mechanism doesn't use it), so its configuration is likely to be out of date. Mostly, I am afraid that a suggestion which satisfies everyone in terms of functionality will simply pile on more features to Emacs, in an area which is already too complicated. I don't see why launching external applications can't be left to the operating environment, as all environments now have mature systems for doing this. If someone such as you wants more complex functionality, that can be served by a third-party package; it doesn't need to be built in to Emacs. -- https://rrt.sc3d.org --000000000000e3e39d05cf0b51a7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr">On Sat, 23 Oct 2021 at 16:45, Stefan Kangas <<a href=3D"mailto:st= efan@HIDDEN">stefan@HIDDEN</a>> wrote:<br></div><blockquote clas= s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad= ding-left:1ex"><br> What I want is more or less the exact behavior of xdg-open, but I want<br> to be able to check the actual command (e.g. "evince", not just<b= r> "xdg-open") before pressing RET.<br></blockquote><div><br></div><= div><div style=3D"font-family:arial,helvetica,sans-serif;font-size:small" c= lass=3D"gmail_default">I don't understand why this is useful. If you wa= nt a particular command for every file of a type, configure it; if you want= a particular command this time, specify it.</div><br></div><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa= dding-left:1ex"> I also want to be able to override xdg-open with customizations inside<br> Emacs.<br></blockquote><div><br></div><div><div style=3D"font-family:arial,= helvetica,sans-serif;font-size:small" class=3D"gmail_default">This just add= s complexity to the system.</div><br></div><blockquote class=3D"gmail_quote= " style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Please bare with me as I'm trying to understand.<br></blockquote><div><= br></div><div><div style=3D"font-family:arial,helvetica,sans-serif;font-siz= e:small" class=3D"gmail_default">"bear" ;)</div><br></div><blockq= uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc = solid;padding-left:1ex"> Is your preference still to just run "xdg-open", as you explained= in<br> your original bug report?</blockquote><div><br></div><div><div style=3D"fon= t-family:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_default= ">Yes.</div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0= 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Do you agree that if we could get my idea to work, you could have your<br> cake and eat it too?</blockquote><div><br></div><div><div style=3D"font-fam= ily:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_default">No,= because I was hoping we could make the cake smaller.</div><br></div><block= quote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc= solid;padding-left:1ex">=C2=A0 IOW, do you disagree with the approach beca= use you<br> think it is infeasible to make it work well, or because you don't think= <br> that the feature sounds useful?=C2=A0 Or do you merely disagree with using<= br> mailcap to implement it?<br></blockquote><div><br></div><div><div style=3D"= font-family:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_defa= ult">I agree with Eli that mailcap is not a good match; also it's widel= y considered deprecated (for example, GNOME's mechanism doesn't use= it), so its configuration is likely to be out of date.</div><div style=3D"= font-family:arial,helvetica,sans-serif;font-size:small" class=3D"gmail_defa= ult"><br></div><div style=3D"font-family:arial,helvetica,sans-serif;font-si= ze:small" class=3D"gmail_default">Mostly, I am afraid that a suggestion whi= ch satisfies everyone in terms of functionality will simply pile on more fe= atures to Emacs, in an area which is already too complicated. I don't s= ee why launching external applications can't be left to the operating e= nvironment, as all environments now have mature systems for doing this. If = someone such as you wants more complex functionality, that can be served by= a third-party package; it doesn't need to be built in to Emacs.<br></d= iv></div><br clear=3D"all"></div>-- <br><div dir=3D"ltr" class=3D"gmail_sig= nature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div><div dir= =3D"ltr"><a href=3D"https://rrt.sc3d.org" target=3D"_blank">https://rrt.sc3= d.org</a></div></div></div></div></div> --000000000000e3e39d05cf0b51a7--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Thierry Volpiatto <thievol@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 24 Oct 2021 05:11:01 +0000 Resent-Message-ID: <handler.18132.B18132.163505222729184 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Kangas <stefan@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, Reuben Thomas <rrt@HIDDEN> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163505222729184 (code B ref 18132); Sun, 24 Oct 2021 05:11:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Oct 2021 05:10:27 +0000 Received: from localhost ([127.0.0.1]:37686 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meVm7-0007ae-4o for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 01:10:27 -0400 Received: from mout01.posteo.de ([185.67.36.65]:44157) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <thievol@HIDDEN>) id 1meVm3-0007aJ-Tr for 18132 <at> debbugs.gnu.org; Sun, 24 Oct 2021 01:10:26 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id D7997240027 for <18132 <at> debbugs.gnu.org>; Sun, 24 Oct 2021 07:10:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1635052217; bh=IhknKSvstzoVOxH3QyyI+Iwm95ljYwrlHXqnh7kwh7k=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=Tnsv1rpLvMKrVAG1ovRtXFkW1hQ/3/dChNa4VX5Lo78SR8RvDBPIInFO4ZTF1f1jA +KHImpJx5JRVQnFzwWAynlA5uR3qtS7EMIGbp/7ZGRDgzf5qjLE/qJinrR3scEdFhc u5jurRppDhAFhH2+MHRWtGJbt9603eqKwCmCG9DCw+yXkQ8rQeHj88K0w6ZNG/RWve BybDTeF9M5uJqHeKcpjQWxUjolTyTkUE34d0elIsNpfk7Ce73mkoMWomvN1l1GS4tV PkcT1flZESfdVAdCtQdCQlsXScbouwCj3UwkimHFY9lud37X8LKhX8e3xybpKeHF6/ zbA/lwlrkT75w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4HcR3q6Cxfz9rxB; Sun, 24 Oct 2021 07:10:15 +0200 (CEST) From: Thierry Volpiatto <thievol@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> Autocrypt: addr=thievol@HIDDEN; prefer-encrypt=mutual; keydata= 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 pd5UIX75/XbtumwE0L+IvMpekoM9zH8pCowu4g== Date: Sun, 24 Oct 2021 05:10:13 +0000 In-Reply-To: <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> (Stefan Kangas's message of "Sat, 23 Oct 2021 06:56:59 -0700") Message-ID: <87bl3f6ma2.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Stefan Kangas <stefan@HIDDEN> writes: > Reuben Thomas <rrt@HIDDEN> writes: > >> xdg-open uses the underlying desktop system's MIME infrastructure. For a >> GNU system, that would most typically be GNOME, and its "gio open" (or on >> older systems, gvfs-open) command. > > I don't see that shooting away blindly to xdg-open is satisfactory; the > user should be able to a) know which command is being run before running > it and b) modify it on the fly. Maybe I want to open PDF:s first with > one and then another PDF reader to see if it looks the same, just as I > would be able to from a graphical file manager. > > Thus, the most important question to my mind is "how can we get the > default command for a file in the best way". Helm is using an alist to store (command . extension), if no command is found, it uses mailcap to find a default unless the user specify a new association interactively (prefix arg), user can add arguments to the command if needed, before or after the filename(s) arguments. In addition, on GNU/Linux it is possible to detach the process from Emacs. See helm-external.el, I am working on it currently. -- Thierry
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 24 Oct 2021 06:03:02 +0000 Resent-Message-ID: <handler.18132.B18132.16350553812803 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Reuben Thomas <rrt@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, stefan@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.16350553812803 (code B ref 18132); Sun, 24 Oct 2021 06:03:02 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Oct 2021 06:03:01 +0000 Received: from localhost ([127.0.0.1]:37714 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meWay-0000j9-Qd for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 02:03:00 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55950) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1meWax-0000iw-1l for 18132 <at> debbugs.gnu.org; Sun, 24 Oct 2021 02:02:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52150) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meWar-000485-64; Sun, 24 Oct 2021 02:02:53 -0400 Received: from [87.69.77.57] (port=2701 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1meWaq-0008Pz-Oc; Sun, 24 Oct 2021 02:02:53 -0400 Date: Sun, 24 Oct 2021 09:02:43 +0300 Message-Id: <83ilxn3qpo.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> (message from Reuben Thomas on Sat, 23 Oct 2021 21:53:17 +0100) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Reuben Thomas <rrt@HIDDEN> > Date: Sat, 23 Oct 2021 21:53:17 +0100 > Cc: Eli Zaretskii <eliz@HIDDEN>, 18132 <at> debbugs.gnu.org > > I also want to be able to override xdg-open with customizations inside > Emacs. > > This just adds complexity to the system. Yes, but the added complexity should be small, and I think we cannot do without that: tools like xdg-open will never be able to satisfy all the needs of Emacs users, because Emacs is not just a file manager capable of starting applications.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 24 Oct 2021 07:58:01 +0000 Resent-Message-ID: <handler.18132.B18132.163506227415426 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, stefan@HIDDEN, Reuben Thomas <rrt@HIDDEN> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163506227415426 (code B ref 18132); Sun, 24 Oct 2021 07:58:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Oct 2021 07:57:54 +0000 Received: from localhost ([127.0.0.1]:37856 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1meYOA-00040j-Fp for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 03:57:54 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:34615) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1meYO7-00040I-7o for 18132 <at> debbugs.gnu.org; Sun, 24 Oct 2021 03:57:51 -0400 Received: (Authenticated sender: juri@HIDDEN) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 587F8FF802; Sun, 24 Oct 2021 07:57:43 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> Date: Sun, 24 Oct 2021 10:56:45 +0300 In-Reply-To: <83ilxn3qpo.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 24 Oct 2021 09:02:43 +0300") Message-ID: <878ryizwyi.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> I also want to be able to override xdg-open with customizations inside >> Emacs. >> >> This just adds complexity to the system. > > Yes, but the added complexity should be small, and I think we cannot > do without that: tools like xdg-open will never be able to satisfy all > the needs of Emacs users, because Emacs is not just a file manager > capable of starting applications. To add minimal complexity we could use as an example the recent design of context-menu-functions that is a hook. Then we could create a new customizable hook that can contain a list of functions that return the command candidates depending on the argument with file names. Then its possible options for such hook could include: - xdg-open-function - mailcap-function that adds mailcap candidates - dired-x-guess that adds existing dired-guess-shell-alist-default - Windows-specific candidates from w32-shell-execute - etc.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) In-Reply-To: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> Resent-From: Howard Melman <hmelman@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 24 Oct 2021 16:36:02 +0000 Resent-Message-ID: <handler.18132.B.163509334030533 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 18132 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.163509334030533 (code B ref -1); Sun, 24 Oct 2021 16:36:02 +0000 Received: (at submit) by debbugs.gnu.org; 24 Oct 2021 16:35:40 +0000 Received: from localhost ([127.0.0.1]:40630 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1megTE-0007wP-4y for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 12:35:40 -0400 Received: from lists.gnu.org ([209.51.188.17]:50434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1megTC-0007wI-Ti for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 12:35:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49256) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1megTC-0008JS-Gd for bug-gnu-emacs@HIDDEN; Sun, 24 Oct 2021 12:35:38 -0400 Received: from ciao.gmane.io ([116.202.254.214]:53906) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1megTA-0008Fa-RD for bug-gnu-emacs@HIDDEN; Sun, 24 Oct 2021 12:35:38 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from <geb-bug-gnu-emacs@HIDDEN>) id 1megT7-0008Nu-6x for bug-gnu-emacs@HIDDEN; Sun, 24 Oct 2021 18:35:33 +0200 X-Injected-Via-Gmane: http://gmane.org/ From: Howard Melman <hmelman@HIDDEN> Date: Sun, 24 Oct 2021 12:35:23 -0400 Message-ID: <lyr1cae5ys.fsf@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <lyv91neia0.fsf@HIDDEN> <87sfwr8utt.fsf@HIDDEN> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (darwin) Cancel-Lock: sha1:YG78iXAxJrE5mRgaQvZLb9FKqLU= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@HIDDEN; helo=ciao.gmane.io X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) Juri Linkov <juri@HIDDEN> writes: >> Such a command emulates what double clicking on an icon does >> which most of the time is what a user wants (because it's >> configured it do what their most common app need is). > > Such a command is long overdue. I used the following command > for a long time, and forgot it's not in dired-x. I don't suggest > to use this implementation, but something like this. FWIW, my version is quite different: #+begin_src emacs-lisp ;;; open a file as if double clicking on its icon (declare-function w32-shell-execute "w32fns.c") (defun hrm-open-file (file) "Open FILE as the system would." (interactive "fFile: ") (cond ((memq system-type '(darwin)) (call-process-shell-command (concat "open " (shell-quote-argument file)))) ((memq system-type '(windows-nt)) (w32-shell-execute "open" (convert-standard-filename file))) ((memq system-type '(gnu/linux)) (call-process-shell-command (concat "xdg-open " (shell-quote-argument file)))) (t (error "Open not supported on this system")))) (defun dired-do-open (&optional arg) "Open the marked (or next ARG) files as the system would." (interactive "P") (mapc #'hrm-open-file (dired-get-marked-files nil arg))) #+end_src -- Howard
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 24 Oct 2021 19:18:01 +0000 Resent-Message-ID: <handler.18132.B18132.163510308131711 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Howard Melman <hmelman@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.163510308131711 (code B ref 18132); Sun, 24 Oct 2021 19:18:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Oct 2021 19:18:01 +0000 Received: from localhost ([127.0.0.1]:40963 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mej0K-0008FN-QY for submit <at> debbugs.gnu.org; Sun, 24 Oct 2021 15:18:00 -0400 Received: from relay10.mail.gandi.net ([217.70.178.230]:48839) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1mej0G-0008Ej-MH for 18132 <at> debbugs.gnu.org; Sun, 24 Oct 2021 15:17:57 -0400 Received: (Authenticated sender: juri@HIDDEN) by relay10.mail.gandi.net (Postfix) with ESMTPSA id B6CDB240005; Sun, 24 Oct 2021 19:17:49 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <lyv91neia0.fsf@HIDDEN> <87sfwr8utt.fsf@HIDDEN> <lyr1cae5ys.fsf@HIDDEN> Date: Sun, 24 Oct 2021 22:08:43 +0300 In-Reply-To: <lyr1cae5ys.fsf@HIDDEN> (Howard Melman's message of "Sun, 24 Oct 2021 12:35:23 -0400") Message-ID: <871r4ajm2c.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > FWIW, my version is quite different: > > (cond ((memq system-type '(darwin)) > (call-process-shell-command (concat "open " (shell-quote-argument file)))) > ((memq system-type '(windows-nt)) > (w32-shell-execute "open" (convert-standard-filename file))) > ((memq system-type '(gnu/linux)) > (call-process-shell-command (concat "xdg-open " (shell-quote-argument file)))) Indeed, these are good system-dependent default values for the new hook-like user option.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 Nov 2023 18:05:01 +0000 Resent-Message-ID: <handler.18132.B18132.17007626676494 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17007626676494 (code B ref 18132); Thu, 23 Nov 2023 18:05:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Nov 2023 18:04:27 +0000 Received: from localhost ([127.0.0.1]:35069 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r6E3u-0001gf-MX for submit <at> debbugs.gnu.org; Thu, 23 Nov 2023 13:04:27 -0500 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]:59113) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r6E3s-0001gF-5R for 18132 <at> debbugs.gnu.org; Thu, 23 Nov 2023 13:04:24 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 5A4B9240002 for <18132 <at> debbugs.gnu.org>; Thu, 23 Nov 2023 18:04:10 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <878ryizwyi.fsf@HIDDEN> (Juri Linkov's message of "Sun, 24 Oct 2021 10:56:45 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> Date: Thu, 23 Nov 2023 19:49:44 +0200 Message-ID: <86y1eoxtrr.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain > To add minimal complexity we could use as an example > the recent design of context-menu-functions that is a hook. > > Then we could create a new customizable hook that can contain > a list of functions that return the command candidates depending > on the argument with file names. > > Then its possible options for such hook could include: > > - xdg-open-function > - mailcap-function that adds mailcap candidates > - dired-x-guess that adds existing dired-guess-shell-alist-default > - Windows-specific candidates from w32-shell-execute > - etc. Here is the implementation: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=shell-command-guess.patch diff --git a/lisp/simple.el b/lisp/simple.el index 2e2d73e9bf4..25e0c1cca7f 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4273,8 +4273,63 @@ shell-command-default-error-buffer is run interactively. A value of nil means that output to stderr and stdout will be intermixed in the output stream.") +(defcustom shell-command-guess-functions + '(shell-command-guess-mailcap + shell-command-guess-xdg + shell-command-guess-dired) + "List of functions that guess shell commands for files. +Each function receives a list of commands and a list of file names +and should return the same list of commands with changes +such as added new commands." + :type '(repeat + (choice (function-item shell-command-guess-dired) + (function-item shell-command-guess-xdg) + (function-item shell-command-guess-mailcap) + (function :tag "Custom function"))) + :version "30.1") + +(defun shell-command-guess (files) + "Return a list of shell commands, appropriate for FILES." + (let ((commands nil)) + (run-hook-wrapped 'shell-command-guess-functions + (lambda (fun) + (setq commands (funcall fun commands files)) + nil)) + commands)) + (declare-function mailcap-file-default-commands "mailcap" (files)) + +(defun shell-command-guess-mailcap (commands files) + (require 'mailcap) + (append (mailcap-file-default-commands files) commands)) + (declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep)) +(declare-function dired-guess-default "dired-aux" (files)) + +(defun shell-command-guess-dired (commands files) + (require 'dired-aux) + (append (ensure-list (dired-guess-default files)) commands)) + +(declare-function xdg-mime-apps "xdg" (mime)) +(declare-function xdg-desktop-read-file "xdg" (filename &optional group)) + +(defun shell-command-guess-xdg (commands files) + (require 'xdg) + (let* ((xdg-mime (when (executable-find "xdg-mime") + (string-trim-right + (shell-command-to-string + (concat "xdg-mime query filetype " (car files)))))) + (xdg-mime-apps (unless (string-empty-p xdg-mime) + (xdg-mime-apps xdg-mime))) + (xdg-commands + (mapcar (lambda (desktop) + (setq desktop (xdg-desktop-read-file desktop)) + (propertize + (replace-regexp-in-string + " .*" "" (gethash "Exec" desktop)) + 'name (gethash "Name" desktop))) + xdg-mime-apps))) + (append xdg-commands commands))) (defun minibuffer-default-add-shell-commands () "Return a list of all commands associated with the current file. @@ -4284,8 +4339,7 @@ minibuffer-default-add-shell-commands (let* ((filename (if (listp minibuffer-default) (car minibuffer-default) minibuffer-default)) - (commands (and filename (require 'mailcap nil t) - (mailcap-file-default-commands (list filename))))) + (commands (and filename (shell-command-guess (list filename))))) (setq commands (mapcar (lambda (command) (concat command " " filename)) commands)) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 02194e6ff45..ba6685af7f3 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -763,22 +763,6 @@ dired-trample-file-versions ;;; Shell commands -(declare-function mailcap-file-default-commands "mailcap" (files)) - -(defvar dired-aux-files) - -(defun dired-minibuffer-default-add-shell-commands () - "Return a list of all commands associated with current Dired files. -This function is used to add all related commands retrieved by `mailcap' -to the end of the list of defaults just after the default value." - (interactive) - (let ((commands (and (boundp 'dired-aux-files) - (require 'mailcap nil t) - (mailcap-file-default-commands dired-aux-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. @@ -789,14 +773,9 @@ dired-read-shell-command Use `dired-guess-shell-command' to offer a smarter default choice of shell command." - (minibuffer-with-setup-hook - (lambda () - (setq-local dired-aux-files files) - (setq-local minibuffer-default-add-function - #'dired-minibuffer-default-add-shell-commands)) - (setq prompt (format prompt (dired-mark-prompt arg files))) - (dired-mark-pop-up nil 'shell files - 'dired-guess-shell-command prompt files))) + (setq prompt (format prompt (dired-mark-prompt arg files))) + (dired-mark-pop-up nil 'shell files + 'dired-guess-shell-command prompt files)) ;;;###autoload (defcustom dired-confirm-shell-command t @@ -1316,7 +1295,7 @@ dired-guess-default ;;;###autoload (defun dired-guess-shell-command (prompt files) "Ask user with PROMPT for a shell command, guessing a default from FILES." - (let ((default (dired-guess-default files)) + (let ((default (shell-command-guess files)) default-list val) (if (null default) ;; Nothing to guess @@ -3856,9 +3835,6 @@ dired-vc-deduce-fileset (setq model (vc-checkout-model backend only-files-list)))) (list backend files only-files-list state model))) -(define-obsolete-function-alias 'minibuffer-default-add-dired-shell-commands - #'dired-minibuffer-default-add-shell-commands "29.1") - (provide 'dired-aux) --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 Nov 2023 19:41:02 +0000 Resent-Message-ID: <handler.18132.B18132.17007684624426 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17007684624426 (code B ref 18132); Thu, 23 Nov 2023 19:41:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 Nov 2023 19:41:02 +0000 Received: from localhost ([127.0.0.1]:35153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r6FZN-00019A-Md for submit <at> debbugs.gnu.org; Thu, 23 Nov 2023 14:41:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50814) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1r6FZL-00018x-PR for 18132 <at> debbugs.gnu.org; Thu, 23 Nov 2023 14:41:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1r6FZ7-0005FW-Iq; Thu, 23 Nov 2023 14:40:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=YRGYXykz7pOYWpMdVne+sTFVKqDVvVli48R67BLlYtU=; b=VqtwRNpXh1lI L5EbfZt8V8xqvYm6XJ5uH8flxf8YGffCal3o1fhqlUvkelb7Er2+UjKTk90fIoeMQMowcpiYv4MuY ytUkhNhA4ekmPwgkasLc2dLeysV0z+JI75QdiruuZKQyrKa1DpPz9EUDK61pOXCMCNfdB922MMjhd SET4pdRXUhbheJdr3yKYvijIryFnIMmUAJMr4pkGFSkquBdCWIBn0hqlu2jaeSQWxEUtzvdxFsBZr +pGK0p3kFT1gBoVadAVBk5IOCyMJZA+HtIk0LBCZiHqTTibyDhABqolzbmsdUsW9GrO5kcBxCrLqd xFbWqJZO/6CZSCWm7LPqRA==; Date: Thu, 23 Nov 2023 21:40:38 +0200 Message-Id: <83leaofebt.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86y1eoxtrr.fsf@HIDDEN> (message from Juri Linkov on Thu, 23 Nov 2023 19:49:44 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Date: Thu, 23 Nov 2023 19:49:44 +0200 > > > Then its possible options for such hook could include: > > > > - xdg-open-function > > - mailcap-function that adds mailcap candidates > > - dired-x-guess that adds existing dired-guess-shell-alist-default > > - Windows-specific candidates from w32-shell-execute > > - etc. > > Here is the implementation: Thanks, but please don't put this stuff in simple.el. There's no reason to have this preloaded in Emacs. And let's try to implement this in a way that won't load mailcap, xdg, dired, and dired-aux whenever shell-command is invoked.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 24 Nov 2023 08:23:01 +0000 Resent-Message-ID: <handler.18132.B18132.17008141347004 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17008141347004 (code B ref 18132); Fri, 24 Nov 2023 08:23:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Nov 2023 08:22:14 +0000 Received: from localhost ([127.0.0.1]:35569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r6RS1-0001ou-MI for submit <at> debbugs.gnu.org; Fri, 24 Nov 2023 03:22:13 -0500 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]:60477) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r6RRy-0001oR-7V for 18132 <at> debbugs.gnu.org; Fri, 24 Nov 2023 03:22:10 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 9447C1C000F; Fri, 24 Nov 2023 08:21:57 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <83leaofebt.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 Nov 2023 21:40:38 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> Date: Fri, 24 Nov 2023 09:51:54 +0200 Message-ID: <86edgfk37h.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> > Then its possible options for such hook could include: >> > >> > - xdg-open-function >> > - mailcap-function that adds mailcap candidates >> > - dired-x-guess that adds existing dired-guess-shell-alist-default >> > - Windows-specific candidates from w32-shell-execute >> > - etc. >> >> Here is the implementation: > > Thanks, but please don't put this stuff in simple.el. There's no > reason to have this preloaded in Emacs. I can't find other place to put these 50 lines. I added to simple.el near read-shell-command because it's used by read-shell-command. If you want this could be moved to dired-aux.el and placed near dired-guess-shell-command. But would it be quite inappropriate since shell-command-guess is a more general feature? > And let's try to implement this in a way that won't load mailcap, xdg, > dired, and dired-aux whenever shell-command is invoked. It already doesn't load mailcap, xdg, dired, and dired-aux when shell-command is invoked. It loads these files only when the user needs to use them and types 'M-n' twice in the minibuffer of read-shell-command ('M-!' and 'M-&'). Also shell-command-guess is used by dired-read-shell-command ('!' and '&' on a file in dired).
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 24 Nov 2023 14:26:01 +0000 Resent-Message-ID: <handler.18132.B18132.170083590323013 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170083590323013 (code B ref 18132); Fri, 24 Nov 2023 14:26:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 Nov 2023 14:25:03 +0000 Received: from localhost ([127.0.0.1]:36044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r6X78-0005z7-Ir for submit <at> debbugs.gnu.org; Fri, 24 Nov 2023 09:25:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:45792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1r6X73-0005yb-Ba for 18132 <at> debbugs.gnu.org; Fri, 24 Nov 2023 09:25:01 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1r6X6s-0002x9-Ms; Fri, 24 Nov 2023 09:24:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=kGax45+vFxEj15jF2fEJw3qtrTI9IIOkerE4Ut+95co=; b=JgJUO6p8F62r MfgSmbxw05YDQ3SFSaDLt98ItdoW8X7+aSHuNori+r2aqUsix73/rS6FyyDDUloj95Diobox5ZISK GsbFuKu4is73HzZxMOeXSMfgDgUaM9aAVG/KmwXkZTHeLYph5JRymPnpBVoszxNSYFQQJtLHWwCJY 4Z4Plb5Em4tvvgRO8OoWE/xHav+6IFoLPd5c8kTD+H5SY5/hC1DSt38V34rOCi0h7K90qkDh0rpNI F1GBZaydu9tl4WWPSNhnqILdHa+BeLFIYsDXciU5NCdqC0NDqAKr3GRM/OH9OUvnAa52zW8EMEKhT DZNQK356o47zDXPNMipCJg==; Date: Fri, 24 Nov 2023 16:24:41 +0200 Message-Id: <83zfz3dyae.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86edgfk37h.fsf@HIDDEN> (message from Juri Linkov on Fri, 24 Nov 2023 09:51:54 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Fri, 24 Nov 2023 09:51:54 +0200 > > >> > Then its possible options for such hook could include: > >> > > >> > - xdg-open-function > >> > - mailcap-function that adds mailcap candidates > >> > - dired-x-guess that adds existing dired-guess-shell-alist-default > >> > - Windows-specific candidates from w32-shell-execute > >> > - etc. > >> > >> Here is the implementation: > > > > Thanks, but please don't put this stuff in simple.el. There's no > > reason to have this preloaded in Emacs. > > I can't find other place to put these 50 lines. I added to simple.el > near read-shell-command because it's used by read-shell-command. IMO, read-shell-command should not by default call these helpers. If we cannot find a suitable non-preloaded file to put this stuff (is subr-x.el okay, for example?), it's okay to start a new file. > > And let's try to implement this in a way that won't load mailcap, xdg, > > dired, and dired-aux whenever shell-command is invoked. > > It already doesn't load mailcap, xdg, dired, and dired-aux > when shell-command is invoked. It loads these files only > when the user needs to use them and types 'M-n' twice in the > minibuffer of read-shell-command ('M-!' and 'M-&'). That's immaterial: M-n is an integral part of shell-command (of any command, really), and thus should not cause such massive loading of helper stuff, not by default anyway. Why do we think we can second-guess what user wants from shell-command guessing? why do we think the user will want XDG in this picture? or mailcap? These are explicit user preferences, and we should leave it to the users to express their preferences. > Also shell-command-guess is used by dired-read-shell-command > ('!' and '&' on a file in dired). Likewise here: users should by default be able to invoke these Dired commands without automatically loading those helpers, which come with quite tangible ballast. For Dired, this is perhaps less important, since Dired itself is an optional package, but still: I think it's wrong to do this by default.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 25 Nov 2023 18:22:02 +0000 Resent-Message-ID: <handler.18132.B18132.17009365079245 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17009365079245 (code B ref 18132); Sat, 25 Nov 2023 18:22:02 +0000 Received: (at 18132) by debbugs.gnu.org; 25 Nov 2023 18:21:47 +0000 Received: from localhost ([127.0.0.1]:40189 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r6xHm-0002P3-LC for submit <at> debbugs.gnu.org; Sat, 25 Nov 2023 13:21:47 -0500 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]:51533) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r6xHf-0002OP-8g for 18132 <at> debbugs.gnu.org; Sat, 25 Nov 2023 13:21:40 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 757631BF206; Sat, 25 Nov 2023 18:21:27 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <83zfz3dyae.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 24 Nov 2023 16:24:41 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> Date: Sat, 25 Nov 2023 20:10:40 +0200 Message-ID: <86h6l9zorh.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >> >> > Then its possible options for such hook could include: >> >> > >> >> > - xdg-open-function >> >> > - mailcap-function that adds mailcap candidates >> >> > - dired-x-guess that adds existing dired-guess-shell-alist-default >> >> > - Windows-specific candidates from w32-shell-execute >> >> > - etc. >> >> >> >> Here is the implementation: >> > >> > Thanks, but please don't put this stuff in simple.el. There's no >> > reason to have this preloaded in Emacs. >> >> I can't find other place to put these 50 lines. I added to simple.el >> near read-shell-command because it's used by read-shell-command. > > IMO, read-shell-command should not by default call these helpers. It doesn't call them by default. > If we cannot find a suitable non-preloaded file to put this stuff (is > subr-x.el okay, for example?), it's okay to start a new file. Ok, then let's add this to dired-aux.el since it's used in dired. >> Also shell-command-guess is used by dired-read-shell-command >> ('!' and '&' on a file in dired). > > Likewise here: users should by default be able to invoke these Dired > commands without automatically loading those helpers, which come with > quite tangible ballast. For Dired, this is perhaps less important, > since Dired itself is an optional package, but still: I think it's > wrong to do this by default. Ok, I removed mailcap and xdg from defaults: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=shell-command-guess.patch diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 02194e6ff45..0c01b24c2db 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -763,22 +763,6 @@ dired-trample-file-versions ;;; Shell commands -(declare-function mailcap-file-default-commands "mailcap" (files)) - -(defvar dired-aux-files) - -(defun dired-minibuffer-default-add-shell-commands () - "Return a list of all commands associated with current Dired files. -This function is used to add all related commands retrieved by `mailcap' -to the end of the list of defaults just after the default value." - (interactive) - (let ((commands (and (boundp 'dired-aux-files) - (require 'mailcap nil t) - (mailcap-file-default-commands dired-aux-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. @@ -789,14 +773,9 @@ dired-read-shell-command Use `dired-guess-shell-command' to offer a smarter default choice of shell command." - (minibuffer-with-setup-hook - (lambda () - (setq-local dired-aux-files files) - (setq-local minibuffer-default-add-function - #'dired-minibuffer-default-add-shell-commands)) - (setq prompt (format prompt (dired-mark-prompt arg files))) - (dired-mark-pop-up nil 'shell files - 'dired-guess-shell-command prompt files))) + (setq prompt (format prompt (dired-mark-prompt arg files))) + (dired-mark-pop-up nil 'shell files + 'dired-guess-shell-command prompt files)) ;;;###autoload (defcustom dired-confirm-shell-command t @@ -1316,7 +1295,7 @@ dired-guess-default ;;;###autoload (defun dired-guess-shell-command (prompt files) "Ask user with PROMPT for a shell command, guessing a default from FILES." - (let ((default (dired-guess-default files)) + (let ((default (shell-command-guess files)) default-list val) (if (null default) ;; Nothing to guess @@ -1340,6 +1319,64 @@ dired-guess-shell-command ;; If we got a return, then return default. (if (equal val "") default val)))) +(defcustom shell-command-guess-functions + '(shell-command-guess-dired) + "List of functions that guess shell commands for files. +Each function receives a list of commands and a list of file names +and should return the same list of commands with changes +such as added new commands." + :type '(repeat + (choice (function-item shell-command-guess-dired) + (function-item shell-command-guess-xdg) + (function-item shell-command-guess-mailcap) + (function :tag "Custom function"))) + :group 'dired + :version "30.1") + +;;;###autoload +(defun shell-command-guess (files) + "Return a list of shell commands, appropriate for FILES." + (let ((commands nil)) + (run-hook-wrapped 'shell-command-guess-functions + (lambda (fun) + (setq commands (funcall fun commands files)) + nil)) + commands)) + +(declare-function mailcap-file-default-commands "mailcap" (files)) + +(defun shell-command-guess-mailcap (commands files) + (require 'mailcap) + (append (mailcap-file-default-commands files) commands)) + +(declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep)) +(declare-function dired-guess-default "dired-aux" (files)) + +(defun shell-command-guess-dired (commands files) + (require 'dired-aux) + (append (ensure-list (dired-guess-default files)) commands)) + +(declare-function xdg-mime-apps "xdg" (mime)) +(declare-function xdg-desktop-read-file "xdg" (filename &optional group)) + +(defun shell-command-guess-xdg (commands files) + (require 'xdg) + (let* ((xdg-mime (when (executable-find "xdg-mime") + (string-trim-right + (shell-command-to-string + (concat "xdg-mime query filetype " (car files)))))) + (xdg-mime-apps (unless (string-empty-p xdg-mime) + (xdg-mime-apps xdg-mime))) + (xdg-commands + (mapcar (lambda (desktop) + (setq desktop (xdg-desktop-read-file desktop)) + (propertize + (replace-regexp-in-string + " .*" "" (gethash "Exec" desktop)) + 'name (gethash "Name" desktop))) + xdg-mime-apps))) + (append xdg-commands commands))) + ;;; Commands that delete or redisplay part of the dired buffer @@ -3856,9 +3893,6 @@ dired-vc-deduce-fileset (setq model (vc-checkout-model backend only-files-list)))) (list backend files only-files-list state model))) -(define-obsolete-function-alias 'minibuffer-default-add-dired-shell-commands - #'dired-minibuffer-default-add-shell-commands "29.1") - (provide 'dired-aux) diff --git a/lisp/simple.el b/lisp/simple.el index 02c68912dba..f27c3042d9a 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4273,7 +4273,6 @@ shell-command-default-error-buffer is run interactively. A value of nil means that output to stderr and stdout will be intermixed in the output stream.") -(declare-function mailcap-file-default-commands "mailcap" (files)) (declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep)) (defun minibuffer-default-add-shell-commands () @@ -4284,8 +4283,7 @@ minibuffer-default-add-shell-commands (let* ((filename (if (listp minibuffer-default) (car minibuffer-default) minibuffer-default)) - (commands (and filename (require 'mailcap nil t) - (mailcap-file-default-commands (list filename))))) + (commands (and filename (shell-command-guess (list filename))))) (setq commands (mapcar (lambda (command) (concat command " " filename)) commands)) --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 26 Nov 2023 10:38:01 +0000 Resent-Message-ID: <handler.18132.B18132.170099507627509 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170099507627509 (code B ref 18132); Sun, 26 Nov 2023 10:38:01 +0000 Received: (at 18132) by debbugs.gnu.org; 26 Nov 2023 10:37:56 +0000 Received: from localhost ([127.0.0.1]:40753 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r7CWR-00079b-Tp for submit <at> debbugs.gnu.org; Sun, 26 Nov 2023 05:37:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38152) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1r7CWP-00079K-PI for 18132 <at> debbugs.gnu.org; Sun, 26 Nov 2023 05:37:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1r7CWE-0005q4-QF; Sun, 26 Nov 2023 05:37:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2Gr0lQCs7X3AoH72waJ8cN2dUzPP+40ox7fZgK1+Xlg=; b=ZxUunSyYSUpH nxjrhuD6fmFo+6K8GMyJiPoBALpPrrkPMvvpyodGvfJMGJpWswkdGKyVny4IjGf1n6GC2VQfIAiii pSQIzNxGkghsklquH949Uec9hY5ps88fqVyshBV3+mmgzJruDMDyMw2hX8wxoKxUmDPHN2bQjTZ5N l87yLd+Ufurp7J51djyF6ofYYOZaQM3zgmk/es0LHXHtzAlf2BNNeP4NBO5HnuHuNSoBWtOtLB7Yr /8jAm/lmG1U5npRal1qfLRhxD5OQ5tX4xFDB9aNx67NDsmBUYw+EabiJOO3tB0MhIVGI5CEAiXL1M k2/l0aI1o+p6x3Nc4cPrsw==; Date: Sun, 26 Nov 2023 12:37:25 +0200 Message-Id: <838r6kby1m.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86h6l9zorh.fsf@HIDDEN> (message from Juri Linkov on Sat, 25 Nov 2023 20:10:40 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87d2cn67zo.fsf@HIDDEN> <CAOnWdoivtsBnHPhZWkjxNEqiMxfOwnYiU2eaoQEu4_3bjCx=JQ@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Sat, 25 Nov 2023 20:10:40 +0200 > > Ok, I removed mailcap and xdg from defaults: Thanks.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 27 Nov 2023 17:38:02 +0000 Resent-Message-ID: <handler.18132.B18132.170110665924802 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170110665924802 (code B ref 18132); Mon, 27 Nov 2023 17:38:02 +0000 Received: (at 18132) by debbugs.gnu.org; 27 Nov 2023 17:37:39 +0000 Received: from localhost ([127.0.0.1]:44720 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r7fYB-0006Ry-0l for submit <at> debbugs.gnu.org; Mon, 27 Nov 2023 12:37:39 -0500 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]:58681) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r7fY9-0006Rj-BU for 18132 <at> debbugs.gnu.org; Mon, 27 Nov 2023 12:37:37 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 78C941BF208; Mon, 27 Nov 2023 17:37:24 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <838r6kby1m.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Nov 2023 12:37:25 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <87bns6dcul.fsf@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> Date: Mon, 27 Nov 2023 19:32:54 +0200 Message-ID: <86msuz5cft.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> Ok, I removed mailcap and xdg from defaults: > > Thanks. So now pushed to master.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 28 Nov 2023 17:28:01 +0000 Resent-Message-ID: <handler.18132.B18132.170119245817785 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170119245817785 (code B ref 18132); Tue, 28 Nov 2023 17:28:01 +0000 Received: (at 18132) by debbugs.gnu.org; 28 Nov 2023 17:27:38 +0000 Received: from localhost ([127.0.0.1]:47556 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r81s1-0004cn-U9 for submit <at> debbugs.gnu.org; Tue, 28 Nov 2023 12:27:38 -0500 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]:48055) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r81s0-0004ca-60 for 18132 <at> debbugs.gnu.org; Tue, 28 Nov 2023 12:27:36 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id AAD8D1C0007; Tue, 28 Nov 2023 17:27:22 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <86msuz5cft.fsf@HIDDEN> (Juri Linkov's message of "Mon, 27 Nov 2023 19:32:54 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> Date: Tue, 28 Nov 2023 19:05:46 +0200 Message-ID: <86ttp6j8ax.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain > So now pushed to master. Here is a patch that adds an option to use a system-dependent command to open a file: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=shell-command-guess-open.patch diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 47e97c96ce1..e945052b571 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1329,6 +1329,7 @@ shell-command-guess-functions (choice (function-item shell-command-guess-dired) (function-item shell-command-guess-mailcap) (function-item shell-command-guess-xdg) + (function-item shell-command-guess-open) (function :tag "Custom function"))) :group 'dired :version "30.1") @@ -1380,6 +1381,29 @@ shell-command-guess-xdg xdg-mime-apps))) (append xdg-commands commands))) +(defcustom shell-command-guess-open + (cond + ((executable-find "xdg-open") + "xdg-open") + ((executable-find "run-mailcap") + "run-mailcap") + ((eq system-type 'ms-dos) + "start") + ((eq system-type 'cygwin) + "cygstart") + ((eq system-type 'windows-nt) + "open") + ((eq system-type 'darwin) + "open")) + "A shell command to open a file externally." + :type 'string + :group 'dired + :version "30.1") + +(defun shell-command-guess-open (commands _files) + "Populate COMMANDS by the `open' command." + (append (ensure-list shell-command-guess-open) commands)) + ;;; Commands that delete or redisplay part of the dired buffer --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 28 Nov 2023 17:37:02 +0000 Resent-Message-ID: <handler.18132.B18132.170119299018677 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170119299018677 (code B ref 18132); Tue, 28 Nov 2023 17:37:02 +0000 Received: (at 18132) by debbugs.gnu.org; 28 Nov 2023 17:36:30 +0000 Received: from localhost ([127.0.0.1]:47564 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r820b-0004rA-5B for submit <at> debbugs.gnu.org; Tue, 28 Nov 2023 12:36:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57490) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1r820Q-0004qX-N3 for 18132 <at> debbugs.gnu.org; Tue, 28 Nov 2023 12:36:20 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1r8203-0001Bf-Ul; Tue, 28 Nov 2023 12:36:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=0zQ7acP+UhrOWc2BqdnobRCDzGb8dARYp4JVGoQh2ok=; b=SoRowYa+LUiJ g+J4wzgkGCjP64aAQMbG8mIZdQfVY0TQuQR1DOrsvNbsmHpZ9o6h1Uo3f7BlCo8WbMewH7I5bvIeU BXRaGF4khePb0kGQWOrWVpYzmdfwlaMiqxuZDHpmWvS9bwkGAHXn5fL2mKjVrWS9EaKcZWWtmldrT Jjg4vTiqNcddUs/9poj1C3Vtex5HIx8fj8Mv8kX1MZOEu2t0PV05DtFFbTLK0uIpSV+Q5G3AD9uWf OBL2tmvH4GNHd2Mr+64HN9fqDXGR7uEV/yy1BFlSXdmh/YTH3FxPwpqWiEGP+44vzzTsIPXdkSvL7 k3YFH7JguRp2YwGYeY/aSA==; Date: Tue, 28 Nov 2023 19:35:43 +0200 Message-Id: <8334wp93ww.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86ttp6j8ax.fsf@HIDDEN> (message from Juri Linkov on Tue, 28 Nov 2023 19:05:46 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdoiiMd1fqrY=ZAXA4U9ctu0Vcx1BCj7B0U27A9sbJTdpkg@HIDDEN> <87silbstsc.fsf@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Tue, 28 Nov 2023 19:05:46 +0200 > > + ((eq system-type 'windows-nt) > + "open") If this is supposed to be a shell command that can be invoked via the likes of call-process and start-process, then this should be "start", not "open" (the latter doesn't exist as an executable command on Windows).
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 29 Nov 2023 07:22:02 +0000 Resent-Message-ID: <handler.18132.B18132.170124246820297 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170124246820297 (code B ref 18132); Wed, 29 Nov 2023 07:22:02 +0000 Received: (at 18132) by debbugs.gnu.org; 29 Nov 2023 07:21:08 +0000 Received: from localhost ([127.0.0.1]:48670 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r8Esd-0005HH-Oz for submit <at> debbugs.gnu.org; Wed, 29 Nov 2023 02:21:08 -0500 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]:42633) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r8EsT-0005GC-JL for 18132 <at> debbugs.gnu.org; Wed, 29 Nov 2023 02:20:58 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id CCA35240002; Wed, 29 Nov 2023 07:20:43 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <8334wp93ww.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 28 Nov 2023 19:35:43 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> Date: Wed, 29 Nov 2023 09:09:07 +0200 Message-ID: <86v89lt6mk.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> + ((eq system-type 'windows-nt) >> + "open") > > If this is supposed to be a shell command that can be invoked via the > likes of call-process and start-process, then this should be "start", > not "open" (the latter doesn't exist as an executable command on > Windows). Ok, will replace with "start", since only strings are used for commands. Usually context menus on file managers include two items: "Open" that opens immediately "Open With" with a list of commands So "start" will be used for "Open With" if someone prefers this. Then a new command 'dired-do-open' bound to the "Open" menu item will hard-code 'w32-shell-execute' call with the "open" command.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 29 Nov 2023 13:08:01 +0000 Resent-Message-ID: <handler.18132.B18132.170126325413450 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170126325413450 (code B ref 18132); Wed, 29 Nov 2023 13:08:01 +0000 Received: (at 18132) by debbugs.gnu.org; 29 Nov 2023 13:07:34 +0000 Received: from localhost ([127.0.0.1]:49095 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r8KHt-0003Us-Sh for submit <at> debbugs.gnu.org; Wed, 29 Nov 2023 08:07:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46370) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1r8KHr-0003UW-1e for 18132 <at> debbugs.gnu.org; Wed, 29 Nov 2023 08:07:32 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1r8KHe-0001Nu-35; Wed, 29 Nov 2023 08:07:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Pl7J/Gd/QEOZZ+TtvD6xYI+2RazkfaEiIQvafBz06Sg=; b=RJdI/EKw4SLZ sJVgP7XD+KFUWBI+iC8PYbIWExFlwR38/tjJq7ApSRc4FQqi8eAaZGaVmmYHjaZ1p+DqpkJi+3cGp G0PjU/NZV6TvAiUi9bSasMh4M+DpzbbVGp1WYNcMjq376UCrW10DL/4IlPRYzAoACfseU1QxzXZy6 Qu6cEjgHyh8WqphPK9Wsl47qeAguUTkvjxWFIySqNEh3Ci4nDMwpvS6M4uBGYR2QRvH2Na0uijT+l 5QFC9Z27H0dQPSqla99p2wclvGaVcy2y10mpfYXhcOj0RnFoiQiJ9Yw5O2ACQ+I3riAdmPT6G+t7n nvRspNbLQPYXCiwjk3QPEg==; Date: Wed, 29 Nov 2023 15:07:08 +0200 Message-Id: <83leag7loj.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86v89lt6mk.fsf@HIDDEN> (message from Juri Linkov on Wed, 29 Nov 2023 09:09:07 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdogh6UiaRCeuxLCj0p9cMqhCBOUwD1Rfsn1RUcGvLROP7Q@HIDDEN> <CADwFkmkgn6Kp8CULr4pe0wj1-gZfm3t183x-bnGLubOwnfaBSw@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Wed, 29 Nov 2023 09:09:07 +0200 > > >> + ((eq system-type 'windows-nt) > >> + "open") > > > > If this is supposed to be a shell command that can be invoked via the > > likes of call-process and start-process, then this should be "start", > > not "open" (the latter doesn't exist as an executable command on > > Windows). > > Ok, will replace with "start", since only strings are used for commands. > > Usually context menus on file managers include two items: > > "Open" that opens immediately > "Open With" with a list of commands > > So "start" will be used for "Open With" if someone prefers this. > Then a new command 'dired-do-open' bound to the "Open" menu item > will hard-code 'w32-shell-execute' call with the "open" command. SGTM, thanks.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 02 Dec 2023 17:50:02 +0000 Resent-Message-ID: <handler.18132.B18132.17015393841524 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17015393841524 (code B ref 18132); Sat, 02 Dec 2023 17:50:02 +0000 Received: (at 18132) by debbugs.gnu.org; 2 Dec 2023 17:49:44 +0000 Received: from localhost ([127.0.0.1]:58588 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r9U7b-0000OT-UN for submit <at> debbugs.gnu.org; Sat, 02 Dec 2023 12:49:44 -0500 Received: from relay2-d.mail.gandi.net ([2001:4b98:dc4:8::222]:47483) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r9U7Z-0000O7-Ce for 18132 <at> debbugs.gnu.org; Sat, 02 Dec 2023 12:49:42 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 8F39740002; Sat, 2 Dec 2023 17:49:24 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <83leag7loj.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 29 Nov 2023 15:07:08 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> Date: Sat, 02 Dec 2023 19:44:38 +0200 Message-ID: <86o7f8ijnd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >> Usually context menus on file managers include two items: >> >> "Open" that opens immediately >> "Open With" with a list of commands >> >> So "start" will be used for "Open With" if someone prefers this. >> Then a new command 'dired-do-open' bound to the "Open" menu item >> will hard-code 'w32-shell-execute' call with the "open" command. > > SGTM, thanks. Here is this new command 'dired-do-open': --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=dired-do-open.patch diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 1a17ed749e8..7887cc358aa 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1401,6 +1401,32 @@ shell-command-guess-open "Populate COMMANDS by the `open' command." (append (ensure-list shell-command-guess-open) commands)) +(declare-function w32-shell-execute "w32fns.c") + +(defun dired-do-open (&optional arg) + "Open the marked files or at click/point externally." + (interactive "P" dired-mode) + (let ((files (if arg + (dired-get-marked-files nil arg) + (save-excursion + (mouse-set-point last-nonmenu-event) + (list (dired-get-filename nil t))))) + (command shell-command-guess-open)) + (when command + (cond + ((memq system-type '(gnu/linux)) + (apply #'call-process command nil 0 nil files)) + ((memq system-type '(ms-dos)) + (shell-command (concat command " " (mapconcat #'shell-quote-argument files " ")))) + ((memq system-type '(windows-nt)) + (w32-shell-execute (or (and (eq command "start") "open") command) (mapconcat #'convert-standard-filename files " "))) + ((memq system-type '(cygwin)) + (apply #'call-process command nil nil nil files)) + ((memq system-type '(darwin)) + (apply #'start-process (concat command " " files) nil command files)) + (t + (error "Open not supported on this system")))))) + ;;; Commands that delete or redisplay part of the dired buffer diff --git a/lisp/dired.el b/lisp/dired.el index 97645c731c8..7f4b96353ee 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -2591,6 +2591,9 @@ dired-mode-operate-menu ["Delete Image Tag..." image-dired-delete-tag :help "Delete image tag from current or marked files"])) +(declare-function shell-command-guess "dired-aux" (files)) +(defvar shell-command-guess-open) + (defun dired-context-menu (menu click) "Populate MENU with Dired mode commands at CLICK." (when (mouse-posn-property (event-start click) 'dired-filename) @@ -2606,6 +2609,9 @@ dired-context-menu :help "Edit file at mouse click"] ["Find in Other Window" dired-mouse-find-file-other-window :help "Edit file at mouse click in other window"] + ,@(when shell-command-guess-open + '(["Open" dired-do-open + :help "Open externally"])) ,@(when commands (list (cons "Open With" (append --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Drew Adams <drew.adams@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 02 Dec 2023 18:38:01 +0000 Resent-Message-ID: <handler.18132.B18132.170154226217195 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN>, Eli Zaretskii <eliz@HIDDEN> Cc: "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170154226217195 (code B ref 18132); Sat, 02 Dec 2023 18:38:01 +0000 Received: (at 18132) by debbugs.gnu.org; 2 Dec 2023 18:37:42 +0000 Received: from localhost ([127.0.0.1]:58618 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r9Us2-0004TG-54 for submit <at> debbugs.gnu.org; Sat, 02 Dec 2023 13:37:42 -0500 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:16806) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <drew.adams@HIDDEN>) id 1r9Urz-0004T7-QC for 18132 <at> debbugs.gnu.org; Sat, 02 Dec 2023 13:37:41 -0500 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3B2IYXGW027905; Sat, 2 Dec 2023 18:37:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=p07Cd7/9e1dx/cIg/rNVpbBxmCxsKIY8vZ5PDO4+vIw=; b=MAvnBGFj8iu9YPkOPPssvKynMKPOF1knNnkuN58kqVu+wclpy4roFvL0aMvUTXFWiB3g BEtSCPdE64QAKcDZQjRaQ7QGUc06ZIteYyg5lVvebn4T1dG3iF3o4zcED8/JYSzc+iFL 1unjvUtvgKnItScweYFLDwQ12/mOkE7xTSIlz/WYTpmmvADKhaRl8uFqzjt327yFVbiz J3AOUQWw+rtlTvxw1JKZe+P1NHxQQnVGH/sn2Y71TDsh72DMT/IvgbvhV3kYl8ef8gz+ hM4a6wmoB/N3qd6HCLXJn+ar/gUJUSj1Vy/Z1ZTutU2pgnfBoP4iDAxshCZfHSGbCXjQ 7Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ur9y5801u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 02 Dec 2023 18:37:28 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 3B2H0lbj020704; Sat, 2 Dec 2023 18:37:28 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2040.outbound.protection.outlook.com [104.47.57.40]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3uqu140jtv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 02 Dec 2023 18:37:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NMsNiYN8ZtkYsYO8XV4YhOMlEkZrMnwr0d6Wo6Okh2Wo4kErQ/r41tdOVW3srgbHRyI6zT2msMonT4V+SP9UTxgnGE9YArjCLAA+o36rVWqdThhG1CUVKW0R0K1jT7t+QC1/6ncShjyyIeXXSesRDDsE7cvZlMXUI4J/H2qHDTT1fpTzU4jaO1QDZ19ZkYR3CZmXv9xbA7xtXwqyjgbwj8AHae7cuTFtpkfqzLKaq39UJxJ4IJnGnZbBRVmhvXPYXLLJhbAGq+2PsXeHKtyEfVMqbq6nBpnu/bC5sPhFhP9SGtTgywvsetJ3yWK6B0zmR4akKOgxeUSHNMv0caxDXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=p07Cd7/9e1dx/cIg/rNVpbBxmCxsKIY8vZ5PDO4+vIw=; b=oBejg2Dzaa/kK+9iOFMieib+WdqrJQ7e97csKjzY+dqMvDEMYUM3J+jy1bmiubuGmDzMBKKQq8WEKRtjmBt7TSF7jcGGcZDb+yB43eSwU+yAT4ronvjx7JhP2nzWiS6cKgZ2bF3NRgMm+w2PNfB4fDtGP7VFnpW/PiV/qFGxS9K2H3tPw5EbbExiwT69FeND1Y3p4X9aYjDjh+NveZwMhd0VpIwKKldN3nh5q2VK9Tn8Ap1mHsOJZ5SIDw1OmX/lCk343Avl7WJOW5aKZI5Gp0GNaR3cceU9UwJoXV8GqajHy2St4S/6fDxn4H7Mg6DzQ/ujx1FD2MnkTtSfBaivIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p07Cd7/9e1dx/cIg/rNVpbBxmCxsKIY8vZ5PDO4+vIw=; b=moFUKjdnl8UxnlopoqaOlh2ROnEQoZeJK2NbxQ/JN0N9YTPo5d/JDO/oMdJ7hW9tNeEP1W5LRuqA+7y/dK4s6gMSmefxsPWL9Gt9DlHXwOdflmC4vjD1CENy+hrDqscUMZLMtCEpgtYxZ9RNXAF3nsh8778AGi8TIySoMH+ACn4= Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by DM4PR10MB6888.namprd10.prod.outlook.com (2603:10b6:8:100::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.29; Sat, 2 Dec 2023 18:37:26 +0000 Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::3b4c:a669:c229:47b4]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::3b4c:a669:c229:47b4%7]) with mapi id 15.20.7046.028; Sat, 2 Dec 2023 18:37:25 +0000 From: Drew Adams <drew.adams@HIDDEN> Thread-Topic: [External] : bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Thread-Index: AQHaJUgC1N6Iaee1Y0++Gk5RPD/QjLCWT63A Date: Sat, 2 Dec 2023 18:37:24 +0000 Message-ID: <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83lf2k5gna.fsf@HIDDEN> <CADwFkmmP5tgu8eJCRqdbqwbqezHbjkQxtsotwhPszF9_ECdJzA@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> In-Reply-To: <86o7f8ijnd.fsf@HIDDEN> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|DM4PR10MB6888:EE_ x-ms-office365-filtering-correlation-id: f7f6c0dc-082f-41a9-3eab-08dbf365ba51 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VjdjPcbBkzn0skNRB9YKouSZZHJ82SFrdwn/OtMeYLNvTVO3W0nr5hUy3ubmI8WBNmGIgbD7RIloL1jwbdcPR8IaL9vdYh57AQhngS+LOiTxeiJ0s6eM7kzGqSmtSJjC4vXREKkKwgN6vubsbtSdN+mboHbpp58k2LJLISjdQpam5zMaweMOT7kmPtCaECQ1H7B3HuKzfvYPCZWeomIggLcJMMrjCMmQ5UTioXpOHV4xHOMaT0GWKcZMLBxeQajUrLPEIgMP4MYUiHVn/GlDSeQE8CDpOJT5ZNxCP43MgBh3c8E/bmA1/zGgJJyYP3APqazQDLsb3Gjeq5oOHS+25h7jIKqd1wQSuCTZwaq+LihJ+jeDskokvzGPQN5myOeyH8SXa33oq4ip5nSEcMsy3jkel73ct6YQ7jEFL6wqHV0CXZq9dqEeBAkShOzBfQjoKZa/V6FG/f9hVuh9NYnyU/CGP+hj0tO2wHQ3DRzvmn2Ub8y4pijcWKtXaB+xGWh921V5g2W3myYwS3EGiNplRMgXDSY4aGwJIsA1J6+q1qkUx8w9T7zZpLR01BKXqVg5VZ2NA4M1nK6WyIkRfttg13vfc3800sPCz7Yc7vPfkh/MnuO7Rx6XkcXtthyQupor x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(396003)(376002)(366004)(136003)(39860400002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(55016003)(122000001)(44832011)(8936002)(8676002)(86362001)(38100700002)(7696005)(6506007)(9686003)(26005)(71200400001)(478600001)(64756008)(316002)(66556008)(66476007)(110136005)(76116006)(66446008)(66946007)(33656002)(558084003)(2906002)(38070700009)(41300700001)(52536014)(4326008)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 8suPqO7QjfPhbDbFEyXVhEISM3dDG/sEkEEv5FePpx6jnQlG4+AT/ye1Bwd48WLAWCi8nXt0UdzncflFstNzOvY9bhEwQI4JhjpWZN8S5e6r+M+RI9ZtphafplbNS/f9KyWSVjrhn0ZbGfDM2sFaspC0esomXJMPWt74ONWhgtSuZo1WolwdHr3TpbrziL5TZMaDznzwmouA7jBVwaS5OU1VGzr5uQZ//NOtqTxD3o2mf3UTsJXTUpDH4IjJBdWnEgyUuY+RDxXCc4d7lbHv1hpYht+Y6AqEtUQNRvgbVZRMK3OfCq7Nj4AX91PVU9v8xbJDJW4SXdcROlADcbFD20NAU9pkmg7qQ0ao4+NpcO1aNNqzUB2fBGoliyDR8LZoDj4bqiRjST17I/7RFplu/KktKIlDgtpn4mxI1hd/FAlgnvR+jL2ewGeM4xA9FydJWMqSuFxfvLEyTb7LqwJupuj96tOCEOk16Qk6gcaouJXeXmdQcFkcjKncI+Dc2hJtm3ZnNwhVUmLRYiW3pqTPcH3+JutcBC+VHVDn73VEru0QozoQghPEDUjCap0+8BDEJBrMPFj4GYBoS+wFiJtdphEvcY9HfNhiWaHDz/oyuyLgPjio9gdB4hBgUg7Nb7199aCkU9Z5iiPSNzZmaJyLq0h9ARfwYwbCyu2nMwRIbDJ79COzyRznLWFrCfWpQ1jO3NetMLVy7qzFsPnYuPHq4/+2V+LjV9nDN7+7RhdaJauelTtI+GrNkMCI5klGbTjph3TjbL+snAvRJ98mFiGfL/FIjHcrb45w7OiaYl25+tivSbJ0yLmJfzbiGzNfoROemDAoEXs8CSwDZjX+HsJX6M99pBAbos3hTcdCuwmUg0xh+8pb0TU1shgYpXboZSXqVnwOltdoDP8xAXr0tODDT/IvsXPOlwRlAb9wudB2sp6HHixHOjttLK9SIj7gNgslcBQ1LuCsyncmHoflz5KBcgxLtHwoxNBTKkka+Jy+daac6Gvuk/Mx3v08bXRUXkoFqgDiVnDbKz2imf265T678nRJlDKq7dj/NJIRT2J2GPMyllBXVCVd6JZDs+1sgIKceV7XYL04P9qXI7g1LsdVWONhBNwwx4gDHKaLLWI29W8cLCENIcdH2ZqoH0M5RXPjINmSAoBv9P6YD5BC/AwhhH8/3AnhAudLd1whPekrMsOviMvihYjaxbDAXOENEG6Y2kbtKm90x1aFOZNBO3tG7syS4qWxRK4bVAuw6f7eiZCY9QozvzgHzt7/G1hPKKNUcaeIJwc3wGubAe0BkcDOzHf1fnG8y0QfiKiWnUdrUcbabRX6bHvF2vNd50PFWHJcGHAzwTREvwSpz6xk4GxItrXuRWXXko97rWrJxuUJttwx8+La8Js4LgbPhA/Dclh6N8MnJmxBwsfTKCQJcMOPVOQYBsJv3Oh8lIRF1bsM3ZYIK1LF8JUukElUXKGeNkf+WBBYbELcOhIePq53/shYW+KgPPrIdaqIhqoQ07bgnBYk070A4vwmQ7CCLk5wfgDf+2y+LPr4JuTdro/+84pVQPZGL2A8OI6F9MM092GgkiuFi8lBtiiDHnAhCwfOqnbm Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ODjxBoNU39b16+3NQBhaNFeRv2JJ5i+DmRQBTOMrhOUqUoi43Dy7kJHnFDSFwMbryow3USntQT4iatx9+/MqT3TQApLVjBVQWS2Oc2fn4SNkMVwIjMNX/q5S7CLe7B37yntu3J9jUr8JeKS3aEv+fs0ux1ExEn4jjJ7qRk9X/zCLi1UCBet/0Pr7YrmzA5BhowJYid0Dc4xUu77fzYUHWWyUwxvQJ4dOiTFJsCi3OOdnNuym1XCPCL+2cORhD8VhZXrT9hyE0765idOOUHxrrpxRr+xYPyOD/koRSiLNrbg6rc9VHmUwf8c3abILR5I7FsjKY+g0fb+UZOVytM2Pvmwlef/WpXZvYGYSvtWe7lbGkVY8hEFW3ozwTNVQg5iTqtwTDotoWa25I6/rupCPXZVQdQrTYdWmbO4hVM6HvbQq4MfD45IN6zYHmQxpDeTnNnG80UnLQtfamWau6keMtrAfA3sBE9zdYgPxT9Ju0kMNWLQXcMWDzVwBIypre0bNi6iVfm5QrJredKcajDVrABhjpcDiP2v0v2OO/txv7dpfS/OGXCp1rAV7tTJjpjT+bWdHdTESaT/OZiTT3Dvw5VgQBeSTUUgAg+jrv7nIOUgJuzQILumm0HbiI6fzsbqK0xU3iUeawqzlMfLCb7TroYYvxtCQsbwxXOmNFyN1uD8thE1giqQYgqVMkMBRjfVjeJWFUyzxF/38WVnUYX0wFI5piMvG/2AuX9ltfmYI3IJ7P2q2FiuvqQISEiwYNV9hefEEAutieWnHO7RAdrEJy/3X8VeSfY5MiQ63NTcioxp0L9V/tETVLlVMeVyTtZnJ X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7f6c0dc-082f-41a9-3eab-08dbf365ba51 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Dec 2023 18:37:24.6110 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dxBdVXok4VGDUPqMPYbfZvwRgO49jcd/0fUFrDfHljYWxgVrLB+AbbpT4f9bHbcOLYbR7G2ozF3FaoBktM5hgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6888 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-02_17,2023-11-30_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=698 spamscore=0 malwarescore=0 phishscore=0 bulkscore=0 adultscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2312020138 X-Proofpoint-ORIG-GUID: SXHeGZl_SvlTZstX5g7b8rLaRUyOBVbq X-Proofpoint-GUID: SXHeGZl_SvlTZstX5g7b8rLaRUyOBVbq X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > Here is this new command 'dired-do-open': Apologies for taking only a cursory look. 1. It doesn't use the marked files, contrary to the doc. 2. On MS Windows, at least, it doesn't work for files with embedded space chars.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 03 Dec 2023 17:07:02 +0000 Resent-Message-ID: <handler.18132.B18132.170162317625347 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Drew Adams <drew.adams@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170162317625347 (code B ref 18132); Sun, 03 Dec 2023 17:07:02 +0000 Received: (at 18132) by debbugs.gnu.org; 3 Dec 2023 17:06:16 +0000 Received: from localhost ([127.0.0.1]:60733 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r9pv5-0006al-Kk for submit <at> debbugs.gnu.org; Sun, 03 Dec 2023 12:06:15 -0500 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]:44811) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1r9pv1-0006aH-HN for 18132 <at> debbugs.gnu.org; Sun, 03 Dec 2023 12:06:14 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id E5173240004; Sun, 3 Dec 2023 17:05:53 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> (Drew Adams's message of "Sat, 2 Dec 2023 18:37:24 +0000") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> Date: Sun, 03 Dec 2023 19:04:55 +0200 Message-ID: <86y1eb8bi8.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >> Here is this new command 'dired-do-open': > > Apologies for taking only a cursory look. > > 1. It doesn't use the marked files, contrary to the doc. > 2. On MS Windows, at least, it doesn't work for files > with embedded space chars. You are absolutely right. The previous version used wrong assumptions. Please try a better one: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=dired-do-open-2.patch diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 1a17ed749e8..23c7a9e0027 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1401,6 +1401,36 @@ shell-command-guess-open "Populate COMMANDS by the `open' command." (append (ensure-list shell-command-guess-open) commands)) +(declare-function w32-shell-execute "w32fns.c") + +(defun dired-do-open (&optional arg) + "Open the marked files or a file at click/point externally." + (interactive "P" dired-mode) + (let ((files (if (mouse-event-p last-nonmenu-event) + (save-excursion + (mouse-set-point last-nonmenu-event) + (dired-get-marked-files nil arg)) + (dired-get-marked-files nil arg))) + (command shell-command-guess-open)) + (when (and (memq system-type '(windows-nt)) + (equal command "start")) + (setq command "open")) + (when command + (dolist (file files) + (cond + ((memq system-type '(gnu/linux)) + (call-process command nil 0 nil file)) + ((memq system-type '(ms-dos)) + (shell-command (concat command " " (shell-quote-argument file)))) + ((memq system-type '(windows-nt)) + (w32-shell-execute command (convert-standard-filename file))) + ((memq system-type '(cygwin)) + (call-process command nil nil nil file)) + ((memq system-type '(darwin)) + (start-process (concat command " " file) nil command file)) + (t + (error "Open not supported on this system"))))))) + ;;; Commands that delete or redisplay part of the dired buffer diff --git a/lisp/dired.el b/lisp/dired.el index 97645c731c8..7f4b96353ee 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -2591,6 +2591,9 @@ dired-mode-operate-menu ["Delete Image Tag..." image-dired-delete-tag :help "Delete image tag from current or marked files"])) +(declare-function shell-command-guess "dired-aux" (files)) +(defvar shell-command-guess-open) + (defun dired-context-menu (menu click) "Populate MENU with Dired mode commands at CLICK." (when (mouse-posn-property (event-start click) 'dired-filename) @@ -2606,6 +2609,9 @@ dired-context-menu :help "Edit file at mouse click"] ["Find in Other Window" dired-mouse-find-file-other-window :help "Edit file at mouse click in other window"] + ,@(when shell-command-guess-open + '(["Open" dired-do-open + :help "Open externally"])) ,@(when commands (list (cons "Open With" (append --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Drew Adams <drew.adams@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 03 Dec 2023 21:17:01 +0000 Resent-Message-ID: <handler.18132.B18132.170163821330040 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170163821330040 (code B ref 18132); Sun, 03 Dec 2023 21:17:01 +0000 Received: (at 18132) by debbugs.gnu.org; 3 Dec 2023 21:16:53 +0000 Received: from localhost ([127.0.0.1]:32864 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r9tpd-0007oS-7F for submit <at> debbugs.gnu.org; Sun, 03 Dec 2023 16:16:53 -0500 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:46662) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <drew.adams@HIDDEN>) id 1r9tpZ-0007oI-9H for 18132 <at> debbugs.gnu.org; Sun, 03 Dec 2023 16:16:51 -0500 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3B3LCPVH019364; Sun, 3 Dec 2023 21:16:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=zLR1F4hEcnz/PPSPTq+duwqCU9Knh7dEYLPMot2ivVk=; b=SpambKPReYyi8UZr95E5UjniM42CLElj2muvqtWf6c1utv5Z4uwuMOW3emgpvm9r0rlj o3t73Q4pc9JNsO4jvrnDEcBtTXaogYt+J4ik2fUloEXgTe82y8Kr8fdMgHeLnD0zjCJG XJWJKODBCw/osnfpDilNV++0LTQkac9/IA2a2CUYSB70f0XcVfjn7ybnoRvlT6wuaz13 ZoAGq58+rkl5MiKrfwhAjhKFGJsHFzvfdCdtY1H37AX0Gu9WfC2JiSWCyGigI6YV38vD xaFr5/SiF+CRWBsZREXELhAGFLoYqNvZwG5J0Vsy0pilBuoYHP4VGZKLOKaWmjThbMzO Ww== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3us1crr07k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 03 Dec 2023 21:16:38 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 3B3KV1RR034399; Sun, 3 Dec 2023 21:16:37 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3uqu14xa17-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 03 Dec 2023 21:16:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RkjeoDpWuxMBpyx2mfVuR5rjSfft0z6YxwXcqN/hwvJG/cITedv9xzPrTz/7bHXgSNT8P4cLhVg30iL3F5oapTwbukr7b+KAUl7/LlmXliNnCoo33KC7OqzV35EkfZ/zy/FZzxTIFfOpQvdEJ5JVnjtgyLaBBcuEelo27F6fYyMrCVU+ggkCGcjJaU4vvnPGEPeLe/MPyutfW7Vtg28dlD6LEmCIvEQ9YyEl6DS7oFa9ekMqmS/531yq3CuYlVVMGOiZQ/Gp3grwlHjrgZBGLS7xoqGb+CWmcQyRJktvF/TpesfERvn2SMXzmDNSSR73J2Bv+Y0evGFxVsvS4rlwKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zLR1F4hEcnz/PPSPTq+duwqCU9Knh7dEYLPMot2ivVk=; b=mEgEJtXirfmsQU9vO50uDYzZZwX8dO9nyiMCXX3wE4j0MIrjMN8XYpLvMXGQUxDVWbaJNUFSxnzhEiPOFF6XHu1g6shzObyzcDc3GIGxOqR3dTFUo+MtQ0vOzuUY6npZuE3dheSJqeWM9rskz9ASahAmLc+ClsFf4LwWDjx9HCUa7UrUZu3BU5bmRvJUeLisKTsrv754cW/AYX5jnz+JET3/jW6rg1tdLr9mq96SeW+yiuyHrLNI/JncC+TU+IXLg+SF5E6iHRB3CqcAzZzfE4By7Dz3JMEIJlcQa8TRfwHRkNxbfGWQSJg9ugbgBusrGmc3EUrhS59SetHV0jmjMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zLR1F4hEcnz/PPSPTq+duwqCU9Knh7dEYLPMot2ivVk=; b=tEG3k3AD7fL9k11OTk24TY40lp0BvfxuAjbF5pD26vtK2hayIpGH+ZBVOiwCmmWB3iuLeAxy54IsjLHfJtFtAyh1aPJtj3m+1kXwVS1CDN7seOf/WP5vVwW0gAFGzQ8/6lgxMZs/yXEAJcgMn5xVigL+yukMv1egR8AxcgogYYA= Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by DS0PR10MB6151.namprd10.prod.outlook.com (2603:10b6:8:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.22; Sun, 3 Dec 2023 21:16:35 +0000 Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::3b4c:a669:c229:47b4]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::3b4c:a669:c229:47b4%7]) with mapi id 15.20.7046.033; Sun, 3 Dec 2023 21:16:35 +0000 From: Drew Adams <drew.adams@HIDDEN> Thread-Topic: [External] : bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Thread-Index: AQHaJgsFpMzSgusLoECNqoRF60pkDbCYD2Mw Date: Sun, 3 Dec 2023 21:16:34 +0000 Message-ID: <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdojTXD0QvKDn8V6x4Unja6qZuZZ3Q1KqqU2yEDLNKRmNig@HIDDEN> <CADwFkm=Z+MWgbMnvrGiWo76cMeQ=q1xJHcZ-Uyc9QjThVULhQQ@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> In-Reply-To: <86y1eb8bi8.fsf@HIDDEN> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|DS0PR10MB6151:EE_ x-ms-office365-filtering-correlation-id: a33b88b0-d0ec-4239-ef3b-08dbf4452132 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eHCHHYI5LtGa/Ls2zjxZ92CwjJHKTMK7mg9lhSsPdjx3fFNCAAzuPsVvVkQgOBOAPzaeldhHBiQbmKDS9/XtvpWmKw1Jn6M4/xsj4eDca7ZEDje0wGhE6a5jzLCUOgw9sRQ1Ar1q/z6WN4ji6/MbuBIlrji2wXqN/wqO69P8hPDwH4kP+L9yOAAJ+IngVIspQ4wUWWEq+vYwvPSk43TgPuaOeqmDWGd8GvuBd3QTLOfCItXY8HncHh8LyHwUOuPtCSNCNjjfP35o/ewMOPhSMkt2CdDnaX0aBBbjja3KDTvv1C4V7nBrTclS31AFfud06tNLBJg11WezseIGbQHCZpi+RxQGcmJp+lDLKXFFiFwWOr6RIV9B+5sd9WbueTXA9wYYwY/gj9cb1VXgo83HD6Co6eYQ4pSFEWei4km4aClJh+ykxWIds6MXDj4WxsR7Ba6d4dqampbc0u4+e/ggtUXh8cwsSe/5kAZd2Buolvw7KCMUHGJvZi0KTYKT0zxKVy71ScuTItBBy3DFc0NifJHg8oekys1YQil42QD1miWkklx6Hit3MCTxmmzAFffkrgcev0zy0zkmdnSMkIDQrxTT4PCpz0zfWtusDL4os+Hh21idB+LOosRH4gEYmclxFrBjV0fBWIGP/X2mi6IaYWmDTIWKNHTPrX0ykJa1qG8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(376002)(366004)(396003)(39860400002)(346002)(230922051799003)(64100799003)(1800799012)(186009)(451199024)(4326008)(52536014)(44832011)(86362001)(33656002)(2906002)(4744005)(8936002)(5660300002)(8676002)(38100700002)(7696005)(316002)(55016003)(478600001)(54906003)(66946007)(66476007)(6506007)(66446008)(64756008)(66556008)(6916009)(76116006)(71200400001)(41300700001)(9686003)(26005)(38070700009)(122000001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 5BS7oAljMr/2rFvghXOu1gt7iSu1ZmSjQ/oKPCZQ99jRB6WpcQAcYn0PY8/cTHp02phbrDw+mZfDlztnD1QpmF5B69WAV2pKKPNTRvXYl70xwCoaXYnDoo4zGB2uObTYYM02HqFZmEegtCDy3QlDf/bZLM46/3sQW0GOe041D9oVRiGFBdKb1l4dN4PX2D4BudRb0W9YxoCcXDFZbEmO47QuO4VZp6NBxagxXPg8EOyGFUibagr9eqEHUVwUU7VOzF0YpZQO6ex4EFBghsco4bQoReEJ73IvxNunuomGma+ES0fvb1TXajlgBf7G7U3Kh3Haegpc+Mu+JC0Rq72v0AAeRBcSjwWnZJYCxgnLZtUhwXdm3ew7lGdrzn6SzddepfF6xQUzPh+85TIEtZ8qd0SBnnlYmEpql4slpixZ8EbSIK1SZ7/99Q3Obj44J3lLSsUQZ9hb/8Il2GtnMxh5wXDji231ITGgZCmYtHBFuXiJeUfBZMI6eOznGDCwegJxJqXXXevr9Fy7SKuluAXK/RAYqTMLUiK7gLlMTQyiCHFL5rIBhJIDehiyTak4/bTFMPzgm0OWR4J5XXUxsaopFAsCcheo8YosOHSce719uHU0r4O46oIVQ9OAH3vlu1adwnXIXbSOH8ImaIirb4hJJhUP44V4Q81BHn1MOozNdfhaIP6f4sEznwISnoPoQIPPg6rQipeduPIsPMqSslP4+zg7EpjueFH+WEka/QOOlSxGpdSJwgwgYQRx5hc907iE30zvsa2AK2cmjAkdD0tvga5DV385QcxfAW/Ut/FOPSzpJEVXGsrirVEtclfWJNiR0pbf21VRaQSQ3x2+RyyHyUjF0rq0+ZMY/glSLUDg67JGXL8ed1YdGSLbkkvVbCOFw5qio9hyOqwRs+7JL7Go+Nf85mn67YkgzvO1FBKtdDqG7yJj7ylObi9PUU8WL0/ES/0BI4cmDwkzLf8KRbN4LgQuSC7g0e/ER121Tsz91xRCRwsOlnGxDQNH4xlgld5ewhLAj0srKi9hsQzezVgGQM064YG4TWtODLNaOQCPRk73NrsCOckdRdFdYR20SWvZC74az95sQvbpsOzK+38Ze5yMnL7WSPJ9lHX1ENWTSHDb+9i+9iT9luz+TfI9b75i6mmKSwoBt1UTJIQBRbY8WxiXRWhMVP2e2qIhwbRFE0ghByJU8hTSwp7Wlv+ufNmMevNoEjov5t1PQtlDFeI5jIgiKAO0DTIZszC1V//Q74BARrp+1hZHoZLfZAqIgOi3bzJ8gY1xAfE9auG1tUtbxsI1eLxpd1O5fzq8RXnbYzeFaYCsJKnYyjWw1ZRYGdKu9SppYIftYScKJL/ayQaepJ/Zt4QAiKw5s3a/EOUQQbbf4+M6iWt+Beywx4k+HxRGe7zWn0Jaj0/MuWW0prYHU8dHgqywAPH2wTbFPth5/+YlpRQVQH5Uv7PO/NJ4luhdSlbT+s0B8/fjhxQ49zjI4+OEKqye95Zn3PgObyCcrdxAZw5o2nuMiKIddVOYLIodZBUD7LNpRFDbb+FeNYk5bqdPitd/atQbf2cOYxj92AX5uEXZkWXbfbp+2eggABhZ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 5pLDaQGHBOfW2Pi4x+I6ZCOOF1pYLhb1+S+202Yh+uyk9vCvU1HSED96FRkiERbr/zh5QbbmkH7WX8avuyq6vmNULCaCAz6TQILWvu86F+Q/mHULYvxOJfwAgEklQ9+CL5yzis60jQBJmomFW/BmwdiSF6wJWTAQC9eqIvteepMrnRagGmMus2eeZJ1lCSXka3Cfi+F43J97hc7gxEbcS+heaKe66H6zpn71x0M9fP5Jdgu1Y4tNp34F0PXbes69NDP8qfq4OUxcWkylO/um/rNl20nllxyRDoo0xLwmHh6bMmdrhp4Wsav9rhLIvKfbpz86WSSG+8LJblxNGtF/MnD7tsX09jX6dl7O4GFsnhvHb7Skch8mu3KKqLKiyKou/9u5ewzse2d0bTed3FO7DkzHGwi0KIdJSTKwPE+m0wKjcM0QSFjJb2ySbnuPLXACmJPibzMv4n7FTJVAtw2uTiGLrIu9LSAEntzxITrwBTxaXSnHAj9X+A/qM4nOA3x77/cZhi0o5Hb/NGWORoqaeqhRm17Nan4yVbL3AUJfNqXVTkRTOq/ZuksahfrxSRZM3uYSoagUAqvYOF2Kc0iDVnpLBtalEXyAC+xxsFJhUuI7mtixHWDTnOEEhtaDbdUl1dM7ijJoLZ7Yff0SdCICziqfHv1oYU1qwChnV+cih+RahEnbULRQHwoY1fpNFNhQP7Xg7WXECYl6u4YL8/t4qKiMMDQYdrkxJhd3QCpREXty0Ts7bp/xpz82TQ1uhiiID843W8eFPzFxayY0kUImolWCZiXmMUJz/RYDOwTeBPt1e69bnh+5omGx6ITBu3v1 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a33b88b0-d0ec-4239-ef3b-08dbf4452132 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Dec 2023 21:16:34.9670 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P8phTDkHjzrb24ec7oThm5LFm7Has4WM2ZPHIroOvHcvD8v/aUh4VcLVZr7xCsH/AN7J7LkdXRK4uZKiBO3saw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB6151 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-03_20,2023-11-30_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=671 mlxscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2312030168 X-Proofpoint-ORIG-GUID: GbHDSI-tK-vrzEx8Z5eowGp4kIzFf149 X-Proofpoint-GUID: GbHDSI-tK-vrzEx8Z5eowGp4kIzFf149 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > > 1. It doesn't use the marked files, contrary to the doc. > > 2. On MS Windows, at least, it doesn't work for files > > with embedded space chars. >=20 > You are absolutely right. The previous version used wrong assumptions. = Please try a better one: OK. But why evaluate `system-type' over and over and over... Just evaluate it once.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 06 Dec 2023 17:31:02 +0000 Resent-Message-ID: <handler.18132.B18132.17018838129712 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Drew Adams <drew.adams@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17018838129712 (code B ref 18132); Wed, 06 Dec 2023 17:31:02 +0000 Received: (at 18132) by debbugs.gnu.org; 6 Dec 2023 17:30:12 +0000 Received: from localhost ([127.0.0.1]:40355 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rAvit-0002Vo-QV for submit <at> debbugs.gnu.org; Wed, 06 Dec 2023 12:30:11 -0500 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]:54815) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1rAvis-00022J-Ub for 18132 <at> debbugs.gnu.org; Wed, 06 Dec 2023 12:30:11 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 973BF240005; Wed, 6 Dec 2023 17:29:50 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> (Drew Adams's message of "Sun, 3 Dec 2023 21:16:34 +0000") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CAOnWdohzNADVbQrk-ZQvwWpcr4ewDtr-Hpvs-K5H+-TJfP-LGQ@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> Date: Wed, 06 Dec 2023 19:28:55 +0200 Message-ID: <861qbz9r54.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > OK. But why evaluate `system-type' over and > over and over... Just evaluate it once. `system-type' is a variable, so it's not evaluated. OK, now pushed.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 07 Dec 2023 17:35:01 +0000 Resent-Message-ID: <handler.18132.B18132.17019704716306 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Drew Adams <drew.adams@HIDDEN> Cc: Eli Zaretskii <eliz@HIDDEN>, "18132 <at> debbugs.gnu.org" <18132 <at> debbugs.gnu.org> Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17019704716306 (code B ref 18132); Thu, 07 Dec 2023 17:35:01 +0000 Received: (at 18132) by debbugs.gnu.org; 7 Dec 2023 17:34:31 +0000 Received: from localhost ([127.0.0.1]:43055 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rBIGd-0001dd-3K for submit <at> debbugs.gnu.org; Thu, 07 Dec 2023 12:34:31 -0500 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:47583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1rBIGa-0001cz-Sg for 18132 <at> debbugs.gnu.org; Thu, 07 Dec 2023 12:34:29 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 55BD0240004; Thu, 7 Dec 2023 17:34:08 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <861qbz9r54.fsf@HIDDEN> (Juri Linkov's message of "Wed, 06 Dec 2023 19:28:55 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> Date: Thu, 07 Dec 2023 19:33:53 +0200 Message-ID: <86fs0ef372.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain > OK, now pushed. More problems: XDG has much better support for media files than dired-guess-shell-alist-default that contains many old obsolete and random commands for media files. OTOH, dired-guess-shell-alist-default has much better support for non-media files than XDG and mailcap. So currently there is no way to configure shell-command-guess-functions to use only best commands. When shell-command-guess-functions is configured to '(shell-command-guess-xdg shell-command-guess-dired) then images are opened with "xloadimage" that doesn't exist. But when shell-command-guess-functions is configured to '(shell-command-guess-dired shell-command-guess-xdg) then images are opened with the existing program like "display", but then patches can't be applied, because XDG provides for patch files such useless commands as "more" and "less". All this can be fixed by this patch that removes old media commands from 'dired-guess-shell-alist-default'. Then removed commands will not override media commands from shell-command-guess-xdg. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=dired-guess-shell-alist-default.patch diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 0998e76c410..de54968bdbe 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1216,28 +1216,28 @@ dired-guess-shell-alist-default " " dired-guess-shell-znew-switches)) '("\\.pod\\'" "perldoc" "pod2man * | nroff -man") - '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing - '("\\.au\\'" "play") ; play Sun audiofiles - '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") - '("\\.ogg\\'" "ogg123") - '("\\.mp3\\'" "mpg123") - '("\\.wav\\'" "play") + ;; '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing + ;; '("\\.au\\'" "play") ; play Sun audiofiles + ;; '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") + ;; '("\\.ogg\\'" "ogg123") + ;; '("\\.mp3\\'" "mpg123") + ;; '("\\.wav\\'" "play") '("\\.uu\\'" "uudecode") ; for uudecoded files '("\\.hqx\\'" "mcvert") '("\\.sh\\'" "sh") ; execute shell scripts - '("\\.xbm\\'" "bitmap") ; view X11 bitmaps + ;; '("\\.xbm\\'" "bitmap") ; view X11 bitmaps '("\\.gp\\'" "gnuplot") - '("\\.p[bgpn]m\\'" "xloadimage") - '("\\.gif\\'" "xloadimage") ; view gif pictures - '("\\.tif\\'" "xloadimage") - '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG - '("\\.jpe?g\\'" "xloadimage") + ;; '("\\.p[bgpn]m\\'" "xloadimage") + ;; '("\\.gif\\'" "xloadimage") ; view gif pictures + ;; '("\\.tif\\'" "xloadimage") + ;; '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG + ;; '("\\.jpe?g\\'" "xloadimage") '("\\.fig\\'" "xfig") ; edit fig pictures '("\\.out\\'" "xgraph") ; for plotting purposes. '("\\.tex\\'" "latex" "tex") '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi") - '("\\.pdf\\'" "xpdf") - '("\\.doc\\'" "antiword" "strings") + ;; '("\\.pdf\\'" "xpdf") + ;; '("\\.doc\\'" "antiword" "strings") '("\\.rpm\\'" "rpm -qilp" "rpm -ivh") '("\\.dia\\'" "dia") '("\\.mgp\\'" "mgp") @@ -1320,7 +1320,9 @@ dired-guess-shell-command (if (equal val "") default val)))) (defcustom shell-command-guess-functions - '(shell-command-guess-dired) + '(shell-command-guess-mailcap + shell-command-guess-xdg + shell-command-guess-dired) "List of functions that guess shell commands for files. Each function receives a list of commands and a list of file names and should return the same list of commands with changes --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 07 Dec 2023 17:50:01 +0000 Resent-Message-ID: <handler.18132.B18132.17019713498068 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, drew.adams@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17019713498068 (code B ref 18132); Thu, 07 Dec 2023 17:50:01 +0000 Received: (at 18132) by debbugs.gnu.org; 7 Dec 2023 17:49:09 +0000 Received: from localhost ([127.0.0.1]:43081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rBIUn-000264-0G for submit <at> debbugs.gnu.org; Thu, 07 Dec 2023 12:49:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41946) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1rBIUi-00025V-Iu for 18132 <at> debbugs.gnu.org; Thu, 07 Dec 2023 12:49:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1rBIUP-00007B-S9; Thu, 07 Dec 2023 12:48:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=sEdCZ/S8yWn73sRLFjUwUx8mMWi5YvZuonvniMqu5oI=; b=EfouMWwo27BZ E9arJTkcpMaP9iw0qCmuT4zq13Zc3wryw6Z1C3AjGOVksQQr67TP+Dr3S+Td9b7iUmI9r6QgDQp4N BdcqXEB0hxg1DB2SMxONYqyM43l+1NjS5o+jWf9Jlh5oM78iMJc1w9XzIhm5pkE3vrZTMH8UXOv4x HRw4da/ZG/RdrxaTkuHd+HU66/a0USdAa3ZqTgMbatjwH7vQsUcA0B8sOmzAGfcE4Q4Ks8/+XsRmG 0mHIH2qOMDfNGX6+hClKrlkgAY1QkepUhWBH8VdcHJHx45SdpBZYYbjt7VmkzgtkLfvB3R4sPuRgI mOCx97vEAgK1Hn2L0LDoiw==; Date: Thu, 07 Dec 2023 19:48:53 +0200 Message-Id: <83y1e529a2.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86fs0ef372.fsf@HIDDEN> (message from Juri Linkov on Thu, 07 Dec 2023 19:33:53 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <CADwFkmkZMXdF5bdCBvgPKXz0WAEcMzdrWODF6hZCYEQYetp0GA@HIDDEN> <CAOnWdog3bTNSVBEprKoFX8yGEWVxrdh+Vu5kCx6Ew=mgHsWrtQ@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: Eli Zaretskii <eliz@HIDDEN>, "18132 <at> debbugs.gnu.org" > <18132 <at> debbugs.gnu.org> > Date: Thu, 07 Dec 2023 19:33:53 +0200 > > More problems: XDG has much better support for media files > than dired-guess-shell-alist-default that contains many > old obsolete and random commands for media files. > OTOH, dired-guess-shell-alist-default has much better support > for non-media files than XDG and mailcap. > > So currently there is no way to configure > shell-command-guess-functions to use only best commands. > > When shell-command-guess-functions is configured to > '(shell-command-guess-xdg shell-command-guess-dired) > then images are opened with "xloadimage" that doesn't exist. > > But when shell-command-guess-functions is configured to > '(shell-command-guess-dired shell-command-guess-xdg) > then images are opened with the existing program like "display", > but then patches can't be applied, because XDG provides > for patch files such useless commands as "more" and "less". > > All this can be fixed by this patch that removes old > media commands from 'dired-guess-shell-alist-default'. > Then removed commands will not override media commands > from shell-command-guess-xdg. > > > diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el > index 0998e76c410..de54968bdbe 100644 > --- a/lisp/dired-aux.el > +++ b/lisp/dired-aux.el > @@ -1216,28 +1216,28 @@ dired-guess-shell-alist-default > " " dired-guess-shell-znew-switches)) > '("\\.pod\\'" "perldoc" "pod2man * | nroff -man") > > - '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing > - '("\\.au\\'" "play") ; play Sun audiofiles > - '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") > - '("\\.ogg\\'" "ogg123") > - '("\\.mp3\\'" "mpg123") > - '("\\.wav\\'" "play") > + ;; '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing > + ;; '("\\.au\\'" "play") ; play Sun audiofiles > + ;; '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") > + ;; '("\\.ogg\\'" "ogg123") > + ;; '("\\.mp3\\'" "mpg123") > + ;; '("\\.wav\\'" "play") > '("\\.uu\\'" "uudecode") ; for uudecoded files > '("\\.hqx\\'" "mcvert") > '("\\.sh\\'" "sh") ; execute shell scripts > - '("\\.xbm\\'" "bitmap") ; view X11 bitmaps > + ;; '("\\.xbm\\'" "bitmap") ; view X11 bitmaps > '("\\.gp\\'" "gnuplot") > - '("\\.p[bgpn]m\\'" "xloadimage") > - '("\\.gif\\'" "xloadimage") ; view gif pictures > - '("\\.tif\\'" "xloadimage") > - '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG > - '("\\.jpe?g\\'" "xloadimage") > + ;; '("\\.p[bgpn]m\\'" "xloadimage") > + ;; '("\\.gif\\'" "xloadimage") ; view gif pictures > + ;; '("\\.tif\\'" "xloadimage") > + ;; '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG > + ;; '("\\.jpe?g\\'" "xloadimage") > '("\\.fig\\'" "xfig") ; edit fig pictures > '("\\.out\\'" "xgraph") ; for plotting purposes. > '("\\.tex\\'" "latex" "tex") > '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi") > - '("\\.pdf\\'" "xpdf") > - '("\\.doc\\'" "antiword" "strings") > + ;; '("\\.pdf\\'" "xpdf") > + ;; '("\\.doc\\'" "antiword" "strings") > '("\\.rpm\\'" "rpm -qilp" "rpm -ivh") > '("\\.dia\\'" "dia") > '("\\.mgp\\'" "mgp") Thanks. However, to justify such significant changes in this database, we need much more details: we need to know, for each guess you want to disable or delete, when and on what platform(s) is or was it true, when and why and on what platform(s) it stopped being true, and what replacement(s) are available on modern platforms for those commands that are no longer useful guesses. And if the guesses you are removing are supposed to be guessed better by XDG, then we should do that in a way that still supports systems without XDG. We cannot make such changes based only on your personal experience on the system which you use, because we don't want to break other users' setups. So we must have these details to make this kind of decisions.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 08 Dec 2023 07:49:02 +0000 Resent-Message-ID: <handler.18132.B18132.17020217048434 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, drew.adams@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17020217048434 (code B ref 18132); Fri, 08 Dec 2023 07:49:02 +0000 Received: (at 18132) by debbugs.gnu.org; 8 Dec 2023 07:48:24 +0000 Received: from localhost ([127.0.0.1]:43715 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rBVay-0002Bx-CY for submit <at> debbugs.gnu.org; Fri, 08 Dec 2023 02:48:24 -0500 Received: from relay7-d.mail.gandi.net ([217.70.183.200]:50793) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1rBVav-0002BM-BE for 18132 <at> debbugs.gnu.org; Fri, 08 Dec 2023 02:48:23 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id AECD920003; Fri, 8 Dec 2023 07:48:00 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <83y1e529a2.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 07 Dec 2023 19:48:53 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> Date: Fri, 08 Dec 2023 09:37:20 +0200 Message-ID: <86sf4db0wf.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> - '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing >> - '("\\.au\\'" "play") ; play Sun audiofiles >> - '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") >> - '("\\.ogg\\'" "ogg123") >> - '("\\.mp3\\'" "mpg123") >> - '("\\.wav\\'" "play") >> - '("\\.xbm\\'" "bitmap") ; view X11 bitmaps >> - '("\\.p[bgpn]m\\'" "xloadimage") >> - '("\\.gif\\'" "xloadimage") ; view gif pictures >> - '("\\.tif\\'" "xloadimage") >> - '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG >> - '("\\.jpe?g\\'" "xloadimage") >> - '("\\.pdf\\'" "xpdf") > > Thanks. However, to justify such significant changes in this > database, we need much more details: we need to know, for each guess > you want to disable or delete, when and on what platform(s) is or was > it true, when and why and on what platform(s) it stopped being true, > and what replacement(s) are available on modern platforms for those > commands that are no longer useful guesses. Do you really think it's possible to get a list of all popular commands available on all platforms? > And if the guesses you are removing are supposed to be guessed better > by XDG, then we should do that in a way that still supports systems > without XDG. This is just a random list of arbitrary commands. And the problem is that dired doesn't check with 'executable-find' if any of them is really installed. But OK, if you want 100% backward-compatibility, I will refactor out this list of obsolete commands into a separate variable used by default. Then a new value of existing option will allow omitting it. > We cannot make such changes based only on your personal experience on > the system which you use, because we don't want to break other users' > setups. So we must have these details to make this kind of decisions. I don't know where you get such an idea that it's based on my personal experience. For my use I customized dired-guess-shell-alist-user long ago. Instead of this I'm addressing multiple complains. Here is just a few after a very quick search, I remember there were much more: https://lists.gnu.org/archive/html/bug-gnu-emacs/2008-06/msg00202.html https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg01952.html
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 08 Dec 2023 08:09:02 +0000 Resent-Message-ID: <handler.18132.B18132.170202291111561 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, drew.adams@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.170202291111561 (code B ref 18132); Fri, 08 Dec 2023 08:09:02 +0000 Received: (at 18132) by debbugs.gnu.org; 8 Dec 2023 08:08:31 +0000 Received: from localhost ([127.0.0.1]:43729 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rBVuR-00030P-4p for submit <at> debbugs.gnu.org; Fri, 08 Dec 2023 03:08:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38880) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1rBVuM-0002zr-8j for 18132 <at> debbugs.gnu.org; Fri, 08 Dec 2023 03:08:29 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1rBVu3-00046p-CB; Fri, 08 Dec 2023 03:08:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=cUPcSt+gzFhII8LLVZs8aBb4Qmkq9mLEKnqFmFUTe00=; b=Yy95b4jLcW9d 2czeRne9nPtIix+uCoEUyvU9ABRt21032YwaCXGeyMULFAudZDe+uQZP0w1Ax5qZnrw/nY5EjREF+ zGYSduJvZX29WvMCL7iVLFDQcM0VmQx7Q66fz8YxyI82SkvVtAMIQTRDYQzS2eja8E6qTP4b3D8e7 nb1O6D7+ds6wU3TcPc8R9hINdk7tNNi0lLYRyT8GaA+6SE0XfP+I5/HXYqkx874FnAqMLTjwl5obh MvsxLZRsmIxvbmVWOEdWHJjXDB/POo0793HsBU+BXRQA0a6I7K+L/ORei0/67VM5hspr53rPEbwei kxwTUTxc+uZ6riVc3DEaeg==; Date: Fri, 08 Dec 2023 10:08:22 +0200 Message-Id: <835y1915hl.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86sf4db0wf.fsf@HIDDEN> (message from Juri Linkov on Fri, 08 Dec 2023 09:37:20 +0200) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83ilxn3qpo.fsf@HIDDEN> <878ryizwyi.fsf@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: drew.adams@HIDDEN, 18132 <at> debbugs.gnu.org > Date: Fri, 08 Dec 2023 09:37:20 +0200 > > > Thanks. However, to justify such significant changes in this > > database, we need much more details: we need to know, for each guess > > you want to disable or delete, when and on what platform(s) is or was > > it true, when and why and on what platform(s) it stopped being true, > > and what replacement(s) are available on modern platforms for those > > commands that are no longer useful guesses. > > Do you really think it's possible to get a list of all popular commands > available on all platforms? Maybe not all commands on all platforms, but at least we should investigate those you are suggesting to remove. Here's the list of them: dvips xdvi play xine ogg123 mpg123 bitmap xloadimage display xpdf antiword strings At least some of those I recognize: xdvi and dvips are from TeX Live; xloadimage is probably from X, antiword is still available (I think), and strings is part of GNU Binutils, so should be on any system that can build programs. So I'd like to understand better why we are removing those. > > And if the guesses you are removing are supposed to be guessed better > > by XDG, then we should do that in a way that still supports systems > > without XDG. > > This is just a random list of arbitrary commands. > And the problem is that dired doesn't check with 'executable-find' > if any of them is really installed. Well, then maybe Dired should indeed use executable-find? Or maybe it's okay not to check, since (AFAIU) these are just candidates to be suggested to the user? > But OK, if you want 100% backward-compatibility, > I will refactor out this list of obsolete commands > into a separate variable used by default. > Then a new value of existing option will allow omitting it. See above: perhaps we should first discuss the principles that guide you when you decide that some of these commands are "obsolete". > Instead of this I'm addressing multiple complains. > Here is just a few after a very quick search, > I remember there were much more: > > https://lists.gnu.org/archive/html/bug-gnu-emacs/2008-06/msg00202.html This one seems to ask about adding a command not in the list. And it doesn't complain about xloadimage and display, it says the OP "didn't like" them. > https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg01952.html This says two things: . some commands in the list are less capable then others . XDG can do the job better To the first point, my response would be: put the better ones first in the list, but leave the worse ones in the list for those users who don't have the better alternatives. To the second point, I repeat what I already wrote in my previous message: we should also support systems without XDG.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 09 Dec 2023 17:24:02 +0000 Resent-Message-ID: <handler.18132.B18132.17021425992015 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org, drew.adams@HIDDEN Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17021425992015 (code B ref 18132); Sat, 09 Dec 2023 17:24:02 +0000 Received: (at 18132) by debbugs.gnu.org; 9 Dec 2023 17:23:19 +0000 Received: from localhost ([127.0.0.1]:48845 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rC12p-0000W4-ER for submit <at> debbugs.gnu.org; Sat, 09 Dec 2023 12:23:18 -0500 Received: from relay9-d.mail.gandi.net ([2001:4b98:dc4:8::229]:55485) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1rC12k-0000Vl-55 for 18132 <at> debbugs.gnu.org; Sat, 09 Dec 2023 12:23:14 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 53C7CFF809; Sat, 9 Dec 2023 17:22:47 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <835y1915hl.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 08 Dec 2023 10:08:22 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <86y1eoxtrr.fsf@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> Date: Sat, 09 Dec 2023 19:13:13 +0200 Message-ID: <86r0jvbd26.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg01952.html > > This says two things: > > . some commands in the list are less capable then others > . XDG can do the job better > > To the first point, my response would be: put the better ones first in > the list, but leave the worse ones in the list for those users who > don't have the better alternatives. I completely agree. This is what I tried to do, but couldn't find a way to refactor this amalgamation in dired-guess-shell-alist-default. We need to split it to two parts, so users without XDG will have: 1. better ones from dired-guess-shell-alist-default 2. worse ones from dired-guess-shell-alist-default And users with XDG should be able to have: 1. better ones from dired-guess-shell-alist-default 2. XDG commands 3. worse ones from dired-guess-shell-alist-default Probably I'll move the worse ones to a new variable 'dired-guess-shell-alist-default-2'.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 22 May 2024 06:18:02 +0000 Resent-Message-ID: <handler.18132.B18132.171635865025407 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171635865025407 (code B ref 18132); Wed, 22 May 2024 06:18:02 +0000 Received: (at 18132) by debbugs.gnu.org; 22 May 2024 06:17:30 +0000 Received: from localhost ([127.0.0.1]:53683 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1s9fI1-0006bi-9z for submit <at> debbugs.gnu.org; Wed, 22 May 2024 02:17:29 -0400 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:44701) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1s9fHx-0006bT-PN for 18132 <at> debbugs.gnu.org; Wed, 22 May 2024 02:17:28 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 20B2824000A; Wed, 22 May 2024 06:17:13 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <86r0jvbd26.fsf@HIDDEN> (Juri Linkov's message of "Sat, 09 Dec 2023 19:13:13 +0200") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> Date: Wed, 22 May 2024 09:16:18 +0300 Message-ID: <86v836z8h6.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >>> https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg01952.html >> >> This says two things: >> >> . some commands in the list are less capable then others >> . XDG can do the job better >> >> To the first point, my response would be: put the better ones first in >> the list, but leave the worse ones in the list for those users who >> don't have the better alternatives. > > I completely agree. This is what I tried to do, > but couldn't find a way to refactor this amalgamation > in dired-guess-shell-alist-default. We need to split it > to two parts, so users without XDG will have: > > 1. better ones from dired-guess-shell-alist-default > 2. worse ones from dired-guess-shell-alist-default > > And users with XDG should be able to have: > > 1. better ones from dired-guess-shell-alist-default > 2. XDG commands > 3. worse ones from dired-guess-shell-alist-default > > Probably I'll move the worse ones to a new variable > 'dired-guess-shell-alist-default-2'. Ok, here is a new list 'dired-guess-shell-alist-optional' that contains rare commands that don't exist on many systems. So now the default order of a list of commands to select with M-n for M-!, ! in Dired and the Dired context menu with this patch is the following: 1. commands from dired-guess-shell-alist-user 2. commands from dired-guess-shell-alist-default 3. commands found by XDG on user's system 4. commands found by mailcap on user's system 5. rare commands from dired-guess-shell-alist-optional --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=dired-guess-shell-alist-optional.patch diff --git a/lisp/dired.el b/lisp/dired.el index 28ec187e666..b7c42318946 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -443,8 +443,9 @@ dired-guess-shell-case-fold-search (defcustom dired-guess-shell-alist-user nil "User-defined alist of rules for suggested commands. -These rules take precedence over the predefined rules in the variable -`dired-guess-shell-alist-default' (to which they are prepended). +These rules take precedence over the predefined rules in the variables +`dired-guess-shell-alist-default' and `dired-guess-shell-alist-optional' +\(to which they are prepended). Each element of this list looks like diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 22c6881ae35..58d5a74f269 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -868,8 +868,8 @@ dired-do-shell-command the list of file names explicitly with the FILE-LIST argument, which can be produced by `dired-get-marked-files', for example. -`dired-guess-shell-alist-default' and -`dired-guess-shell-alist-user' are consulted when the user is +`dired-guess-shell-alist-default', `dired-guess-shell-alist-optional' +and `dired-guess-shell-alist-user' are consulted when the user is prompted for the shell command to use interactively. Also see the `dired-confirm-shell-command' variable." @@ -1068,8 +1068,8 @@ dired-shell-command ;; * `dired-guess-shell-command' calls `dired-guess-default' with list of ;; marked files. ;; -;; * Parse `dired-guess-shell-alist-user' and -;; `dired-guess-shell-alist-default' (in that order) for the first REGEXP +;; * Parse `dired-guess-shell-alist-user', `dired-guess-shell-alist-default', +;; `dired-guess-shell-alist-optional' (in that order) for the first REGEXP ;; that matches the first file in the file list. ;; ;; * If the REGEXP matches all the entries of the file list then evaluate @@ -1219,28 +1219,10 @@ dired-guess-shell-alist-default " " dired-guess-shell-znew-switches)) '("\\.pod\\'" "perldoc" "pod2man * | nroff -man") - '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing - '("\\.au\\'" "play") ; play Sun audiofiles - '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") - '("\\.ogg\\'" "ogg123") - '("\\.mp3\\'" "mpg123") - '("\\.wav\\'" "play") '("\\.uu\\'" "uudecode") ; for uudecoded files - '("\\.hqx\\'" "mcvert") '("\\.sh\\'" "sh") ; execute shell scripts - '("\\.xbm\\'" "bitmap") ; view X11 bitmaps - '("\\.gp\\'" "gnuplot") - '("\\.p[bgpn]m\\'" "xloadimage") - '("\\.gif\\'" "xloadimage") ; view gif pictures - '("\\.tif\\'" "xloadimage") - '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG - '("\\.jpe?g\\'" "xloadimage") - '("\\.fig\\'" "xfig") ; edit fig pictures - '("\\.out\\'" "xgraph") ; for plotting purposes. '("\\.tex\\'" "latex" "tex") '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi") - '("\\.pdf\\'" "xpdf") - '("\\.doc\\'" "antiword" "strings") '("\\.rpm\\'" "rpm -qilp" "rpm -ivh") '("\\.dia\\'" "dia") '("\\.mgp\\'" "mgp") @@ -1269,7 +1251,39 @@ dired-guess-shell-alist-default '("\\.sign?\\'" "gpg --verify")) "Default alist used for shell command guessing. -See `dired-guess-shell-alist-user'.") +See also `dired-guess-shell-alist-optional' and +`dired-guess-shell-alist-user'.") + +(defvar dired-guess-shell-alist-optional + (list + '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing + '("\\.au\\'" "play") ; play Sun audiofiles + '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p") + '("\\.ogg\\'" "ogg123") + '("\\.mp3\\'" "mpg123") + '("\\.wav\\'" "play") + '("\\.hqx\\'" "mcvert") + '("\\.xbm\\'" "bitmap") ; view X11 bitmaps + '("\\.gp\\'" "gnuplot") + '("\\.p[bgpn]m\\'" "xloadimage") + '("\\.gif\\'" "xloadimage") ; view gif pictures + '("\\.tif\\'" "xloadimage") + '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG + '("\\.jpe?g\\'" "xloadimage") + '("\\.fig\\'" "xfig") ; edit fig pictures + '("\\.out\\'" "xgraph") ; for plotting purposes. + '("\\.pdf\\'" "xpdf") + '("\\.doc\\'" "antiword" "strings")) + "Optional alist used for shell command guessing. +Unlike `dired-guess-shell-alist-default' that contains mostly the +standard commands that handle the files with corresponding extensions +such as the `tar' command handling the files with the `.tar' extension, +this list contains the commands that don't exist on many systems +where other alternatives are available. So this needs to be in +a separate list not to conflict with existing commands provided +by mailcap and XDG. + +See also `dired-guess-shell-alist-user'.") (defun dired-guess-default (files) "Return a shell command, or a list of commands, appropriate for FILES. @@ -1289,7 +1303,8 @@ dired-guess-default (string-match-p (car elem) file)) files)) (append dired-guess-shell-alist-user - dired-guess-shell-alist-default))) + dired-guess-shell-alist-default + dired-guess-shell-alist-optional))) nil))))) (if (length= programs 1) (car programs) @@ -1323,13 +1338,21 @@ dired-guess-shell-command (if (equal val "") default val)))) (defcustom shell-command-guess-functions - '(shell-command-guess-dired) + '(shell-command-guess-dired-optional + shell-command-guess-mailcap + shell-command-guess-xdg + shell-command-guess-dired-default + shell-command-guess-dired-user) "List of functions that guess shell commands for files. Each function receives a list of commands and a list of file names and should return the same list of commands with changes -such as added new commands." +such as new commands added to the beginning of the list. +In this case the commands from the last entry +will be at the top of the resulted list." :type '(repeat - (choice (function-item shell-command-guess-dired) + (choice (function-item shell-command-guess-dired-user) + (function-item shell-command-guess-dired-default) + (function-item shell-command-guess-dired-optional) (function-item shell-command-guess-mailcap) (function-item shell-command-guess-xdg) (function-item shell-command-guess-open) @@ -1350,9 +1373,29 @@ shell-command-guess nil)) commands)) -(defun shell-command-guess-dired (commands files) - "Populate COMMANDS using `dired-guess-default'." - (append (ensure-list (dired-guess-default files)) commands)) +(defun shell-command-guess-dired-user (commands files) + "Populate COMMANDS using `dired-guess-shell-alist-user'. +This excludes `dired-guess-shell-alist-default' and +`dired-guess-shell-alist-optional'." + (let ((dired-guess-shell-alist-default nil) + (dired-guess-shell-alist-optional nil)) + (append (ensure-list (dired-guess-default files)) commands))) + +(defun shell-command-guess-dired-default (commands files) + "Populate COMMANDS using `dired-guess-shell-alist-default'. +This excludes `dired-guess-shell-alist-user' and +`dired-guess-shell-alist-optional'." + (let ((dired-guess-shell-alist-user nil) + (dired-guess-shell-alist-optional nil)) + (append (ensure-list (dired-guess-default files)) commands))) + +(defun shell-command-guess-dired-optional (commands files) + "Populate COMMANDS using `dired-guess-shell-alist-optional'. +This excludes `dired-guess-shell-alist-user' and +`dired-guess-shell-alist-default'." + (let ((dired-guess-shell-alist-user nil) + (dired-guess-shell-alist-default nil)) + (append (ensure-list (dired-guess-default files)) commands))) (declare-function mailcap-file-default-commands "mailcap" (files)) --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 22 May 2024 12:44:01 +0000 Resent-Message-ID: <handler.18132.B18132.17163817898864 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17163817898864 (code B ref 18132); Wed, 22 May 2024 12:44:01 +0000 Received: (at 18132) by debbugs.gnu.org; 22 May 2024 12:43:09 +0000 Received: from localhost ([127.0.0.1]:55737 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1s9lJF-0002Iu-5f for submit <at> debbugs.gnu.org; Wed, 22 May 2024 08:43:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1s9lJC-0002IY-R3 for 18132 <at> debbugs.gnu.org; Wed, 22 May 2024 08:43:07 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1s9lIz-0008Cd-TY; Wed, 22 May 2024 08:42:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:Subject:In-Reply-To:To:From: Date; bh=Y1nATD+nWx0P7J78mhNYwB6zPrsi5TDBf9GukxYu768=; b=rTFiZCJhW8C87Ec8qy8X S3GsXKzzyud1Er8Bcj+ssnVUgwwHXFfVbSx75q3JuDw8+oGJUsD/tjYmlX7JmRxhwdxz3cFb84zl0 HLv3S11qmCOB/i1L+eRLJ9eBGRLQLYV6tx3l6cUQLDN8FiHGjNVaODc+T06GaGPniAMadpWhcCxIw GHSWLYWv2nusvsTuMTo1oVSMIr3PM0djq0FawVq9/PIojwJDLGfWqr5Me2RlOyCQ9VcuQ5Yxk6Zbv VRY2qOaVV1ghSXePgWFKt2AzEhm9UzUkeSLKKz8PVgWrsxbXi/p5ZUoDsrXv8pjR0jUHMy0ZGlNlH DKF1WKztYlfmcQ==; Date: Wed, 22 May 2024 15:42:48 +0300 Message-Id: <86jzjm6mrb.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86v836z8h6.fsf@HIDDEN> (message from Juri Linkov on Wed, 22 May 2024 09:16:18 +0300) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83leaofebt.fsf@HIDDEN> <86edgfk37h.fsf@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --=-=-= Content-Type: text/plain > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Wed, 22 May 2024 09:16:18 +0300 > > > I completely agree. This is what I tried to do, > > but couldn't find a way to refactor this amalgamation > > in dired-guess-shell-alist-default. We need to split it > > to two parts, so users without XDG will have: > > > > 1. better ones from dired-guess-shell-alist-default > > 2. worse ones from dired-guess-shell-alist-default > > > > And users with XDG should be able to have: > > > > 1. better ones from dired-guess-shell-alist-default > > 2. XDG commands > > 3. worse ones from dired-guess-shell-alist-default > > > > Probably I'll move the worse ones to a new variable > > 'dired-guess-shell-alist-default-2'. > > Ok, here is a new list 'dired-guess-shell-alist-optional' > that contains rare commands that don't exist on many systems. > > So now the default order of a list of commands to select with M-n > for M-!, ! in Dired and the Dired context menu with this patch > is the following: > > 1. commands from dired-guess-shell-alist-user > 2. commands from dired-guess-shell-alist-default > 3. commands found by XDG on user's system > 4. commands found by mailcap on user's system > 5. rare commands from dired-guess-shell-alist-optional What about optionally letting the system facilities present the menu of appropriate commands and let the user select from that menu? E.g., on MS-Windows I can do (w32-shell-execute "openas" "d:/foo/bar/baz.pdf") and get this menu to select from: --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=OpenAs.png Content-Transfer-Encoding: base64 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 YII= --=-=-= Content-Type: text/plain I'd expect XDG to be able to do something very similar, can it? If so, can we offer that as optional behavior? Thanks. --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 May 2024 06:32:02 +0000 Resent-Message-ID: <handler.18132.B18132.171644586328021 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171644586328021 (code B ref 18132); Thu, 23 May 2024 06:32:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 May 2024 06:31:03 +0000 Received: from localhost ([127.0.0.1]:58516 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sA1yg-0007Hi-Q1 for submit <at> debbugs.gnu.org; Thu, 23 May 2024 02:31:03 -0400 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:51977) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1sA1yb-0007Gs-PE for 18132 <at> debbugs.gnu.org; Thu, 23 May 2024 02:30:58 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id ACC5D24000A; Thu, 23 May 2024 06:30:24 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <86jzjm6mrb.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 22 May 2024 15:42:48 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> Date: Thu, 23 May 2024 09:19:40 +0300 Message-ID: <86h6epm9qj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > What about optionally letting the system facilities present the menu > of appropriate commands and let the user select from that menu? This is already implemented by the context menu in Dired. I've checked that the contents of this context menu is exactly the same as on the default OS file manager since both use XDG.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 May 2024 07:18:02 +0000 Resent-Message-ID: <handler.18132.B18132.171644863329889 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171644863329889 (code B ref 18132); Thu, 23 May 2024 07:18:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 May 2024 07:17:13 +0000 Received: from localhost ([127.0.0.1]:58675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sA2hM-0007m1-M9 for submit <at> debbugs.gnu.org; Thu, 23 May 2024 03:17:12 -0400 Received: from eggs.gnu.org ([209.51.188.92]:54162) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1sA2hI-0007lu-Ee for 18132 <at> debbugs.gnu.org; Thu, 23 May 2024 03:17:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1sA2h6-0006bW-5D; Thu, 23 May 2024 03:16:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=94FuRPtSf2QhGOmf26Ta9t83Pt+GbjJSuszq4vLWtf0=; b=kto+HuNtJbZR q3IN2y4e+R4AJc9ktMX7JRQmcAt0xclllPOaToWWhXNZwnviScKwIrVBVY5lacI2NWewRLaTJETwh GqiuJ0XVl4cQlv/J0C4SMBH/ilASxTWchfV5eJbGRlxkLrWFWqYHECoTH0M3TLUybwvh2j4vcZ8nK mbRCNDBe/7BWMBSf1zMe2jl6hQDYPMSZjQYRyJVqkCkJRoVQeaw6MDYb7H46oFcHbAPIiejRWOTHG Av8LOIRpwW55RuD9zq2rNEjsFTMVD1PDjvTci7Epa2L38089dmH10B7yK29KDvakrnlswlrCEUevx z8X1xIamXVhqzVDyfeGVGg==; Date: Thu, 23 May 2024 10:16:54 +0300 Message-Id: <867cfl576h.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86h6epm9qj.fsf@HIDDEN> (message from Juri Linkov on Thu, 23 May 2024 09:19:40 +0300) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <83zfz3dyae.fsf@HIDDEN> <86h6l9zorh.fsf@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Thu, 23 May 2024 09:19:40 +0300 > > > What about optionally letting the system facilities present the menu > > of appropriate commands and let the user select from that menu? > > This is already implemented by the context menu in Dired. > I've checked that the contents of this context menu is exactly > the same as on the default OS file manager since both use XDG. Can you tell me how to try that starting from "emacs -Q"? Thanks.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 May 2024 17:36:01 +0000 Resent-Message-ID: <handler.18132.B18132.171648570620252 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171648570620252 (code B ref 18132); Thu, 23 May 2024 17:36:01 +0000 Received: (at 18132) by debbugs.gnu.org; 23 May 2024 17:35:06 +0000 Received: from localhost ([127.0.0.1]:60116 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sACLK-0005Ga-3e for submit <at> debbugs.gnu.org; Thu, 23 May 2024 13:35:06 -0400 Received: from relay7-d.mail.gandi.net ([217.70.183.200]:33477) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1sACLF-0005Fn-PP for 18132 <at> debbugs.gnu.org; Thu, 23 May 2024 13:35:02 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 1ADED20002; Thu, 23 May 2024 17:34:28 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <867cfl576h.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 May 2024 10:16:54 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> Date: Thu, 23 May 2024 20:31:00 +0300 Message-ID: <86msogjuzv.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> > What about optionally letting the system facilities present the menu >> > of appropriate commands and let the user select from that menu? >> >> This is already implemented by the context menu in Dired. >> I've checked that the contents of this context menu is exactly >> the same as on the default OS file manager since both use XDG. > > Can you tell me how to try that starting from "emacs -Q"? You can move to e.g. a PDF file in a Dired buffer and click the right button.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Thu, 23 May 2024 18:18:02 +0000 Resent-Message-ID: <handler.18132.B18132.171648828121842 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171648828121842 (code B ref 18132); Thu, 23 May 2024 18:18:02 +0000 Received: (at 18132) by debbugs.gnu.org; 23 May 2024 18:18:01 +0000 Received: from localhost ([127.0.0.1]:60293 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sAD0q-0005gE-Vi for submit <at> debbugs.gnu.org; Thu, 23 May 2024 14:18:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35132) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1sAD0o-0005g6-S5 for 18132 <at> debbugs.gnu.org; Thu, 23 May 2024 14:17:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1sACyW-0000Vp-0O; Thu, 23 May 2024 14:15:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=AZYrcX4fs9IB2H7zJjgaVSYLbp6klrCsONy8dWDFF+s=; b=ZZCw94NO5/pT K9WbX1Sfh3lNfYNrJ7Bg9smNtPOLc1ra+T22aj8AF7m6BDo547rLONdAszFV3piAT3Gj7V9rgNhcA vYBmVl909D7hA/7er2rZP53ImnUy/SDZDNZYBDrHK7k1PovOuYmYNEfmYHx+xJb949WpzpCu0Jzmw BjcI9oLqunfkT49WkTE1m780SopvijzxUVnDaqaGnyb866L2VnIWXU6a6SDKWZXFT/tg3fdzvR9Sm oPONXLk87BN2Y/eK0WGv/zJjPmh4/HawtrVJmaky2KOm8RkgBBIpPDDPVLadLQlVZNorjkl7Stl2B okOCx2tN0ZTgVN4Co6Zv7g==; Date: Thu, 23 May 2024 21:15:13 +0300 Message-Id: <8634q84cpa.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86msogjuzv.fsf@HIDDEN> (message from Juri Linkov on Thu, 23 May 2024 20:31:00 +0300) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <838r6kby1m.fsf@HIDDEN> <86msuz5cft.fsf@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> <86msogjuzv.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Thu, 23 May 2024 20:31:00 +0300 > > >> > What about optionally letting the system facilities present the menu > >> > of appropriate commands and let the user select from that menu? > >> > >> This is already implemented by the context menu in Dired. > >> I've checked that the contents of this context menu is exactly > >> the same as on the default OS file manager since both use XDG. > > > > Can you tell me how to try that starting from "emacs -Q"? > > You can move to e.g. a PDF file in a Dired buffer and click the right button. Thanks, I added a w32-shell-execute item to that menu.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 24 May 2024 06:46:01 +0000 Resent-Message-ID: <handler.18132.B18132.171653315317392 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171653315317392 (code B ref 18132); Fri, 24 May 2024 06:46:01 +0000 Received: (at 18132) by debbugs.gnu.org; 24 May 2024 06:45:53 +0000 Received: from localhost ([127.0.0.1]:35288 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sAOga-0004WS-Ir for submit <at> debbugs.gnu.org; Fri, 24 May 2024 02:45:52 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:49309) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1sAOgY-0004WM-Qh for 18132 <at> debbugs.gnu.org; Fri, 24 May 2024 02:45:51 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id AF4D91BF207; Fri, 24 May 2024 06:45:37 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <8634q84cpa.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 May 2024 21:15:13 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> <86msogjuzv.fsf@HIDDEN> <8634q84cpa.fsf@HIDDEN> Date: Fri, 24 May 2024 09:44:52 +0300 Message-ID: <86fru7vivr.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) >> >> > What about optionally letting the system facilities present the menu >> >> > of appropriate commands and let the user select from that menu? >> >> >> >> This is already implemented by the context menu in Dired. >> >> I've checked that the contents of this context menu is exactly >> >> the same as on the default OS file manager since both use XDG. >> > >> > Can you tell me how to try that starting from "emacs -Q"? >> >> You can move to e.g. a PDF file in a Dired buffer and click the right button. > > Thanks, I added a w32-shell-execute item to that menu. But w32-shell-execute is supposed to be in 'dired-do-open' that corresponds to "Open" in the context menu. BTW, it would be nice to have a keybinding for 'dired-do-open'. For example, the big "E" (mnemonics "External") is free in 'dired-mode-map'.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 24 May 2024 07:33:02 +0000 Resent-Message-ID: <handler.18132.B18132.171653593819093 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.171653593819093 (code B ref 18132); Fri, 24 May 2024 07:33:02 +0000 Received: (at 18132) by debbugs.gnu.org; 24 May 2024 07:32:18 +0000 Received: from localhost ([127.0.0.1]:35509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sAPPV-0004xt-J5 for submit <at> debbugs.gnu.org; Fri, 24 May 2024 03:32:18 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55046) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1sAPPQ-0004xn-SY for 18132 <at> debbugs.gnu.org; Fri, 24 May 2024 03:32:16 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1sAPPE-0000ys-2z; Fri, 24 May 2024 03:32:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=SILU1FoMf4cwwJLS1Jlyo3MSzWcskK1v7BlH2idCdqQ=; b=dzCZiqCnr6az UqqnKw6IlEb7beR09KVnm0ylxvclIaXfdtreSqDGUB2bdN5YajQZn6MJ/hzkbBzLDEmnRxfiiEGv/ hDrSMhxsmLfMlvjO3wRFn01tqWtPWCqxhaqvScf8FyR+17qDJQSDfWlCMdvjPkdBnxo7cOMT5WsD6 s8/0wHynv30qe+X8NgeZ/AKoZMREQw48+5Zw4DDWCGQI3OKxjKJxRry1iBY1eWqaEqW2aSbgEJOPK k+SgAekblxOk5J8aSTlI5qECg+8gzuRCLV7/5Q48HSwtqofoh2DXy4yuFKanWxVMFpDIAcQRjucLJ 4NzRLPOIQbc+2smCM+otRw==; Date: Fri, 24 May 2024 10:31:48 +0300 Message-Id: <86ttin3btn.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86fru7vivr.fsf@HIDDEN> (message from Juri Linkov on Fri, 24 May 2024 09:44:52 +0300) References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <86ttp6j8ax.fsf@HIDDEN> <8334wp93ww.fsf@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> <86msogjuzv.fsf@HIDDEN> <8634q84cpa.fsf@HIDDEN> <86fru7vivr.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: 18132 <at> debbugs.gnu.org > Date: Fri, 24 May 2024 09:44:52 +0300 > > >> >> > What about optionally letting the system facilities present the menu > >> >> > of appropriate commands and let the user select from that menu? > >> >> > >> >> This is already implemented by the context menu in Dired. > >> >> I've checked that the contents of this context menu is exactly > >> >> the same as on the default OS file manager since both use XDG. > >> > > >> > Can you tell me how to try that starting from "emacs -Q"? > >> > >> You can move to e.g. a PDF file in a Dired buffer and click the right button. > > > > Thanks, I added a w32-shell-execute item to that menu. > > But w32-shell-execute is supposed to be in 'dired-do-open' > that corresponds to "Open" in the context menu. "Open" corresponds to w32-shell-execute call with 1st argument "open", not "openas" (which is what I added). And AFAICT, dired-do-open does exactly that, so we are okay, I think. > BTW, it would be nice to have a keybinding for 'dired-do-open'. > For example, the big "E" (mnemonics "External") is free > in 'dired-mode-map'. Fine by me.
X-Loop: help-debbugs@HIDDEN Subject: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 24 May 2024 18:00:02 +0000 Resent-Message-ID: <handler.18132.B18132.17165735458490 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 18132 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii <eliz@HIDDEN> Cc: 18132 <at> debbugs.gnu.org Received: via spool by 18132-submit <at> debbugs.gnu.org id=B18132.17165735458490 (code B ref 18132); Fri, 24 May 2024 18:00:02 +0000 Received: (at 18132) by debbugs.gnu.org; 24 May 2024 17:59:05 +0000 Received: from localhost ([127.0.0.1]:38362 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sAZC4-0002Cr-UX for submit <at> debbugs.gnu.org; Fri, 24 May 2024 13:59:05 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:60895) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1sAZBz-0002C8-Ec; Fri, 24 May 2024 13:58:59 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id CE1FF1BF203; Fri, 24 May 2024 17:58:45 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <86ttin3btn.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 24 May 2024 10:31:48 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> <86msogjuzv.fsf@HIDDEN> <8634q84cpa.fsf@HIDDEN> <86fru7vivr.fsf@HIDDEN> <86ttin3btn.fsf@HIDDEN> Date: Fri, 24 May 2024 20:56:05 +0300 Message-ID: <86sey7qekq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) close 18132 30.0.50 thanks >> >> >> > What about optionally letting the system facilities present the menu >> >> >> > of appropriate commands and let the user select from that menu? >> >> >> >> >> >> This is already implemented by the context menu in Dired. >> >> >> I've checked that the contents of this context menu is exactly >> >> >> the same as on the default OS file manager since both use XDG. >> >> > >> >> > Can you tell me how to try that starting from "emacs -Q"? >> >> >> >> You can move to e.g. a PDF file in a Dired buffer and click the right button. >> > >> > Thanks, I added a w32-shell-execute item to that menu. >> >> But w32-shell-execute is supposed to be in 'dired-do-open' >> that corresponds to "Open" in the context menu. > > "Open" corresponds to w32-shell-execute call with 1st argument "open", > not "openas" (which is what I added). And AFAICT, dired-do-open does > exactly that, so we are okay, I think. > >> BTW, it would be nice to have a keybinding for 'dired-do-open'. >> For example, the big "E" (mnemonics "External") is free >> in 'dired-mode-map'. > > Fine by me. So now pushed 'dired-guess-shell-alist-optional', the 'E' keybinding and the item in the Dired menu, and closed.
Received: (at control) by debbugs.gnu.org; 24 May 2024 17:59:05 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 24 13:59:05 2024 Received: from localhost ([127.0.0.1]:38364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1sAZC5-0002Cu-8x for submit <at> debbugs.gnu.org; Fri, 24 May 2024 13:59:05 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:60895) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1sAZBz-0002C8-Ec; Fri, 24 May 2024 13:58:59 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id CE1FF1BF203; Fri, 24 May 2024 17:58:45 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#18132: Time for a smarter dired-guess-shell-alist-default? (dired-x.el) In-Reply-To: <86ttin3btn.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 24 May 2024 10:31:48 +0300") Organization: LINKOV.NET References: <CAOnWdohO7eOa9Pj5mAPv9f2+699F1XSYFhT_E_u3iMzuuujDew@HIDDEN> <86v89lt6mk.fsf@HIDDEN> <83leag7loj.fsf@HIDDEN> <86o7f8ijnd.fsf@HIDDEN> <SJ0PR10MB5488CC45A78D0F5C8DEB9E86F380A@HIDDEN> <86y1eb8bi8.fsf@HIDDEN> <SJ0PR10MB5488EE4C9DF2A29900CCC1FAF387A@HIDDEN> <861qbz9r54.fsf@HIDDEN> <86fs0ef372.fsf@HIDDEN> <83y1e529a2.fsf@HIDDEN> <86sf4db0wf.fsf@HIDDEN> <835y1915hl.fsf@HIDDEN> <86r0jvbd26.fsf@HIDDEN> <86v836z8h6.fsf@HIDDEN> <86jzjm6mrb.fsf@HIDDEN> <86h6epm9qj.fsf@HIDDEN> <867cfl576h.fsf@HIDDEN> <86msogjuzv.fsf@HIDDEN> <8634q84cpa.fsf@HIDDEN> <86fru7vivr.fsf@HIDDEN> <86ttin3btn.fsf@HIDDEN> Date: Fri, 24 May 2024 20:56:05 +0300 Message-ID: <86sey7qekq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: control Cc: 18132 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) close 18132 30.0.50 thanks >> >> >> > What about optionally letting the system facilities present the menu >> >> >> > of appropriate commands and let the user select from that menu? >> >> >> >> >> >> This is already implemented by the context menu in Dired. >> >> >> I've checked that the contents of this context menu is exactly >> >> >> the same as on the default OS file manager since both use XDG. >> >> > >> >> > Can you tell me how to try that starting from "emacs -Q"? >> >> >> >> You can move to e.g. a PDF file in a Dired buffer and click the right button. >> > >> > Thanks, I added a w32-shell-execute item to that menu. >> >> But w32-shell-execute is supposed to be in 'dired-do-open' >> that corresponds to "Open" in the context menu. > > "Open" corresponds to w32-shell-execute call with 1st argument "open", > not "openas" (which is what I added). And AFAICT, dired-do-open does > exactly that, so we are okay, I think. > >> BTW, it would be nice to have a keybinding for 'dired-do-open'. >> For example, the big "E" (mnemonics "External") is free >> in 'dired-mode-map'. > > Fine by me. So now pushed 'dired-guess-shell-alist-optional', the 'E' keybinding and the item in the Dired menu, and closed.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.