我用一个python脚本运行emacsclient -e执行一个命令,default-directory竟然是脚本所在的文件夹,怎么才能是emacs当前buffer的default-directory?
(buffer-name) 是 “ server"
更多信息,用的是 xkeysnail
define_keymap(None, {
K("C-KEY_1"): launch(['emacsclient -e "(sane-term)" -s /tmp/emacs1000/server'])
}, "Global")
cireu
2
什么是当前buffer?不同的执行环境下有不同的当前buffer。对于emacsclient -e
,他的当前buffer是一个叫* server*
的buffer。如果想要cursor所在的window对应的buffer,用
emacsclient -e '(with-selected-window (selected-window) (with-current-buffer (current-buffer) ...))'
Server 执行命令的时候会创建一个临时 Buffer,它的当前目录来源于 emacsclient 调用的位置。
如楼上提到的,“当前 Buffer” 可能不存在?(比如 emacs --daemon 的话,“当前 buffer”是哪个?)
找到 Emacs 最近的 Buffer 的话,可以试试:
(window-buffer (selected-window))
这样貌似也行,不过意义不完全相同:
(car (buffer-list))
要在指定 Buffer 中执行,还需要用 with-current-buffer
。