使用 emacs 服务器模式
启用 emacs 服务器模式
有几种方法可以达到目的,不过最简单的是用 systemd 启动。
systemctl --user enable emacs
systemctl --user start emacs
将 emacsclient 设为默认的编辑器
将以下内容保存为~/.local/share/applications/emacsclient.desktop
:
[Desktop Entry]
Name=Emacs (Client)
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -c -a "emacs" %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;Utility;
StartupWMClass=Emacs
系统主菜单里会出现 “Emacs (Client)” 条目。
然后进入所使用的桌面环境的设置中心,将 “Emacs (Client)”设为默认的编辑器。以我正在用的 Linux Mint 为例:
系统设置 -> 首选应用程序
将 “纯文本” 和 “源代码” 的默认程序都改为 "Emacs(Client)"。
解决在 Emacs Client 中无法切换 fcitx 输入中文的问题
cd ~/.config/systemd/user/default.target.wants/
rm -rf emacs.service
cp /usr/lib/systemd/user/emacs.service .
emacs emacs.service
在 [Service]
下面添加一行:
Environment="LC_CTYPE=zh_CN.UTF-8" "XMODIFIERS=@im=fcitx"
C-x C-s
C-x C-c
systemctl --user daemon-reload
systemctl --user restart emacs
随便找个文本文件双击试试看?
[后记]
经过一段时间的使用,发现用 systemd 启动的 emacs server 会忽视用户的环境变量,导致一些问题。比如在 Emacs 中无法启动某些外部程序,因为用户设置的 PATH 被无视了。
目前,我已经放弃用 systemd 来启动 emacs server,而是在桌面环境添加一条开机自动运行的命令 emacs --daemon
来启动 emacs server, 啥问题也没有。