我最近开始在启动时以守护程序模式运行emacs。通过GUI客户端(Emacs.app)连接似乎可以正确加载自定义项。但是,不能通过Terminal中的emacsclient连接。

在Terminal中尝试M-x customize-variable后出现了第一个症状,并产生了以下消息:



这可能与emacs --daemon无关,而忽略了所有与X11相关的选项according to this。尽管在我看来,emacsclient不会忽略与X11相关的选项,而无法加载后续选项。

在研究了问题和可能的解决方案之后,我一直无法确定用于解决此问题的防弹方法。我看到了创建一个不同的init文件和相应的bash别名的建议,每次有人要在Terminal中打开emacs缓冲区时,该别名都会将其传递给emacsclient --eval。我已经看到其他人在其主init文件中使用if-else语句来处理与X11相关的选项。但是在走一条路之前,我想知道是否有一种规范的方式来解决这个问题,而我却以某种方式忽略了这一点(或者如果我只是在某个地方犯了一个错误)。

忠告,批评和技巧将不胜感激。

编辑以添加:
* GNU Emacs 24.3.1
* emacsclient 24.3
*两者均通过OS X 10.9上的自制软件安装

这是LaunchAgent:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>emacsdaemon</string>
  <key>ProgramArguments</key>
  <array>
    <string>/opt/boxen/homebrew/bin/emacs</string>
    <string>--daemon</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>ServiceDescription</key>
  <string>Emacs Daemon</string>
  <key>UserName</key>
  <string>my_name</string>
</dict>
</plist>

这是dotfile配置:
# relevant lines of .zshrc:
alias emacs="/opt/boxen/homebrew/bin/emacsclient -nw"
# set emacsclient as default editor
export EDITOR="emacsclient"
# use only emacscilent
export ALTERNATE_EDITOR=""

有时我也喜欢从tmux中启动emacs:
# relevant lines of .tmux.conf:
# open emacs inside of tmux in a new window
# hat tip: http://perlstalker.vuser.org/blog/2012/10/16/emacsclient-and-tmux/
bind-key y   new-window -n "emacs" "/opt/boxen/homebrew/bin/emacsclient -nw"

最佳答案

emacsclient不会导致初始化文件的任何部分被读取。 IE。在用例中,您需要设置init文件,使其涵盖所有用例(用于文本终端和GUI框架),因为无论如何您可以同时具有多种不同的类型。
Cannot save customizations: init file was not fully loaded消息指示在加载~/.emacs时发出了错误信号,因此请检查*Messages*的内容以查看错误所在并尝试解决。

09-26 17:21