summaryrefslogtreecommitdiff
path: root/lisp/plstore.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/plstore.el')
-rw-r--r--lisp/plstore.el43
1 files changed, 28 insertions, 15 deletions
diff --git a/lisp/plstore.el b/lisp/plstore.el
index 0964e6ccaf6..2fada5a308d 100644
--- a/lisp/plstore.el
+++ b/lisp/plstore.el
@@ -550,23 +550,36 @@ SECRET-KEYS is a plist containing secret data."
(cons (cons name secret-plist) (plstore--get-secret-alist plstore)))))
(plstore--merge-secret plstore)))
+(defun plstore--has-secret-keys (plist)
+ "Return t if PLIST of a plstore entry has secret keys."
+ (string-match-p "\\`:secret-" (symbol-name (car plist))))
+
(defun plstore-delete (plstore name)
"Delete the first entry named NAME from PLSTORE."
- (let ((entry (assoc name (plstore--get-alist plstore))))
- (if entry
- (plstore--set-alist
- plstore
- (delq entry (plstore--get-alist plstore))))
- (setq entry (assoc name (plstore--get-secret-alist plstore)))
- (if entry
- (plstore--set-secret-alist
- plstore
- (delq entry (plstore--get-secret-alist plstore))))
- (setq entry (assoc name (plstore--get-merged-alist plstore)))
- (if entry
- (plstore--set-merged-alist
- plstore
- (delq entry (plstore--get-merged-alist plstore))))))
+ (when-let* ((entry (assoc name (plstore--get-alist plstore)))
+ (plist (cdr entry)))
+ (when (plstore--has-secret-keys plist)
+ (plstore--decrypt plstore)
+ (setq entry (assoc name (plstore--get-alist plstore))))
+ (plstore--set-alist
+ plstore
+ (delq entry (plstore--get-alist plstore))))
+ (when-let* ((entry (assoc name (plstore--get-secret-alist plstore)))
+ (plist (cdr entry)))
+ (when (plstore--has-secret-keys plist)
+ (plstore--decrypt plstore)
+ (setq entry (assoc name (plstore--get-secret-alist plstore))))
+ (plstore--set-secret-alist
+ plstore
+ (delq entry (plstore--get-secret-alist plstore))))
+ (when-let* ((entry (assoc name (plstore--get-merged-alist plstore)))
+ (plist (cdr entry)))
+ (when (plstore--has-secret-keys plist)
+ (plstore--decrypt plstore)
+ (setq entry (assoc name (plstore--get-merged-alist plstore))))
+ (plstore--set-merged-alist
+ plstore
+ (delq entry (plstore--get-merged-alist plstore)))))
(defvar pp-escape-newlines)
(defun plstore--insert-buffer (plstore)