使用 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 @   fmcdr  阅读(273)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示