]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/epa.el (epa-show-key): New command.
authorJonas Bernoulli <jonas@bernoul.li>
Mon, 20 Apr 2020 21:31:16 +0000 (23:31 +0200)
committerJonas Bernoulli <jonas@bernoul.li>
Wed, 15 Jul 2020 16:06:04 +0000 (18:06 +0200)
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
current 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

index 8f45c667b9ab3abf6f7b08a67acc67929b2917fb..3c7dd8309a895875e390c36afc06deca58e1026c 100644 (file)
@@ -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)
 
 (defgroup epa nil
@@ -189,6 +191,7 @@ You should bind this variable with `let', but do not set it globally.")
   (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)
@@ -502,6 +505,14 @@ 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)))
 
+(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)