当文件被修改时,emacs org-encrypt-entry会卡住。

4
macOS Ventura 13.4 (22F66)
GNU Emacs 28.2 (build 1, x86_64-apple-darwin22.4.0, NS appkit-2299.50 Version 13.3.1 (a) (Build 22E772610a)) of 2023-05-31
org-mode 9.5.5
使用homebrew emacs-plus@28公式安装
于2023年5月31日更新了homebrew上的emacs。
每当我尝试在更改并需要重新加密的org条目后加密时,org-encrypt-entry函数就会卡住不加密。这是在升级到最新的homebrew上的emacs之后发生的。
org-decrypt-entry正常工作,我输入对称密码后它解密到缓冲区。
此外,如果文件没有更改,并且我使用C-x C-s保存文件,它可以正常保存到磁盘。
只有当文件更改且需要重新计算加密并再次输入对称密码时,它才会卡在“正在保存文件/path/to/file/file.org”。
M-x org-decrypt-entry的行为也相同。
尝试过:M-x org-encrypt-entry
期望出现密码输入对话框,并将加密文件保存到磁盘上。
3个回答

7
根据这个commit,已知在GnuPG v2.4.1中会发生这种情况。
您可以尝试降级GnuPG,或者
(fset 'epg-wait-for-status 'ignore) ;; Uncertain if there are any side effects.

降级到gnupg 2.2后,一切都正常。谢谢! - Carlo Tambuatco
如果这对您有帮助,请接受它 ;) - Tianshu Wang
1
使用此脚本:https://gist.github.com/sankalp-khare/94fee1727ec5d199018be225127510d2像这样运行 ./switch-gnupg.sh 2.4.0 来在您的Homebrew设置中切换到2.4.0版本。它还会将该版本固定,以便后续的brew upgrade不会将您回滚到最新版本。 - Sankalp
降级 gpg 对我有用。忽略等待状态没有帮助。 - René Steetskamp
1
epg-wait-for-status选项适用于v2.4.3(撰写时Homebrew中gnupg的当前版本)。 - undefined

2

这里也遇到了同样的问题。正如Tianshu Wang所提到的,问题出在当前的mac上的GnuPG版本2.4.1。我通过降级我的mac上的GnuPG软件包来解决了这个问题。

检查GnuPG的版本:

$ brew info gpg
==> gnupg: stable 2.4.1 (bottled)
GNU Pretty Good Privacy (PGP) package
[..]

卸载此版本
$ brew uninstall --ignore-dependencies gpg

选项--ignore-dependencies对我来说是必需的,因为我使用需要GnuPG的pass
现在安装一个旧版本的软件包。
$ brew install gnupg@2.2

我们到了
$ gpg --version
gpg (GnuPG) 2.2.41
[..]

最后,你需要告诉emacs新的gpg二进制文件的位置。我使用Doom,所以我在~/.config/doom/config.el中写了一行代码custom-set-variables ...。
(require 'org-crypt)
(require 'epa-file)
(custom-set-variables 
  '(epg-gpg-program "/opt/homebrew/opt/gnupg@2.2/bin/gpg")
)
(epa-file-enable)
(org-crypt-use-before-save-magic)
(setq org-tags-exclude-from-inheritance (quote ("crypt")))
(setq org-crypt-key nil)

使用~/.config/emacs/bin/doom sync命令并重新启动Emacs,加密和解密一切都正常工作。

你还可以使用这个脚本:https://gist.github.com/sankalp-khare/94fee1727ec5d199018be225127510d2比如,执行 ./switch-gnupg.sh 2.4.0 可以将版本切换到 2.4.0,在你的 Homebrew 设置中。它还会锁定该版本,以防止后续的 brew upgrade 将你恢复到最新版本。 - Sankalp
你还可以使用这个脚本:https://gist.github.com/sankalp-khare/94fee1727ec5d199018be225127510d2像这样运行 ./switch-gnupg.sh 2.4.0 来切换到版本2.4.0在你的Homebrew设置中。它还会锁定该版本,以防止后续的brew upgrade将你带回最新版本。 - undefined

0
问题在gnupg 2.4.3版本中仍然存在。
 brew info gpg
==> gnupg: stable 2.4.3 (bottled)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接