Bug: doom + emacs-plus28 在ssh情况下无法用dried删除文件

在使用doom和emacs-plus时尝试用dried删除文件(D in dired buffer)会出现报错

似乎是它在使用本地的finder来删除远程文件? 这个bug有意思的地方在于只有用doom加上emacs-plus28才能触发. 目前我尝试过:

1 仅用emacs-plus无bug

2 doom 加上emacs-mac 或者emacs-plus29无bug

所有尝试都基于原始配置,doom的配制是直接用doom install生成的.

因为无法确定到底是哪出了问题,也没办法报bug,不知道有没有大佬能帮忙复现测试一下。

测试过程:

如果使用的是emacs plus28加上doom:通过tramp连接到远程, space o - 打开dired buffer, 用D删除一个文件。这样就能看到上图中的bug

感觉有动力去做这个测试的人不多啊。。。emacs-plus 和 emacs-mac 使用起来有啥区别?我一直用 emacs-mac。

因为 Doom Emacs 设置了

;; Use system trash for file deletion.
(setq delete-by-moving-to-trash t)

并且在 doomemacs/config.el at b395bd5392dd6ca88b230102363797b47b8f6991 · doomemacs/doomemacs · GitHubsystem-move-file-to-trash 设置为 osx-trash-move-file-to-trash,从而导致在 tramp 中无法使用,直接提 issue 就好了

自行 Fix 的方式是取消 system-move-file-to-trash 的定义,或者自行定义一个:

  ;; see document of `move-file-to-trash'
  (defun system-move-file-to-trash (filename)
    (process-file-shell-command
     (format "trash %S" (file-local-name filename))))
1 个赞

太强了,我去提个issue

哈哈,就是想着有类似配置的人能顺手确定一下bug,结果大佬直接解决了. emacs-mac和plus没什么区别其实,但是有一些细微的设置要调整:p.

Emacs 30.0.50 加了 remote-file-name-inhibit-delete-by-moving-to-trash,默认为 nil, 这个值会覆盖delete-by-moving-to-trash,应该不会再影响 tramp 的使用了。

1 个赞

感谢告知

我本地远程都装了 trash-cli,然后直接定义 system-move-file-to-trash 就好了,倒是不会影响 tramp