all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: LdBeth <andpuke@foxmail.com>
To: 69116@debbugs.gnu.org
Subject: bug#69116: 29.1; plstore.el failed when save using EasyPG
Date: Tue, 13 Feb 2024 23:37:23 -0600	[thread overview]
Message-ID: <tencent_3C1B7B7789A3580F06C6B80EA4D5E35F9906@qq.com> (raw)

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-strin
 g (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-resul
 t-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 (p
 rogn (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 enco
 ded-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 passph
 rase (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-ke
 ys 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-encryp
 t-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)






                 reply	other threads:[~2024-02-14  5:37 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tencent_3C1B7B7789A3580F06C6B80EA4D5E35F9906@qq.com \
    --to=andpuke@foxmail.com \
    --cc=69116@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.