Package: emacs;
Reported by: LdBeth <andpuke <at> foxmail.com>
Date: Wed, 14 Feb 2024 05:59:02 UTC
Severity: normal
Found in version 29.1
To reply to this bug, email your comments to 69116 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#69116
; Package emacs
.
(Wed, 14 Feb 2024 05:59:02 GMT) Full text and rfc822 format available.LdBeth <andpuke <at> foxmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Wed, 14 Feb 2024 05:59:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: LdBeth <andpuke <at> foxmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 29.1; plstore.el failed when save using EasyPG Date: Tue, 13 Feb 2024 23:37:23 -0600
It seems to be the residue of bug #63256, with GnuPG 2.4.4 and set epg to use loopback pinentry the plstore.el still failed to encrypt file. The result below is produced without using init file on macOS. $ gpg2 --version gpg (GnuPG) 2.4.4 libgcrypt 1.10.3 Copyright (C) 2024 g10 Code GmbH License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: /Users/ldbeth/.gnupg Supported algorithms: Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2 $ cat .gnupg/gpg-agent.conf allow-loopback-pinentry default-cache-ttl 34560000 max-cache-ttl 34560000 (setq epg-pinentry-mode 'loopback) (require 'plstore) (setq store (plstore-open (expand-file-name "~/foo"))) (plstore-put store "as" '(:host "bar.example.kk") '(:user "ba")) (plstore-save store) Debugger entered--Lisp error: (error "Process epg not running: exited abnormally with co...") process-send-string(#<process epg> "abcdef\n") (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) encoded-passphrase-with-new-line)) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) encoded-passphrase-with-new-line))) (progn (setq passphrase (funcall (car (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 10))) context epg-key-id (cdr (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system ...))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 16)) encoded-passphrase-with-new-line)))) (condition-case nil (progn (setq passphrase (funcall (car (progn (or (progn ...) (signal ... ...)) (aref context 10))) context epg-key-id (cdr (progn (or (progn ...) (signal ... ...)) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line ...)) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn ...) (signal ... ...)) (aref context 16)) encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg- context context))) (aref context 16))))) (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car (progn (or ... ...) (aref context 10))) context epg-key-id (cdr (progn (or ... ...) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line ...) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or ... ...) (aref context 16)) encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-w ith-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line))) (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car (progn ... ...)) context epg-key-id (cdr (progn ... ...)))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn ... ... ...) (progn ... ...)) (process-send-string (progn ... ...) encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (progn (or (progn ...) (signal ... ...)) (aref context 16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line)))) (progn (if (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 10)) nil (error "Variable `passphrase-callback' not set")) (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car ...) context epg-key-id (cdr ...))) (if passphrase (progn (setq passphrase-with-new-line ...) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system ... ...) (process-send-string ... encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '... (epg-context-result-for context ...))) (delete-process (progn (or ... ...) (aref context 16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line))))) (if (and epg-key-id (string-match "\\`passphrase\\." string)) (progn (if (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 10)) nil (error "Variable `passphrase-callback' not set")) (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall ... context epg-key-id ...)) (if passphrase (progn ... ... ... ... ...))) (quit (epg-context-set-result-for context 'error (cons ... ...)) (delete-process (progn ... ...)))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line)))))) epg--status-GET_HIDDEN(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer *epg-error*>) "passphrase.enter") funcall(epg--status-GET_HIDDEN #s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer *epg-error*>) "passphrase.enter") (if (and symbol (fboundp symbol)) (funcall symbol epg-context string)) (if (eq (progn (or (progn (and (memq (type-of epg-context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string))) (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn ...) (signal ... ...)) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn ...) (signal ... ...)) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn ...) (signal ... ...)) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or ... ...) (aref epg-context 12))) epg-context status string (cdr (progn (or ... ...) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point))) (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or ... ...) (aref epg-context 19)) 'edit-key) (funcall (car (progn ... ...)) epg-context status string (cdr (progn ... ...))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point)))) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn ... ...) 'edit-key) (funcall (car ...) epg-context status string (cdr ...)) (setq symbol (intern-soft ...)) (if (and symbol ...) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point))))) (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status ...) (string ...) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq ... ...) (funcall ... epg-context status string ...) (setq symbol ...) (if ... ...)) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point)))))) (save-current-buffer (set-buffer (process-buffer process)) (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let (... ... symbol) (if ... ...) (if ... ... ... ...) (setq epg-last-status ...))) (forward-line) (setq epg-read-point (point))))))) (if (buffer-live-p (process-buffer process)) (save-current-buffer (set-buffer (process-buffer process)) (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ... ... ... ...)) (forward-line) (setq epg-read-point (point)))))))) epg--process-filter(#<process epg> "[GNUPG:] NEED_PASSPHRASE_SYM 9 3 8\n[GNUPG:] INQUIR...") accept-process-output(#<process epg> 1) (while (eq (process-status (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16))) 'run) (accept-process-output (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) 1)) epg-wait-for-completion(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer *epg-error*>)) (progn (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context)) (unwind-protect (progn (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context)) (epg-delete-output-file context) (delete-file input-file) (epg-reset context)) (let ((input-file (make-temp-file "epg-input")) (coding-system-for-write 'binary)) (unwind-protect (progn (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context ...))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context)) (epg-delete-output-file context) (delete-file input-file) (epg-reset context))) epg-encrypt-string(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer *epg-error*>) "((\"as\" :user \"ba\"))\n" nil) (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not (local-variable-p 'plstore-encrypt-to (current-buffer))))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to (epg-list-keys context recipients))))) (let ((context (epg-make-context 'OpenPGP)) (pp-escape-newlines nil) (recipients (cond ((listp plstore-encrypt-to) plstore-encrypt-to) ((stringp plstore-encrypt-to) (list plstore-encrypt-to)))) cipher) (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 4 t))) (epg-context-set-passphrase-callback context (cons #'plstore-passphrase-callback-function plstore)) (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not (local-variable-p ... ...)))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to (epg-list-keys context recipients))))) (goto-char (point-max)) (insert ";;; secret entries\n" (pp-to-string cipher))) (if (plstore--get-secret-alist plstore) (let ((context (epg-make-context 'OpenPGP)) (pp-escape-newlines nil) (recipients (cond ((listp plstore-encrypt-to) plstore-encrypt-to) ((stringp plstore-encrypt-to) (list plstore-encrypt-to)))) cipher) (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 4 t))) (epg-context-set-passphrase-callback context (cons #'plstore-passphrase-callback-function plstore)) (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not ...))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to (epg-list-keys context recipients))))) (goto-char (point-max)) (insert ";;; secret entries\n" (pp-to-string cipher)))) plstore--insert-buffer([#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) (save-current-buffer (set-buffer (plstore--get-buffer plstore)) (erase-buffer) (plstore--insert-buffer plstore) (save-buffer)) plstore-save([#<buffer plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) eval((plstore-save store) nil) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp)
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.