Emacs-Lisp 中的异步复制文件和复制目录?

cjo*_*son 3 directory emacs file

Emacs Lisp是否存在可以复制文件和目录的函数(支持TRAMP)并且是异步执行的?

我的问题是,(copy-file)它会阻塞我的编辑器,直到他们完成为止,如果我使用远程服务器通过TRAMP(copy-directory)进行操作,则需要大约 5-10 秒才能继续。

cjo*_*son 5

我自己找到了答案,我 像这样使用emacs-async :

(async-start
    `(lambda()
        (copy-file ,local ,remote-path t t)
        ,local)
    (lambda(return-path)
        (message "Upload '%s' finished" return-path))))
Run Code Online (Sandbox Code Playgroud)

将您的路径放入变量local和中remote-path。对于目录,只需更改(copy-file)(copy-directory).

另外我认为你也可以使用emacs-deferred,但我还没有尝试过。