ker
2020 年9 月 3 日 08:33
1
问题是这样的: 当我在命令行下使用 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
ker
2020 年9 月 3 日 08:45
2
当前已使用的临时解决方法是: emacsclient -nw --socket-name=/tmp/emacs0/server
cireu
2020 年9 月 3 日 08:50
3
用systemd管理的emacs daemon需要按user service启动, 不然是找不到的daemon的(emacs不会尝试连接root用户的daemon)
ker
2020 年9 月 3 日 08:53
5
不理解什么是按 user service 启动, 我一直是在 root 下使用的
cireu
2020 年9 月 3 日 09:15
6
systemctl --user enable emacs
ker:
我一直是在 root 下使用的
连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下用过。
ker
2020 年9 月 3 日 09:20
8
我像这样启动直接报错. 是的, emacsclient 也是在 root 下启动的
ker
2020 年9 月 3 日 09:27
10
我知道报错原因了. 之前我按照 emacs.service 的提示, 复制了一份 emacs.service 到 ~/.config/systemd/user/ 下, 当我使用 systemctl --user start emacs
时, 用的就是这个文件. 当时用的还是 Type=nofity
所以报错了. 待我复制一份能正常启动的再尝试一下;
ker
2020 年9 月 3 日 09:39
11
按照你说的尝试了一下, 果然可以了. 请问就此原因, 你可以建议我阅读哪些材料呢