如何在 Emacs 中启动 Server 模式
1. Intro
快速启动 emacs 是一个问题:
- 个人体验
- 临时编辑(git-commit)
解决方法:emacs 的 server 模式。
2. Setup
2.1. 方法一
- 按如下命令启动 emacs(server-name可以省略,默认为 “server”):
emacs --daemon[=server-name]
- 有编辑需求时,用 emacsclient 启动:
# 图形界面 emacsclient -s server -n -c # 终端界面 emacsclient -s server -t
参数说明:-c 参数表示 gui 启动,-n 告诉程序不等待终端返回,跟 -c 参数结合使用;-s 选择 连接的服务器名,-t 表示在终端中启动。
2.1.1. 系统自启动
brew services start d12frosted/emacs-plus/emacs-plus@28
2.1.2. 打包成应用
- 打开 automator
- 选取 文档类型 为 应用程序
- 找到:运行 shell 脚本
- 界面的 传递输入 按钮选为 作为自变量
- 输入启动 emacs-client 的 shell 命令:
/usr/local/bin/emacsclient -s server -n -c "$@"
2.1.3. 遇到的问题
- 在 kitty 终端中用 -t 参数执行会报找不到 terminfo 的错误,在命令前指定环境变量 TERM=xterm-256color 解决问题。
- 由于 daemon 是在图形界面创建之前启动,可能会遇到一些界面跟配置不一致的问题。
2.2. 方法二
直接在一个 emacs 的实例中启动服务,该服务和这个实例共生共灭。
(unless (server-running-p) (server-start)) ;; 或者 (use-package server :ensure nil :hook (after-init . server-mode))
3. Comment
用了一段时间的方法一,但不时地出现一些小问题,而且在不同的系统上配置方法都不一样, 所以现在主要使用第二种方法。简单,方便,一致。