我最近开始在启动时以守护程序模式运行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*
的内容以查看错误所在并尝试解决。