d3v*_*vin 6 emacs elisp dot-emacs emacsclient
我最近在启动时开始以守护进程模式运行emacs.通过GUI客户端(Emacs.app)连接似乎正确加载自定义.但是,emacsclient在终端中连接通道不会.
尝试M-x customize-variable在终端后出现第一个症状,产生以下信息:
无法保存自定义项:init文件未完全加载
这可能emacs --daemon与根据此忽略所有与X11相关的选项有关.虽然在我的情况下会出现,而不是忽略与X11相关的选项,但emacsclient无法加载后续选项.
在研究了问题和可能的解决方案之后,我一直无法确定一种防弹方法来解决这个问题.我已经看到了建议创建一个不同的init文件和相应的bash别名的建议,emacsclient --eval每次想要在终端中打开emacs缓冲区时都会将其传递给它.我已经看到其他人在他们的主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>
Run Code Online (Sandbox Code Playgroud)
这是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=""
Run Code Online (Sandbox Code Playgroud)
有时我也想从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"
Run Code Online (Sandbox Code Playgroud)
emacsclient不会导致初始化文件的任何部分被读取。也就是说,在您的用例中,您需要设置 init 文件,使其涵盖所有用例(文本终端和 GUI 框架),因为无论如何您可以同时拥有多种不同类型。
该Cannot save customizations: init file was not fully loaded消息表明加载时出现错误~/.emacs,因此请检查 的内容*Messages*以查看错误是什么并尝试修复它。
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |