bug#41276: [PATCH 0/9] Various small improvements to EasyPG

classic Classic list List threaded Threaded
45 messages Options
123
Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 0/9] Various small improvements to EasyPG

Jonas Bernoulli-5
This patches make various cosmetic and hopefully uncontroversial
changes to epa and epg libraries.

I am now to contributing to Emacs itself and not yet comfortable
with the commit message conventions among other things.  Tell me
what I am doing wrong please.

  Cheers,
  Jonas


Jonas Bernoulli (9):
  * lisp/epa.el (epa-faces): Move definition
  Add all epa faces to epa-faces Custom group
  * lisp/epg-config.el (epg-config--make-gpg-configuration): Fix
    indentation
  Split EasyPG libraries into outline sections
  Improve and add doc-strings
  Drop unnecessary backward compatibility aliases
  Cosmetic changes to epa libraries
  epa-key-list-mode-map: Use widget-keymap as parent keymap
  * lisp/epa.el (epa-show-key): New command

 lisp/epa-dired.el  | 45 +++++++++++++++--------------------
 lisp/epa-file.el   | 39 +++++++++++++-----------------
 lisp/epa-hook.el   | 12 ++++++----
 lisp/epa-mail.el   |  9 +++++++
 lisp/epa.el        | 59 ++++++++++++++++++++++++++++++++++++----------
 lisp/epg-config.el | 22 +++++++++++------
 lisp/epg.el        | 26 +++++++++++++++++++-
 7 files changed, 139 insertions(+), 73 deletions(-)

--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41272: [PATCH 1/9] * lisp/epa.el (epa-faces): Move definition

Jonas Bernoulli-5
Previously option `epa-mail-aliases' was the only option that was
defined right after the group `epa-faces' and right before all the
faces.  Now it is defined with all the other options and thus before
the definition of the `epa-faces' group, which it does not belong to
for obvious reasons.
---
 lisp/epa.el | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 8ec4218735..0dd1cff465 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -56,11 +56,6 @@ epa-info-window-height
   :type 'integer
   :group 'epa)
 
-(defgroup epa-faces nil
-  "Faces for epa-mode."
-  :version "23.1"
-  :group 'epa)
-
 (defcustom epa-mail-aliases nil
   "Alist of aliases of email addresses that stand for encryption keys.
 Each element is a list of email addresses (ALIAS EXPANSIONS...).
@@ -76,6 +71,11 @@ epa-mail-aliases
   :group 'epa
   :version "24.4")
 
+(defgroup epa-faces nil
+  "Faces for epa-mode."
+  :version "23.1"
+  :group 'epa)
+
 (defface epa-validity-high
   '((default :weight bold)
     (((class color) (background dark)) :foreground "PaleTurquoise"))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41269: [PATCH 2/9] Add all epa faces to epa-faces Custom group

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
'epa-validity-face-alist' isn't actually a face but belongs in that
group anyway.

* lisp/epa.el (epa-field-name, epa-field-body,
epa-validity-face-alist): Add to epa-faces Custom group
---
 lisp/epa.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 0dd1cff465..7fb5a92547 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -117,13 +117,13 @@ epa-field-name
   '((default :weight bold)
     (((class color) (background dark)) :foreground "PaleTurquoise"))
   "Face for the name of the attribute field."
-  :group 'epa)
+  :group 'epa-faces)
 
 (defface epa-field-body
   '((default :slant italic)
     (((class color) (background dark)) :foreground "turquoise"))
   "Face for the body of the attribute field."
-  :group 'epa)
+  :group 'epa-faces)
 
 (defcustom epa-validity-face-alist
   '((unknown . epa-validity-disabled)
@@ -139,7 +139,7 @@ epa-validity-face-alist
     (ultimate . epa-validity-high))
   "An alist mapping validity values to faces."
   :type '(repeat (cons symbol face))
-  :group 'epa)
+  :group 'epa-faces)
 
 (defvar epa-font-lock-keywords
   '(("^\\*"
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41270: [PATCH 3/9] * lisp/epg-config.el (epg-config--make-gpg-configuration): Fix indentation

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
---
 lisp/epg-config.el | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index daa9a5abd1..1c42924652 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -202,13 +202,13 @@ epg-config--make-gpg-configuration
  (cond
  ((eq type 'group)
   (if (string-match "\\`\\([^:]+\\):" args)
-  (setq groups
- (cons (cons (downcase (match-string 1 args))
-    (delete "" (split-string
- (substring args
-   (match-end 0))
- ";")))
-      groups))
+      (setq groups
+    (cons (cons (downcase (match-string 1 args))
+ (delete "" (split-string
+    (substring args
+       (match-end 0))
+    ";")))
+  groups))
     (if epg-debug
  (message "Invalid group configuration: %S" args))))
  ((memq type '(pubkey cipher digest compress))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41275: [PATCH 4/9] Split EasyPG libraries into outline sections

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
lisp/epa-dired.el, lisp/epa-file.el, lisp/epa-hook.el,
lisp/epa-mail.el, lisp/epa.el, lisp/epg-config.el, lisp/epg.el:
Split into outline sections.
---
 lisp/epa-dired.el  |  1 +
 lisp/epa-file.el   |  9 +++++++++
 lisp/epa-hook.el   |  1 +
 lisp/epa-mail.el   |  9 +++++++++
 lisp/epa.el        | 23 +++++++++++++++++++++++
 lisp/epg-config.el |  8 ++++++++
 lisp/epg.el        | 26 +++++++++++++++++++++++++-
 7 files changed, 76 insertions(+), 1 deletion(-)

diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index f601d42656..1bcfb758ed 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -1,4 +1,5 @@
 ;;; epa-dired.el --- the EasyPG Assistant, dired extension -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index dedf20b0d7..43399d2852 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -1,4 +1,5 @@
 ;;; epa-file.el --- the EasyPG Assistant, transparent file encryption -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,8 @@
 (require 'epa)
 (require 'epa-hook)
 
+;;; Options
+
 (defcustom epa-file-cache-passphrase-for-symmetric-encryption nil
   "If non-nil, cache passphrase for symmetric encryption.
 
@@ -49,6 +52,8 @@ epa-file-select-keys
  (const :tag "Don't ask" silent))
   :group 'epa-file)
 
+;;; Other
+
 (defvar epa-file-passphrase-alist nil)
 
 (eval-and-compile
@@ -82,6 +87,8 @@ epa-file-passphrase-callback-function
  passphrase))))
     (epa-passphrase-callback-function context key-id file)))
 
+;;; File Handler
+
 (defvar epa-inhibit nil
   "Non-nil means don't try to decrypt .gpg files when operating on them.")
 
@@ -317,6 +324,8 @@ epa-file-write-region
  (message "Wrote %s" buffer-file-name))))
 (put 'write-region 'epa-file 'epa-file-write-region)
 
+;;; Commands
+
 (defun epa-file-select-keys ()
   "Select recipients for encryption."
   (interactive)
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index d424e7a9fa..002f46ad27 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -1,4 +1,5 @@
 ;;; epa-hook.el --- preloaded code to enable epa-file.el -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index 00f560af0b..4c57235394 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -1,4 +1,5 @@
 ;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,8 @@
 (require 'epa)
 (require 'mail-utils)
 
+;;; Local Mode
+
 (defvar epa-mail-mode-map
   (let ((keymap (make-sparse-keymap)))
     (define-key keymap "\C-c\C-ed" 'epa-mail-decrypt)
@@ -50,6 +53,8 @@ epa-mail-mode
   "A minor-mode for composing encrypted/clearsigned mails."
   nil " epa-mail" epa-mail-mode-map)
 
+;;; Utilities
+
 (defun epa-mail--find-usable-key (keys usage)
   "Find a usable key from KEYS for USAGE.
 USAGE would be `sign' or `encrypt'."
@@ -64,6 +69,8 @@ epa-mail--find-usable-key
   (setq pointer (cdr pointer))))
       (setq keys (cdr keys)))))
 
+;;; Commands
+
 ;;;###autoload
 (defun epa-mail-decrypt ()
   "Decrypt OpenPGP armors in the current buffer.
@@ -238,6 +245,8 @@ epa-mail-import-keys
   (interactive)
   (epa-import-armor-in-region (point-min) (point-max)))
 
+;;; Global Mode
+
 ;;;###autoload
 (define-minor-mode epa-global-mail-mode
   "Minor mode to hook EasyPG into Mail mode."
diff --git a/lisp/epa.el b/lisp/epa.el
index 7fb5a92547..62a4941f9d 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -28,6 +28,8 @@
 (eval-when-compile (require 'wid-edit))
 (require 'derived)
 
+;;; Options
+
 (defgroup epa nil
   "The EasyPG Assistant"
   :version "23.1"
@@ -71,6 +73,8 @@ epa-mail-aliases
   :group 'epa
   :version "24.4")
 
+;;; Faces
+
 (defgroup epa-faces nil
   "Faces for epa-mode."
   :version "23.1"
@@ -141,6 +145,8 @@ epa-validity-face-alist
   :type '(repeat (cons symbol face))
   :group 'epa-faces)
 
+;;; Variables
+
 (defvar epa-font-lock-keywords
   '(("^\\*"
      (0 'epa-mark))
@@ -245,6 +251,8 @@ epa-info-mode-map
 
 (defvar epa-exit-buffer-function #'quit-window)
 
+;;; Key Widget
+
 (define-widget 'epa-key 'push-button
   "Button for representing an epg-key object."
   :format "%[%v%]"
@@ -286,6 +294,8 @@ epa--key-widget-help-echo
   (epg-sub-key-id (car (epg-key-sub-key-list
  (widget-get widget :value))))))
 
+;;; Modes
+
 (define-derived-mode epa-key-list-mode special-mode "EPA Keys"
   "Major mode for `epa-list-keys'."
   (buffer-disable-undo)
@@ -309,6 +319,9 @@ epa-info-mode
   (setq truncate-lines t
  buffer-read-only t))
 
+;;; Commands
+;;;; Marking
+
 (defun epa-mark-key (&optional arg)
   "Mark a key on the current line.
 If ARG is non-nil, unmark the key."
@@ -331,12 +344,16 @@ epa-unmark-key
   (interactive "P")
   (epa-mark-key (not arg)))
 
+;;;; Quitting
+
 (defun epa-exit-buffer ()
   "Exit the current buffer.
 `epa-exit-buffer-function' is called if it is set."
   (interactive)
   (funcall epa-exit-buffer-function))
 
+;;;; Listing and Selecting
+
 (defun epa--insert-keys (keys)
   (save-excursion
     (save-restriction
@@ -500,6 +517,8 @@ epa-select-keys
   (let ((keys (epg-list-keys context names secret)))
     (epa--select-keys prompt keys)))
 
+;;;; Key Details
+
 (defun epa--show-key (key)
   (let* ((primary-sub-key (car (epg-key-sub-key-list key)))
  (entry (assoc (epg-sub-key-id primary-sub-key)
@@ -578,6 +597,8 @@ epa--show-key
     (goto-char (point-min))
     (pop-to-buffer (current-buffer))))
 
+;;;; Encryption and Signatures
+
 (defun epa-display-info (info)
   (if epa-popup-info-window
       (save-selected-window
@@ -1178,6 +1199,8 @@ epa-encrypt-region
  'start-open t
  'end-open t)))))
 
+;;;; Key Management
+
 ;;;###autoload
 (defun epa-delete-keys (keys &optional allow-secret)
   "Delete selected KEYS."
diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index 1c42924652..a148737f1c 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -25,6 +25,8 @@
 
 (eval-when-compile (require 'cl-lib))
 
+;;; Constants (1/2)
+
 (defconst epg-package-name "epg"
   "Name of this package.")
 
@@ -34,6 +36,8 @@ epg-version-number
 (define-obsolete-variable-alias 'epg-bug-report-address
   'report-emacs-bug-address "27.1")
 
+;;; Options
+
 (defgroup epg ()
   "Interface to the GNU Privacy Guard (GnuPG)."
   :tag "EasyPG"
@@ -106,6 +110,8 @@ epg-debug
 Note that the buffer name starts with a space."
   :type 'boolean)
 
+;;; Constants (2/2)
+
 (defconst epg-gpg-minimum-version "1.4.3")
 (defconst epg-gpg2-minimum-version "2.1.6")
 
@@ -133,6 +139,8 @@ epg-config--configuration-constructor-alist
 either `OpenPGP' or `CMS'.  The second element is a function
 which constructs a configuration object (actually a plist).")
 
+;;; "Configuration"
+
 (defvar epg--configurations nil)
 
 ;;;###autoload
diff --git a/lisp/epg.el b/lisp/epg.el
index 222fd913e1..4bb9e998e1 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -1,4 +1,5 @@
 ;;; epg.el --- the EasyPG Library -*- lexical-binding: t -*-
+
 ;; Copyright (C) 1999-2000, 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,10 @@
 (require 'epg-config)
 (eval-when-compile (require 'cl-lib))
 
+(define-error 'epg-error "GPG error")
+
+;;; Variables
+
 (defvar epg-user-id nil
   "GnuPG ID of your default identity.")
 
@@ -41,6 +46,8 @@ epg-debug-buffer
 (defvar epg-agent-file nil)
 (defvar epg-agent-mtime nil)
 
+;;; Enums
+
 ;; from gnupg/common/openpgpdefs.h
 (defconst epg-cipher-algorithm-alist
   '((0 . "NONE")
@@ -169,7 +176,8 @@ epg-dn-type-alist
 
 (defvar epg-prompt-alist nil)
 
-(define-error 'epg-error "GPG error")
+;;; Structs
+;;;; Data Struct
 
 (cl-defstruct (epg-data
                (:constructor nil)
@@ -180,6 +188,8 @@ 'epg-error
   (file nil :read-only t)
   (string nil :read-only t))
 
+;;;; Context Struct
+
 (cl-defstruct (epg-context
                (:constructor nil)
                (:constructor epg-context--make
@@ -218,6 +228,8 @@ 'epg-error
   (error-output "")
   error-buffer)
 
+;;;; Context Methods
+
 ;; This is not an alias, just so we can mark it as autoloaded.
 ;;;###autoload
 (defun epg-make-context (&optional protocol armor textmode include-certs
@@ -281,6 +293,8 @@ epg-context-set-signers
   (declare (obsolete setf "25.1"))
   (setf (epg-context-signers context) signers))
 
+;;;; Other Structs
+
 (cl-defstruct (epg-signature
                (:constructor nil)
                (:constructor epg-make-signature
@@ -385,6 +399,8 @@ epg-context-set-signers
   secret-unchanged not-imported
   imports)
 
+;;; Functions
+
 (defun epg-context-result-for (context name)
   "Return the result of CONTEXT associated with NAME."
   (cdr (assq name (epg-context-result context))))
@@ -859,6 +875,8 @@ epg--prompt-GET_BOOL-untrusted_key.override
   (format "Untrusted key %s %s.  Use anyway? " key-id user-id))
       "Use untrusted key anyway? ")))
 
+;;; Status Functions
+
 (defun epg--status-GET_BOOL (context string)
   (let (inhibit-quit)
     (condition-case nil
@@ -1234,6 +1252,8 @@ epg--status-IMPORT_RES
      (epg-context-result-for context 'import-status)))
     (epg-context-set-result-for context 'import-status nil)))
 
+;;; Functions
+
 (defun epg-passphrase-callback-function (context key-id _handback)
   (declare (obsolete epa-passphrase-callback-function "23.1"))
   (if (eq key-id 'SYM)
@@ -1303,6 +1323,8 @@ epg--make-sub-key-1
    (if (aref line 6)
        (epg--time-from-seconds (aref line 6)))))
 
+;;; Public Functions
+
 (defun epg-list-keys (context &optional name mode)
   "Return a list of epg-key objects matched with NAME.
 If MODE is nil or `public', only public keyring should be searched.
@@ -2031,6 +2053,8 @@ epg-edit-key
     (epg-errors-to-string errors))))))
     (epg-reset context)))
 
+;;; Decode Functions
+
 (defun epg--decode-percent-escape (string)
   (setq string (encode-coding-string string 'raw-text))
   (let ((index 0))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41277: [PATCH 5/9] Improve and add doc-strings

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-file.el (epa-file-select-keys), lisp/epa-hook.el
  (epa-file-name-regexp), lisp/epa.el (epa-exit-buffer): Improve
  doc-string.

* lisp/epa-hook.el (epa-file-name-regexp-update): Add doc-string.
---
 lisp/epa-file.el |  4 ++--
 lisp/epa-hook.el | 11 +++++++----
 lisp/epa.el      |  3 +--
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 43399d2852..ede7177054 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -43,9 +43,9 @@ epa-file-cache-passphrase-for-symmetric-encryption
 (defcustom epa-file-select-keys nil
   "Control whether or not to pop up the key selection dialog.
 
-If t, always asks user to select recipients.
+If t, always ask user to select recipients.
 If nil, query user only when `epa-file-encrypt-to' is not set.
-If neither t nor nil, doesn't ask user.  In this case, symmetric
+If neither t nor nil, don't ask user.  In this case, symmetric
 encryption is used."
   :type '(choice (const :tag "Ask always" t)
  (const :tag "Ask when recipients are not set" nil)
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index 002f46ad27..6f12f8a6bf 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -36,10 +36,10 @@ epa-file--file-name-regexp-set
 (defcustom epa-file-name-regexp (purecopy "\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'")
   "Regexp which matches filenames to be encrypted with GnuPG.
 
-If you set this outside Custom while epa-file is already enabled, you
-have to call `epa-file-name-regexp-update' after setting it to
-properly update file-name-handler-alist.  Setting this through Custom
-does that automatically."
+If you set this outside Custom while epa-file is already enabled,
+you have to call `epa-file-name-regexp-update' after setting it
+to properly update `file-name-handler-alist'.  Setting this
+through Custom does that automatically."
   :type 'regexp
   :group 'epa-file
   :set 'epa-file--file-name-regexp-set)
@@ -73,6 +73,9 @@ epa-file-auto-mode-alist-entry
   (list epa-file-name-regexp nil 'epa-file))
 
 (defun epa-file-name-regexp-update ()
+  "Update `file-name-handler-alist' after configuring outside Custom.
+After setting `epa-file-name-regexp-update' outside the Custom
+interface, update `file-name-handler-alist'."
   (interactive)
   (unless (equal (car epa-file-handler) epa-file-name-regexp)
     (setcar epa-file-handler epa-file-name-regexp)))
diff --git a/lisp/epa.el b/lisp/epa.el
index 62a4941f9d..b06b0ac8e4 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -347,8 +347,7 @@ epa-unmark-key
 ;;;; Quitting
 
 (defun epa-exit-buffer ()
-  "Exit the current buffer.
-`epa-exit-buffer-function' is called if it is set."
+  "Exit the current buffer using `epa-exit-buffer-function'."
   (interactive)
   (funcall epa-exit-buffer-function))
 
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41268: [PATCH 6/9] Drop unnecessary backward compatibility aliases

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-file.el (epa-file--encode-coding-string,
  epa-file--decode-coding-string): Remove aliases for
  encode-coding-string and decode-coding-string.

* lisp/epa-file.el (epa-file-write-region): Use encode-coding-string
  instead of removed epa-file--encode-coding-string.

encode-coding-string and decode-coding-string existed every since
4ed4686978bd18292e2bb7b87a7b0e0407ecb3b1 added them in 1997.
---
 lisp/epa-file.el | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index ede7177054..3e23c09a51 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -56,16 +56,6 @@ epa-file-select-keys
 
 (defvar epa-file-passphrase-alist nil)
 
-(eval-and-compile
-  (if (fboundp 'encode-coding-string)
-      (defalias 'epa-file--encode-coding-string 'encode-coding-string)
-    (defalias 'epa-file--encode-coding-string 'identity)))
-
-(eval-and-compile
-  (if (fboundp 'decode-coding-string)
-      (defalias 'epa-file--decode-coding-string 'decode-coding-string)
-    (defalias 'epa-file--decode-coding-string 'identity)))
-
 (defun epa-file-passphrase-callback-function (context key-id file)
   (if (and epa-file-cache-passphrase-for-symmetric-encryption
    (eq key-id 'SYM))
@@ -243,11 +233,7 @@ epa-file-write-region
   (setq file (expand-file-name file))
   (let* ((coding-system (or coding-system-for-write
     (if (fboundp 'select-safe-coding-system)
- ;; This is needed since Emacs 22 has
- ;; no-conversion setting for *.gpg in
- ;; `auto-coding-alist'.
-        (let ((buffer-file-name
-       (file-name-sans-extension file)))
+        (let ((buffer-file-name file))
   (select-safe-coding-system
    (point-min) (point-max)))
       buffer-file-coding-system)))
@@ -273,7 +259,7 @@ epa-file-write-region
       (epg-encrypt-string
        context
        (if (stringp start)
-   (epa-file--encode-coding-string start coding-system)
+   (encode-coding-string start coding-system)
  (unless start
    (setq start (point-min)
  end (point-max)))
@@ -287,8 +273,8 @@ epa-file-write-region
    ;; decrypted contents.
    (format-encode-buffer (with-current-buffer buffer
    buffer-file-format))
-   (epa-file--encode-coding-string (buffer-string)
-   coding-system)))
+   (encode-coding-string (buffer-string)
+ coding-system)))
        (if (or (eq epa-file-select-keys t)
        (and (null epa-file-select-keys)
     (not (local-variable-p 'epa-file-encrypt-to
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41271: [PATCH 7/9] Cosmetic changes to epa libraries

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-dired.el (epa-dired-do-decrypt, epa-dired-do-verify
epa-dired-do-sign, epa-dired-do-encrypt): Use dolist instead of while.

* lisp/epa-file.el (epa-file-passphrase-callback-function): Set just
  one variable per setq call.
---
 lisp/epa-dired.el | 44 ++++++++++++++++++--------------------------
 lisp/epa-file.el  |  4 ++--
 2 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index 1bcfb758ed..4ff1ba3394 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -30,48 +30,40 @@
 (defun epa-dired-do-decrypt ()
   "Decrypt marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-decrypt-file (expand-file-name (car file-list)))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+  (dolist (file (dired-get-marked-files))
+    (epa-decrypt-file (expand-file-name file)))
+  (revert-buffer))
 
 ;;;###autoload
 (defun epa-dired-do-verify ()
   "Verify marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-verify-file (expand-file-name (car file-list)))
-      (setq file-list (cdr file-list)))))
+  (dolist (file (dired-get-marked-files))
+    (epa-verify-file (expand-file-name file))))
 
 ;;;###autoload
 (defun epa-dired-do-sign ()
   "Sign marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-sign-file
-       (expand-file-name (car file-list))
-       (epa-select-keys (epg-make-context) "Select keys for signing.
+  (dolist (file (dired-get-marked-files))
+    (epa-sign-file
+     (expand-file-name file)
+     (epa-select-keys (epg-make-context) "Select keys for signing.
 If no one is selected, default secret key is used.  "
- nil t)
-       (y-or-n-p "Make a detached signature? "))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+      nil t)
+     (y-or-n-p "Make a detached signature? ")))
+  (revert-buffer))
 
 ;;;###autoload
 (defun epa-dired-do-encrypt ()
   "Encrypt marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-encrypt-file
-       (expand-file-name (car file-list))
-       (epa-select-keys (epg-make-context) "Select recipients for encryption.
-If no one is selected, symmetric encryption will be performed.  "))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+  (dolist (file (dired-get-marked-files))
+    (epa-encrypt-file
+     (expand-file-name file)
+     (epa-select-keys (epg-make-context) "Select recipients for encryption.
+If no one is selected, symmetric encryption will be performed.  ")))
+  (revert-buffer))
 
 (provide 'epa-dired)
 
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 3e23c09a51..de51c59c34 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -66,8 +66,8 @@ epa-file-passphrase-callback-function
   (or (copy-sequence (cdr entry))
       (progn
  (unless entry
-  (setq entry (list file)
- epa-file-passphrase-alist
+  (setq entry (list file))
+  (setq epa-file-passphrase-alist
  (cons entry
       epa-file-passphrase-alist)))
  (setq passphrase (epa-passphrase-callback-function context
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41273: [PATCH 8/9] epa-key-list-mode-map: Use widget-keymap as parent keymap

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa.el (epa-key-list-mode-map): Set the parent of this keymap
  while defining this keymap.

* lisp/epa.el (epa--list-keys): Do not set the parent of the local
  keymap here.
---
 lisp/epa.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index b06b0ac8e4..1e0a0132d2 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -191,6 +191,7 @@ epa-last-coding-system-specified
 (defvar epa-key-list-mode-map
   (let ((keymap (make-sparse-keymap))
  (menu-map (make-sparse-keymap)))
+    (set-keymap-parent keymap widget-keymap)
     (define-key keymap "m" 'epa-mark-key)
     (define-key keymap "u" 'epa-unmark-key)
     (define-key keymap "d" 'epa-decrypt-file)
@@ -413,8 +414,7 @@ epa--list-keys
       (goto-char point))
 
     (epa--insert-keys (epg-list-keys context name secret))
-    (widget-setup)
-    (set-keymap-parent (current-local-map) widget-keymap))
+    (widget-setup))
   (make-local-variable 'epa-list-keys-arguments)
   (setq epa-list-keys-arguments (list name secret))
   (goto-char (point-min))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41274: [PATCH 9/9] * lisp/epa.el (epa-show-key): New command

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
Users can move in `epa-key-list-mode' buffers using either
`next-line'/`previous-line' or `widget-forward'/`widget-backward'.
When using the first set of commands, then the cursor stays in the
column and that normally is the first column.  The key widgets do
not begin until the third character of their respective lines.

All `epa' commands work regardless of whether the cursor is on the
widget or before them.  The `epa-show-key' command did not exist until
now because the `widget-button-press' already performs its task.  But
because the widgets don't span complete lines we actually need this
command too.
---
 lisp/epa.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 1e0a0132d2..fe5dd4321a 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -25,7 +25,9 @@
 (require 'epg)
 (require 'font-lock)
 (require 'widget)
-(eval-when-compile (require 'wid-edit))
+(eval-when-compile
+  (require 'subr-x)
+  (require 'wid-edit))
 (require 'derived)
 
 ;;; Options
@@ -192,6 +194,7 @@ epa-key-list-mode-map
   (let ((keymap (make-sparse-keymap))
  (menu-map (make-sparse-keymap)))
     (set-keymap-parent keymap widget-keymap)
+    (define-key keymap "\C-m" 'epa-show-key)
     (define-key keymap "m" 'epa-mark-key)
     (define-key keymap "u" 'epa-unmark-key)
     (define-key keymap "d" 'epa-decrypt-file)
@@ -518,6 +521,14 @@ epa-select-keys
 
 ;;;; Key Details
 
+(defun epa-show-key ()
+  "Show a key on the current line."
+  (interactive)
+  (if-let ((key (get-text-property (point) 'epa-key)))
+      (save-selected-window
+        (epa--show-key key))
+    (error "No key on this line")))
+
 (defun epa--show-key (key)
   (let* ((primary-sub-key (car (epg-key-sub-key-list key)))
  (entry (assoc (epg-sub-key-id primary-sub-key)
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: Acknowledgement ([PATCH 0/9] Various small improvements to EasyPG)

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
Please excuse me for ending up opening an issue per commit and just
delete issues 41268-41275 and 41277 (but not 41276, this issue).

I sent the patches using:
  git send-email 000* --to=[hidden email]

I should have used
  git send-email 0000-cover-letter.patch --to=[hidden email]
wait for the response
> If you wish to submit further information on this problem, please
> send it to [hidden email].
and then
  0000-cover-letter.patch
  git send-email 000* --to=[hidden email]

which is what I am gonna do now.  Fingers crossed.  The patches may
arrive in the wrong order again, I don't know how to prevent that.



Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 1/9] * lisp/epa.el (epa-faces): Move definition

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
Previously option `epa-mail-aliases' was the only option that was
defined right after the group `epa-faces' and right before all the
faces.  Now it is defined with all the other options and thus before
the definition of the `epa-faces' group, which it does not belong to
for obvious reasons.
---
 lisp/epa.el | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 8ec4218735..0dd1cff465 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -56,11 +56,6 @@ epa-info-window-height
   :type 'integer
   :group 'epa)
 
-(defgroup epa-faces nil
-  "Faces for epa-mode."
-  :version "23.1"
-  :group 'epa)
-
 (defcustom epa-mail-aliases nil
   "Alist of aliases of email addresses that stand for encryption keys.
 Each element is a list of email addresses (ALIAS EXPANSIONS...).
@@ -76,6 +71,11 @@ epa-mail-aliases
   :group 'epa
   :version "24.4")
 
+(defgroup epa-faces nil
+  "Faces for epa-mode."
+  :version "23.1"
+  :group 'epa)
+
 (defface epa-validity-high
   '((default :weight bold)
     (((class color) (background dark)) :foreground "PaleTurquoise"))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 2/9] Add all epa faces to epa-faces Custom group

Jonas Bernoulli-5
'epa-validity-face-alist' isn't actually a face but belongs in that
group anyway.

* lisp/epa.el (epa-field-name, epa-field-body,
epa-validity-face-alist): Add to epa-faces Custom group
---
 lisp/epa.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 0dd1cff465..7fb5a92547 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -117,13 +117,13 @@ epa-field-name
   '((default :weight bold)
     (((class color) (background dark)) :foreground "PaleTurquoise"))
   "Face for the name of the attribute field."
-  :group 'epa)
+  :group 'epa-faces)
 
 (defface epa-field-body
   '((default :slant italic)
     (((class color) (background dark)) :foreground "turquoise"))
   "Face for the body of the attribute field."
-  :group 'epa)
+  :group 'epa-faces)
 
 (defcustom epa-validity-face-alist
   '((unknown . epa-validity-disabled)
@@ -139,7 +139,7 @@ epa-validity-face-alist
     (ultimate . epa-validity-high))
   "An alist mapping validity values to faces."
   :type '(repeat (cons symbol face))
-  :group 'epa)
+  :group 'epa-faces)
 
 (defvar epa-font-lock-keywords
   '(("^\\*"
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 3/9] * lisp/epg-config.el (epg-config--make-gpg-configuration): Fix indentation

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
---
 lisp/epg-config.el | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index daa9a5abd1..1c42924652 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -202,13 +202,13 @@ epg-config--make-gpg-configuration
  (cond
  ((eq type 'group)
   (if (string-match "\\`\\([^:]+\\):" args)
-  (setq groups
- (cons (cons (downcase (match-string 1 args))
-    (delete "" (split-string
- (substring args
-   (match-end 0))
- ";")))
-      groups))
+      (setq groups
+    (cons (cons (downcase (match-string 1 args))
+ (delete "" (split-string
+    (substring args
+       (match-end 0))
+    ";")))
+  groups))
     (if epg-debug
  (message "Invalid group configuration: %S" args))))
  ((memq type '(pubkey cipher digest compress))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 4/9] Split EasyPG libraries into outline sections

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
lisp/epa-dired.el, lisp/epa-file.el, lisp/epa-hook.el,
lisp/epa-mail.el, lisp/epa.el, lisp/epg-config.el, lisp/epg.el:
Split into outline sections.
---
 lisp/epa-dired.el  |  1 +
 lisp/epa-file.el   |  9 +++++++++
 lisp/epa-hook.el   |  1 +
 lisp/epa-mail.el   |  9 +++++++++
 lisp/epa.el        | 23 +++++++++++++++++++++++
 lisp/epg-config.el |  8 ++++++++
 lisp/epg.el        | 26 +++++++++++++++++++++++++-
 7 files changed, 76 insertions(+), 1 deletion(-)

diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index f601d42656..1bcfb758ed 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -1,4 +1,5 @@
 ;;; epa-dired.el --- the EasyPG Assistant, dired extension -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index dedf20b0d7..43399d2852 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -1,4 +1,5 @@
 ;;; epa-file.el --- the EasyPG Assistant, transparent file encryption -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,8 @@
 (require 'epa)
 (require 'epa-hook)
 
+;;; Options
+
 (defcustom epa-file-cache-passphrase-for-symmetric-encryption nil
   "If non-nil, cache passphrase for symmetric encryption.
 
@@ -49,6 +52,8 @@ epa-file-select-keys
  (const :tag "Don't ask" silent))
   :group 'epa-file)
 
+;;; Other
+
 (defvar epa-file-passphrase-alist nil)
 
 (eval-and-compile
@@ -82,6 +87,8 @@ epa-file-passphrase-callback-function
  passphrase))))
     (epa-passphrase-callback-function context key-id file)))
 
+;;; File Handler
+
 (defvar epa-inhibit nil
   "Non-nil means don't try to decrypt .gpg files when operating on them.")
 
@@ -317,6 +324,8 @@ epa-file-write-region
  (message "Wrote %s" buffer-file-name))))
 (put 'write-region 'epa-file 'epa-file-write-region)
 
+;;; Commands
+
 (defun epa-file-select-keys ()
   "Select recipients for encryption."
   (interactive)
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index d424e7a9fa..002f46ad27 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -1,4 +1,5 @@
 ;;; epa-hook.el --- preloaded code to enable epa-file.el -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index 00f560af0b..4c57235394 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -1,4 +1,5 @@
 ;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer -*- lexical-binding: t -*-
+
 ;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,8 @@
 (require 'epa)
 (require 'mail-utils)
 
+;;; Local Mode
+
 (defvar epa-mail-mode-map
   (let ((keymap (make-sparse-keymap)))
     (define-key keymap "\C-c\C-ed" 'epa-mail-decrypt)
@@ -50,6 +53,8 @@ epa-mail-mode
   "A minor-mode for composing encrypted/clearsigned mails."
   nil " epa-mail" epa-mail-mode-map)
 
+;;; Utilities
+
 (defun epa-mail--find-usable-key (keys usage)
   "Find a usable key from KEYS for USAGE.
 USAGE would be `sign' or `encrypt'."
@@ -64,6 +69,8 @@ epa-mail--find-usable-key
   (setq pointer (cdr pointer))))
       (setq keys (cdr keys)))))
 
+;;; Commands
+
 ;;;###autoload
 (defun epa-mail-decrypt ()
   "Decrypt OpenPGP armors in the current buffer.
@@ -238,6 +245,8 @@ epa-mail-import-keys
   (interactive)
   (epa-import-armor-in-region (point-min) (point-max)))
 
+;;; Global Mode
+
 ;;;###autoload
 (define-minor-mode epa-global-mail-mode
   "Minor mode to hook EasyPG into Mail mode."
diff --git a/lisp/epa.el b/lisp/epa.el
index 7fb5a92547..62a4941f9d 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -28,6 +28,8 @@
 (eval-when-compile (require 'wid-edit))
 (require 'derived)
 
+;;; Options
+
 (defgroup epa nil
   "The EasyPG Assistant"
   :version "23.1"
@@ -71,6 +73,8 @@ epa-mail-aliases
   :group 'epa
   :version "24.4")
 
+;;; Faces
+
 (defgroup epa-faces nil
   "Faces for epa-mode."
   :version "23.1"
@@ -141,6 +145,8 @@ epa-validity-face-alist
   :type '(repeat (cons symbol face))
   :group 'epa-faces)
 
+;;; Variables
+
 (defvar epa-font-lock-keywords
   '(("^\\*"
      (0 'epa-mark))
@@ -245,6 +251,8 @@ epa-info-mode-map
 
 (defvar epa-exit-buffer-function #'quit-window)
 
+;;; Key Widget
+
 (define-widget 'epa-key 'push-button
   "Button for representing an epg-key object."
   :format "%[%v%]"
@@ -286,6 +294,8 @@ epa--key-widget-help-echo
   (epg-sub-key-id (car (epg-key-sub-key-list
  (widget-get widget :value))))))
 
+;;; Modes
+
 (define-derived-mode epa-key-list-mode special-mode "EPA Keys"
   "Major mode for `epa-list-keys'."
   (buffer-disable-undo)
@@ -309,6 +319,9 @@ epa-info-mode
   (setq truncate-lines t
  buffer-read-only t))
 
+;;; Commands
+;;;; Marking
+
 (defun epa-mark-key (&optional arg)
   "Mark a key on the current line.
 If ARG is non-nil, unmark the key."
@@ -331,12 +344,16 @@ epa-unmark-key
   (interactive "P")
   (epa-mark-key (not arg)))
 
+;;;; Quitting
+
 (defun epa-exit-buffer ()
   "Exit the current buffer.
 `epa-exit-buffer-function' is called if it is set."
   (interactive)
   (funcall epa-exit-buffer-function))
 
+;;;; Listing and Selecting
+
 (defun epa--insert-keys (keys)
   (save-excursion
     (save-restriction
@@ -500,6 +517,8 @@ epa-select-keys
   (let ((keys (epg-list-keys context names secret)))
     (epa--select-keys prompt keys)))
 
+;;;; Key Details
+
 (defun epa--show-key (key)
   (let* ((primary-sub-key (car (epg-key-sub-key-list key)))
  (entry (assoc (epg-sub-key-id primary-sub-key)
@@ -578,6 +597,8 @@ epa--show-key
     (goto-char (point-min))
     (pop-to-buffer (current-buffer))))
 
+;;;; Encryption and Signatures
+
 (defun epa-display-info (info)
   (if epa-popup-info-window
       (save-selected-window
@@ -1178,6 +1199,8 @@ epa-encrypt-region
  'start-open t
  'end-open t)))))
 
+;;;; Key Management
+
 ;;;###autoload
 (defun epa-delete-keys (keys &optional allow-secret)
   "Delete selected KEYS."
diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index 1c42924652..a148737f1c 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -25,6 +25,8 @@
 
 (eval-when-compile (require 'cl-lib))
 
+;;; Constants (1/2)
+
 (defconst epg-package-name "epg"
   "Name of this package.")
 
@@ -34,6 +36,8 @@ epg-version-number
 (define-obsolete-variable-alias 'epg-bug-report-address
   'report-emacs-bug-address "27.1")
 
+;;; Options
+
 (defgroup epg ()
   "Interface to the GNU Privacy Guard (GnuPG)."
   :tag "EasyPG"
@@ -106,6 +110,8 @@ epg-debug
 Note that the buffer name starts with a space."
   :type 'boolean)
 
+;;; Constants (2/2)
+
 (defconst epg-gpg-minimum-version "1.4.3")
 (defconst epg-gpg2-minimum-version "2.1.6")
 
@@ -133,6 +139,8 @@ epg-config--configuration-constructor-alist
 either `OpenPGP' or `CMS'.  The second element is a function
 which constructs a configuration object (actually a plist).")
 
+;;; "Configuration"
+
 (defvar epg--configurations nil)
 
 ;;;###autoload
diff --git a/lisp/epg.el b/lisp/epg.el
index 222fd913e1..4bb9e998e1 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -1,4 +1,5 @@
 ;;; epg.el --- the EasyPG Library -*- lexical-binding: t -*-
+
 ;; Copyright (C) 1999-2000, 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <[hidden email]>
@@ -25,6 +26,10 @@
 (require 'epg-config)
 (eval-when-compile (require 'cl-lib))
 
+(define-error 'epg-error "GPG error")
+
+;;; Variables
+
 (defvar epg-user-id nil
   "GnuPG ID of your default identity.")
 
@@ -41,6 +46,8 @@ epg-debug-buffer
 (defvar epg-agent-file nil)
 (defvar epg-agent-mtime nil)
 
+;;; Enums
+
 ;; from gnupg/common/openpgpdefs.h
 (defconst epg-cipher-algorithm-alist
   '((0 . "NONE")
@@ -169,7 +176,8 @@ epg-dn-type-alist
 
 (defvar epg-prompt-alist nil)
 
-(define-error 'epg-error "GPG error")
+;;; Structs
+;;;; Data Struct
 
 (cl-defstruct (epg-data
                (:constructor nil)
@@ -180,6 +188,8 @@ 'epg-error
   (file nil :read-only t)
   (string nil :read-only t))
 
+;;;; Context Struct
+
 (cl-defstruct (epg-context
                (:constructor nil)
                (:constructor epg-context--make
@@ -218,6 +228,8 @@ 'epg-error
   (error-output "")
   error-buffer)
 
+;;;; Context Methods
+
 ;; This is not an alias, just so we can mark it as autoloaded.
 ;;;###autoload
 (defun epg-make-context (&optional protocol armor textmode include-certs
@@ -281,6 +293,8 @@ epg-context-set-signers
   (declare (obsolete setf "25.1"))
   (setf (epg-context-signers context) signers))
 
+;;;; Other Structs
+
 (cl-defstruct (epg-signature
                (:constructor nil)
                (:constructor epg-make-signature
@@ -385,6 +399,8 @@ epg-context-set-signers
   secret-unchanged not-imported
   imports)
 
+;;; Functions
+
 (defun epg-context-result-for (context name)
   "Return the result of CONTEXT associated with NAME."
   (cdr (assq name (epg-context-result context))))
@@ -859,6 +875,8 @@ epg--prompt-GET_BOOL-untrusted_key.override
   (format "Untrusted key %s %s.  Use anyway? " key-id user-id))
       "Use untrusted key anyway? ")))
 
+;;; Status Functions
+
 (defun epg--status-GET_BOOL (context string)
   (let (inhibit-quit)
     (condition-case nil
@@ -1234,6 +1252,8 @@ epg--status-IMPORT_RES
      (epg-context-result-for context 'import-status)))
     (epg-context-set-result-for context 'import-status nil)))
 
+;;; Functions
+
 (defun epg-passphrase-callback-function (context key-id _handback)
   (declare (obsolete epa-passphrase-callback-function "23.1"))
   (if (eq key-id 'SYM)
@@ -1303,6 +1323,8 @@ epg--make-sub-key-1
    (if (aref line 6)
        (epg--time-from-seconds (aref line 6)))))
 
+;;; Public Functions
+
 (defun epg-list-keys (context &optional name mode)
   "Return a list of epg-key objects matched with NAME.
 If MODE is nil or `public', only public keyring should be searched.
@@ -2031,6 +2053,8 @@ epg-edit-key
     (epg-errors-to-string errors))))))
     (epg-reset context)))
 
+;;; Decode Functions
+
 (defun epg--decode-percent-escape (string)
   (setq string (encode-coding-string string 'raw-text))
   (let ((index 0))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 5/9] Improve and add doc-strings

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-file.el (epa-file-select-keys), lisp/epa-hook.el
  (epa-file-name-regexp), lisp/epa.el (epa-exit-buffer): Improve
  doc-string.

* lisp/epa-hook.el (epa-file-name-regexp-update): Add doc-string.
---
 lisp/epa-file.el |  4 ++--
 lisp/epa-hook.el | 11 +++++++----
 lisp/epa.el      |  3 +--
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 43399d2852..ede7177054 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -43,9 +43,9 @@ epa-file-cache-passphrase-for-symmetric-encryption
 (defcustom epa-file-select-keys nil
   "Control whether or not to pop up the key selection dialog.
 
-If t, always asks user to select recipients.
+If t, always ask user to select recipients.
 If nil, query user only when `epa-file-encrypt-to' is not set.
-If neither t nor nil, doesn't ask user.  In this case, symmetric
+If neither t nor nil, don't ask user.  In this case, symmetric
 encryption is used."
   :type '(choice (const :tag "Ask always" t)
  (const :tag "Ask when recipients are not set" nil)
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index 002f46ad27..6f12f8a6bf 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -36,10 +36,10 @@ epa-file--file-name-regexp-set
 (defcustom epa-file-name-regexp (purecopy "\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'")
   "Regexp which matches filenames to be encrypted with GnuPG.
 
-If you set this outside Custom while epa-file is already enabled, you
-have to call `epa-file-name-regexp-update' after setting it to
-properly update file-name-handler-alist.  Setting this through Custom
-does that automatically."
+If you set this outside Custom while epa-file is already enabled,
+you have to call `epa-file-name-regexp-update' after setting it
+to properly update `file-name-handler-alist'.  Setting this
+through Custom does that automatically."
   :type 'regexp
   :group 'epa-file
   :set 'epa-file--file-name-regexp-set)
@@ -73,6 +73,9 @@ epa-file-auto-mode-alist-entry
   (list epa-file-name-regexp nil 'epa-file))
 
 (defun epa-file-name-regexp-update ()
+  "Update `file-name-handler-alist' after configuring outside Custom.
+After setting `epa-file-name-regexp-update' outside the Custom
+interface, update `file-name-handler-alist'."
   (interactive)
   (unless (equal (car epa-file-handler) epa-file-name-regexp)
     (setcar epa-file-handler epa-file-name-regexp)))
diff --git a/lisp/epa.el b/lisp/epa.el
index 62a4941f9d..b06b0ac8e4 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -347,8 +347,7 @@ epa-unmark-key
 ;;;; Quitting
 
 (defun epa-exit-buffer ()
-  "Exit the current buffer.
-`epa-exit-buffer-function' is called if it is set."
+  "Exit the current buffer using `epa-exit-buffer-function'."
   (interactive)
   (funcall epa-exit-buffer-function))
 
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 6/9] Drop unnecessary backward compatibility aliases

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-file.el (epa-file--encode-coding-string,
  epa-file--decode-coding-string): Remove aliases for
  encode-coding-string and decode-coding-string.

* lisp/epa-file.el (epa-file-write-region): Use encode-coding-string
  instead of removed epa-file--encode-coding-string.

encode-coding-string and decode-coding-string existed every since
4ed4686978bd18292e2bb7b87a7b0e0407ecb3b1 added them in 1997.
---
 lisp/epa-file.el | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index ede7177054..3e23c09a51 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -56,16 +56,6 @@ epa-file-select-keys
 
 (defvar epa-file-passphrase-alist nil)
 
-(eval-and-compile
-  (if (fboundp 'encode-coding-string)
-      (defalias 'epa-file--encode-coding-string 'encode-coding-string)
-    (defalias 'epa-file--encode-coding-string 'identity)))
-
-(eval-and-compile
-  (if (fboundp 'decode-coding-string)
-      (defalias 'epa-file--decode-coding-string 'decode-coding-string)
-    (defalias 'epa-file--decode-coding-string 'identity)))
-
 (defun epa-file-passphrase-callback-function (context key-id file)
   (if (and epa-file-cache-passphrase-for-symmetric-encryption
    (eq key-id 'SYM))
@@ -243,11 +233,7 @@ epa-file-write-region
   (setq file (expand-file-name file))
   (let* ((coding-system (or coding-system-for-write
     (if (fboundp 'select-safe-coding-system)
- ;; This is needed since Emacs 22 has
- ;; no-conversion setting for *.gpg in
- ;; `auto-coding-alist'.
-        (let ((buffer-file-name
-       (file-name-sans-extension file)))
+        (let ((buffer-file-name file))
   (select-safe-coding-system
    (point-min) (point-max)))
       buffer-file-coding-system)))
@@ -273,7 +259,7 @@ epa-file-write-region
       (epg-encrypt-string
        context
        (if (stringp start)
-   (epa-file--encode-coding-string start coding-system)
+   (encode-coding-string start coding-system)
  (unless start
    (setq start (point-min)
  end (point-max)))
@@ -287,8 +273,8 @@ epa-file-write-region
    ;; decrypted contents.
    (format-encode-buffer (with-current-buffer buffer
    buffer-file-format))
-   (epa-file--encode-coding-string (buffer-string)
-   coding-system)))
+   (encode-coding-string (buffer-string)
+ coding-system)))
        (if (or (eq epa-file-select-keys t)
        (and (null epa-file-select-keys)
     (not (local-variable-p 'epa-file-encrypt-to
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 7/9] Cosmetic changes to epa libraries

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa-dired.el (epa-dired-do-decrypt, epa-dired-do-verify
epa-dired-do-sign, epa-dired-do-encrypt): Use dolist instead of while.

* lisp/epa-file.el (epa-file-passphrase-callback-function): Set just
  one variable per setq call.
---
 lisp/epa-dired.el | 44 ++++++++++++++++++--------------------------
 lisp/epa-file.el  |  4 ++--
 2 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index 1bcfb758ed..4ff1ba3394 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -30,48 +30,40 @@
 (defun epa-dired-do-decrypt ()
   "Decrypt marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-decrypt-file (expand-file-name (car file-list)))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+  (dolist (file (dired-get-marked-files))
+    (epa-decrypt-file (expand-file-name file)))
+  (revert-buffer))
 
 ;;;###autoload
 (defun epa-dired-do-verify ()
   "Verify marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-verify-file (expand-file-name (car file-list)))
-      (setq file-list (cdr file-list)))))
+  (dolist (file (dired-get-marked-files))
+    (epa-verify-file (expand-file-name file))))
 
 ;;;###autoload
 (defun epa-dired-do-sign ()
   "Sign marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-sign-file
-       (expand-file-name (car file-list))
-       (epa-select-keys (epg-make-context) "Select keys for signing.
+  (dolist (file (dired-get-marked-files))
+    (epa-sign-file
+     (expand-file-name file)
+     (epa-select-keys (epg-make-context) "Select keys for signing.
 If no one is selected, default secret key is used.  "
- nil t)
-       (y-or-n-p "Make a detached signature? "))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+      nil t)
+     (y-or-n-p "Make a detached signature? ")))
+  (revert-buffer))
 
 ;;;###autoload
 (defun epa-dired-do-encrypt ()
   "Encrypt marked files."
   (interactive)
-  (let ((file-list (dired-get-marked-files)))
-    (while file-list
-      (epa-encrypt-file
-       (expand-file-name (car file-list))
-       (epa-select-keys (epg-make-context) "Select recipients for encryption.
-If no one is selected, symmetric encryption will be performed.  "))
-      (setq file-list (cdr file-list)))
-    (revert-buffer)))
+  (dolist (file (dired-get-marked-files))
+    (epa-encrypt-file
+     (expand-file-name file)
+     (epa-select-keys (epg-make-context) "Select recipients for encryption.
+If no one is selected, symmetric encryption will be performed.  ")))
+  (revert-buffer))
 
 (provide 'epa-dired)
 
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 3e23c09a51..de51c59c34 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -66,8 +66,8 @@ epa-file-passphrase-callback-function
   (or (copy-sequence (cdr entry))
       (progn
  (unless entry
-  (setq entry (list file)
- epa-file-passphrase-alist
+  (setq entry (list file))
+  (setq epa-file-passphrase-alist
  (cons entry
       epa-file-passphrase-alist)))
  (setq passphrase (epa-passphrase-callback-function context
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 8/9] epa-key-list-mode-map: Use widget-keymap as parent keymap

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
* lisp/epa.el (epa-key-list-mode-map): Set the parent of this keymap
  while defining this keymap.

* lisp/epa.el (epa--list-keys): Do not set the parent of the local
  keymap here.
---
 lisp/epa.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index b06b0ac8e4..1e0a0132d2 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -191,6 +191,7 @@ epa-last-coding-system-specified
 (defvar epa-key-list-mode-map
   (let ((keymap (make-sparse-keymap))
  (menu-map (make-sparse-keymap)))
+    (set-keymap-parent keymap widget-keymap)
     (define-key keymap "m" 'epa-mark-key)
     (define-key keymap "u" 'epa-unmark-key)
     (define-key keymap "d" 'epa-decrypt-file)
@@ -413,8 +414,7 @@ epa--list-keys
       (goto-char point))
 
     (epa--insert-keys (epg-list-keys context name secret))
-    (widget-setup)
-    (set-keymap-parent (current-local-map) widget-keymap))
+    (widget-setup))
   (make-local-variable 'epa-list-keys-arguments)
   (setq epa-list-keys-arguments (list name secret))
   (goto-char (point-min))
--
2.26.0




Reply | Threaded
Open this post in threaded view
|

bug#41276: [PATCH 9/9] * lisp/epa.el (epa-show-key): New command

Jonas Bernoulli-5
In reply to this post by Jonas Bernoulli-5
Users can move in `epa-key-list-mode' buffers using either
`next-line'/`previous-line' or `widget-forward'/`widget-backward'.
When using the first set of commands, then the cursor stays in the
column and that normally is the first column.  The key widgets do
not begin until the third character of their respective lines.

All `epa' commands work regardless of whether the cursor is on the
widget or before them.  The `epa-show-key' command did not exist until
now because the `widget-button-press' already performs its task.  But
because the widgets don't span complete lines we actually need this
command too.
---
 lisp/epa.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lisp/epa.el b/lisp/epa.el
index 1e0a0132d2..fe5dd4321a 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -25,7 +25,9 @@
 (require 'epg)
 (require 'font-lock)
 (require 'widget)
-(eval-when-compile (require 'wid-edit))
+(eval-when-compile
+  (require 'subr-x)
+  (require 'wid-edit))
 (require 'derived)
 
 ;;; Options
@@ -192,6 +194,7 @@ epa-key-list-mode-map
   (let ((keymap (make-sparse-keymap))
  (menu-map (make-sparse-keymap)))
     (set-keymap-parent keymap widget-keymap)
+    (define-key keymap "\C-m" 'epa-show-key)
     (define-key keymap "m" 'epa-mark-key)
     (define-key keymap "u" 'epa-unmark-key)
     (define-key keymap "d" 'epa-decrypt-file)
@@ -518,6 +521,14 @@ epa-select-keys
 
 ;;;; Key Details
 
+(defun epa-show-key ()
+  "Show a key on the current line."
+  (interactive)
+  (if-let ((key (get-text-property (point) 'epa-key)))
+      (save-selected-window
+        (epa--show-key key))
+    (error "No key on this line")))
+
 (defun epa--show-key (key)
   (let* ((primary-sub-key (car (epg-key-sub-key-list key)))
  (entry (assoc (epg-sub-key-id primary-sub-key)
--
2.26.0




123