From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Aleksandr Vityazev via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#69133: [PATCH] Make key selection method configurable in EPA. Date: Thu, 15 Feb 2024 23:22:29 +0300 Message-ID: <87o7chbhq2.fsf@disroot.org> References: <875xyqbzgj.fsf@disroot.org> <8634tuxnu2.fsf@gnu.org> Reply-To: Aleksandr Vityazev Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33749"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 69133@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Feb 15 21:23:02 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1raiG5-0008V9-8s for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 15 Feb 2024 21:23:01 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1raiFp-000618-4d; Thu, 15 Feb 2024 15:22:45 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1raiFn-00060d-77 for bug-gnu-emacs@gnu.org; Thu, 15 Feb 2024 15:22:43 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1raiFm-0006vz-Uh for bug-gnu-emacs@gnu.org; Thu, 15 Feb 2024 15:22:42 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1raiG5-0006z7-Na for bug-gnu-emacs@gnu.org; Thu, 15 Feb 2024 15:23:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Aleksandr Vityazev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 15 Feb 2024 20:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69133 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 69133-submit@debbugs.gnu.org id=B69133.170802857726838 (code B ref 69133); Thu, 15 Feb 2024 20:23:01 +0000 Original-Received: (at 69133) by debbugs.gnu.org; 15 Feb 2024 20:22:57 +0000 Original-Received: from localhost ([127.0.0.1]:57186 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1raiG0-0006yn-Fx for submit@debbugs.gnu.org; Thu, 15 Feb 2024 15:22:57 -0500 Original-Received: from layka.disroot.org ([178.21.23.139]:34586) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1raiFx-0006yb-CU for 69133@debbugs.gnu.org; Thu, 15 Feb 2024 15:22:54 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 457B040E31; Thu, 15 Feb 2024 21:22:33 +0100 (CET) X-Virus-Scanned: SPAM Filter at disroot.org Original-Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IIWM70DgHErh; Thu, 15 Feb 2024 21:22:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1708028552; bh=2Mcs7xwjHiGFqWnQvEP2gpnRP/j4NL0S5QEWQDjDScI=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=PJNPL1244u4+BmGWLLW8j+gG2+Z2Pa3rsNbm6zYNFk97y/N4l18lnjFIKxJjdAtGo h24TQfikeLR8Zxd14lq+VDjOIl7+LuWyxx226ueBc7qMmXZrxqXT+1ts7Cj323Op+i nSiDqk0aueeEvYJTCDcVSRf8ZCaT5zFDCHGGf2XYn1BKQCXay48vt/FbohIt18MADu 2ip3ia7STUlCcbuGB8zQGKgZRsOgoZfYEyYbWeyo8j6nQznjAFy10R444dv8b1889Q mAS64g3dhecYB1SggkE+zgNbZuUXyqT4mjiPcUYcV3yYfJIjHjPRVXZNeeyPmoKBFw w3TSsjZqS2eLA== In-Reply-To: <8634tuxnu2.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 15 Feb 2024 08:07:17 +0200") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:280081 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thanks, added the fixes, attached the version 2 patch On 2024-02-15 08:07, Eli Zaretskii wrote: >> Date: Wed, 14 Feb 2024 22:47:08 +0300 >> From: Aleksandr Vityazev via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >>=20 >> Currently in epa.el it is possible to select keys only through a >> separate buffer, I think adding the option to select via minibuffer >> would be a nice addition. The current behavior is set to default. Any >> comments? > > Thanks, some comments below, > >> --- a/etc/NEWS >> +++ b/etc/NEWS >> @@ -1352,6 +1352,14 @@ characters, such as =C2=BD (U+00BD VULGAR FRACTIO= N ONE HALF), are also >> recognized as rational fractions. They have been since 2004, but it >> looks like it was never mentioned in the NEWS, or even the manual. >>=20 >> +** EasyPG >> + >> +--- >> +*** New user option 'epa-keys-select-method' > > Heading lines in NEWS should end with a period. > Fixed >> +This allows the user to customize the key selection method, a minibuffer >> +or buffer option is available, which is set by default and was used in >> +all earlier versions. > > This sentence is too complex. Suggest to reword as two sentences: > > This allows the user to customize the key selection method, which > can be either by using a pop-up buffer or from the minibuffer. The > pop-up buffer method is the default, which preserves previous > behavior. > Applied > Also, why did you decide not to document this in the manual? epa.el > has its own manual, so how about adding this option to it? Added > >> +(defcustom epa-keys-select-method 'buffer >> + "Method used to select keys. >> +It can have two values: buffer or minibuffer. >> +Can have two values: buffer or minibuffer. In the first case, the keys >> +can be selected via a pop-up buffer. In the second case, the keys >> +can be selected via a minibuffer and `completing-read-multiple' will be >> +used." > > The doc string could also be simplified. Like this, for example: > > Method used to select keys in `epa-select-keys'. > If the value is \\=3D'buffer, the default, keys are selected via a > pop-up buffer. If the value is \\=3D'minibuffer, keys are selected > via the minibuffer instead, using `completing-read-multiple'. > Applied > This avoids explaining the values twice (first what they are, then > what they do), and also mentions the default value. > > Please also make sure comments, doc strings, and commit log messages > leave two spaces between sentences, per our conventions. You had a > couple of problems with that in the patch, which my suggested > rephrasing fixed, but please keep this in mind in the future. > >> + :type '(choice (const :tag "Read keys from buffer" buffer) > ^^^^^^^^^^^^^^^^^^^^^ > This should probably say "...from a pop-up buffer". Fixed > >> (defun epa-select-keys (context prompt &optional names secret) >> "Display a user's keyring and ask him to select keys. >> @@ -459,7 +484,10 @@ epa-select-keys >> the keys are listed. >> If SECRET is non-nil, list secret keys instead of public keys." >> (let ((keys (epg-list-keys context names secret))) >> - (epa--select-keys prompt keys))) >> + (pcase epa-keys-select-method >> + ('buffer (epa--select-keys prompt keys)) >> + ('minibuffer (epa--select-keys-in-minibuffer prompt keys)) >> + (_ (error "Wrong method for key selection is specified"))))) > > Hmm... are you assuming users know how to input multiple strings from > the minibuffer, in particular what is the value of crm-separator? the > function epa--select-keys inserts some instructions into the pop-up > buffer, but this new function you propose just shows the prompt and > nothing else. Should it somehow help the user with the job of typing > the keys at the prompt? The crm-separator is "[ \t]*,[ \t]*", so I added a "(comma separated)" hint that will be in all prompts. > > Also, maybe instead of signaling an error for a value that's neither > 'buffer' nor 'minibuffer', we should treat such values as 'buffer'? Agree, fixed --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-Make-key-selection-method-configurable-in-EPA.patch Content-Transfer-Encoding: quoted-printable Content-Description: patch-v2 >From 479c4ca5c8c97b5b9a8b64a0ba7fdbdc0f5ae299 Mon Sep 17 00:00:00 2001 Message-ID: <479c4ca5c8c97b5b9a8b64a0ba7fdbdc0f5ae299.1708026698.git.avitya= zev@disroot.org> From: Aleksandr Vityazev Date: Thu, 15 Feb 2024 22:51:24 +0300 Subject: [PATCH] Make key selection method configurable in EPA. * lisp/epa.el (epa-keys-select-method): New defcustom. (epa--select-keys-in-minibuffer): New function. (epa-select-keys): Use new option and function. * etc/NEWS: Announce it. * doc/misc/epa.texi (Key Management): Document it. --- doc/misc/epa.texi | 7 +++++++ etc/NEWS | 8 ++++++++ lisp/epa.el | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi index 27a9e2b0ebb..cd6da1dadba 100644 --- a/doc/misc/epa.texi +++ b/doc/misc/epa.texi @@ -289,6 +289,13 @@ Cryptographic operations on regions you answered yes, it will let you select the signing keys. @end deffn +You can change the default method that is used to select keys with the +variable @code{epa-file-select-keys}. + +@defvar epa-keys-select-method +Method used to select keys in @code{epa-select-keys}. +@end defvar + @node Cryptographic operations on files @section Cryptographic Operations on Files @cindex cryptographic operations on files diff --git a/etc/NEWS b/etc/NEWS index e6b1d424499..ba609680c24 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1352,6 +1352,14 @@ characters, such as =C2=BD (U+00BD VULGAR FRACTION O= NE HALF), are also recognized as rational fractions. They have been since 2004, but it looks like it was never mentioned in the NEWS, or even the manual. +** EasyPG + ++++ +*** New user option 'epa-keys-select-method'. +This allows the user to customize the key selection method, which can be +either by using a pop-up buffer or from the minibuffer. The pop-up +buffer method is the default, which preserves previous behavior. + * New Modes and Packages in Emacs 30.1 diff --git a/lisp/epa.el b/lisp/epa.el index 53da3bf6cce..b2593bc62ba 100644 --- a/lisp/epa.el +++ b/lisp/epa.el @@ -73,6 +73,16 @@ epa-mail-aliases :group 'epa :version "24.4") +(defcustom epa-keys-select-method 'buffer + "Method used to select keys in `epa-select-keys'. +If the value is \\=3D'buffer, the default, keys are selected via a +pop-up buffer. If the value is \\=3D'minibuffer, keys are selected +via the minibuffer instead, using `completing-read-multiple'." + :type '(choice (const :tag "Read keys from a pop-up buffer" buffer) + (const :tag "Read keys from minibuffer" minibuffer)) + :group 'epa + :version "30.1") + ;;; Faces (defgroup epa-faces nil @@ -450,6 +460,25 @@ epa--select-keys (epa--marked-keys)) (kill-buffer epa-keys-buffer))))) +(defun epa--select-keys-in-minibuffer (prompt keys) + (let* ((prompt (pcase-let ((`(,first ,second ,third) + (string-split prompt "\\.")) + (hint "(separated by comma)")) + (if third + (format "%s %s. %s: " first hint second) + (format "%s %s: " first hint)))) + (keys-alist + (seq-map + (lambda (key) + (cons (substring-no-properties + (epa--button-key-text key)) + key)) + keys)) + (selected-keys (completing-read-multiple prompt keys-alist))) + (seq-map + (lambda (key) (cdr (assoc key keys-alist))) + selected-keys))) + ;;;###autoload (defun epa-select-keys (context prompt &optional names secret) "Display a user's keyring and ask him to select keys. @@ -459,6 +488,8 @@ epa-select-keys the keys are listed. If SECRET is non-nil, list secret keys instead of public keys." (let ((keys (epg-list-keys context names secret))) - (epa--select-keys prompt keys))) + (pcase epa-keys-select-method + ('minibuffer (epa--select-keys-in-minibuffer prompt keys)) + (_ (epa--select-keys prompt keys))))) ;;;; Key Details -- 2.41.0 --=-=-= Content-Type: text/plain -- Best regards, Aleksandr Vityazev --=-=-=--