emacsclient 无法连接到 emacs-server

问题是这样的: 当我在命令行下使用 emacs --daemon 启用 emacs-server 时, 使用 emacsclient -nw 便可直接连接到 emacs-server 中; 但是当我使用 systemctl start emacs 时, 却显示

/usr/local/bin/emacsclient: can’t find socket; have you started the server? /usr/local/bin/emacsclient: To start the server in Emacs, type “M-x server-start”. /usr/local/bin/emacsclient: No socket or alternate editor. Please use:

   --socket-name
   --server-file      (or environment variable EMACS_SERVER_FILE)
   --alternate-editor (or environment variable ALTERNATE_EDITOR)

此时我必须要指定 socket-name 才能连接到 emacs-server.

我该如果做才能无需指定 socket-name 直接连接呢?

OS: CentOS 8

Emacs Version: 27.1

当前已使用的临时解决方法是: emacsclient -nw --socket-name=/tmp/emacs0/server

用systemd管理的emacs daemon需要按user service启动, 不然是找不到的daemon的(emacs不会尝试连接root用户的daemon)

不理解什么是按 user service 启动, 我一直是在 root 下使用的

systemctl --user enable emacs

连daemon的emacsclient也是在root用户下启动的?

不讲原因,只说解决办法:

mkdir -p ~/.config/systemd/user
cp /usr/lib/systemd/user/emacs.service ~/.config/systemd/user
systemctl --user enable emacs
systemctl --user start emacs

我在manjaro和arch上就这么做的。至于原因,自己查。

补充:我没直接在root下用过。

我像这样启动直接报错. 是的, emacsclient 也是在 root 下启动的

没有错误信息无法提供进一步帮助

我知道报错原因了. 之前我按照 emacs.service 的提示, 复制了一份 emacs.service 到 ~/.config/systemd/user/ 下, 当我使用 systemctl --user start emacs 时, 用的就是这个文件. 当时用的还是 Type=nofity 所以报错了. 待我复制一份能正常启动的再尝试一下;

按照你说的尝试了一下, 果然可以了. 请问就此原因, 你可以建议我阅读哪些材料呢