开启多个Emacs daemon

我们都知道使用 emacs --daemon 可以让你的Emacs打开更快,但是其实daemon是可以穿入参数的,可以使用

emacs --daemon=coding;
emacs --daemon=misc;

连接时

alias e="emacsclient -t --socket-name=coding"
alias ec="emacsclient -c --socket-name=coding &"
alias em="emacsclient -c --socket-name=misc &"
alias se="SUDO_EDITOR=\"emacsclient -t --socket-name=coding\" sudo -e"

关闭

emacsclient -e --socket-name=coding '(kill-emacs)';
emacsclient -e --socket-name=misc '(kill-emacs)';

pros

  • 当处理一些任务时Emacs经常卡死,就需要重启,那么很多与这个任务无关的任务也被迫中断。比如可以把Gnus,IRC 等任务放在另一个Emacs进程里。
  • 多个任务间不会相互污染buffer列表(使用过perspective-mode,it sucks)。

cons

  • 需要更多的内存
  • 需要管理不同的守护进程

PS:

如果遇到处理frame的问题,比如字体和外观,也许这个链接能帮的上忙

11 个赞

我正想使用这种daemon模式,以达到不同项目文件在不同的emacs 窗口里打开,而且也方便指定不同窗口。 现在遇到最大的问题是emacsclient打开窗口后,init.el里的很多设定(比如快捷键等)没有起作用,也包括楼主所说的字体,请问有啥简便的方式解决吗?

PS,想提问前搜了一下居然发现了这个好多年前的老帖子,本站威武!

找到一个原因,emacs daemon模式不能加载theme,否则导致出错init.el实际没有完全加载。把load-theme从init.el里去除 再按照下面链接配置就能用了