使用 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, 啥问题也没有。

posted @ 2022-02-20 08:42  fmcdr  阅读(222)  评论(0编辑  收藏  举报