2009-08-12 125 views
4

我最近安装了Emacs 23(在OS X Leopard上)并试用了emacs服务器。我尝试了两种方法:(1)将(服务器启动)放入我的.emacs文件中;(2)在终端上运行emacs --daemon(分别进行试用;不能同时运行)。无论哪种情况,当我已经打开一个emacs框架并尝试使用emacsclient -t,-tty或-nw在OS X终端中打开一个单独的文件时,该文件始终在现有框架中打开,而不是在终端中打开描述:Emacs 23,emacsclient参数?

http://www.gnu.org/software/emacs/manual/html_node/emacs/emacsclient-Options.html

http://emacs-fu.blogspot.com/2009/02/emacs-daemon.html

然而,emacsclient预期-c工作。你有什么想法可能发生什么?

非常感谢! -Stephen

+0

当您使用“emacs -Q”启动主emacs,然后在那里执行(服务器启动),然后运行“emacsclient -nw”时会发生什么? – Yoo 2009-08-12 10:20:08

+0

感谢您的回应! ...但同样的事情,emacsclient -nw somefile在emacs -Q创建的相同框架中打开某个文件... – hatmatrix 2009-08-12 10:34:10

+0

您可能会在此邮件列表中获得一个答案[email protected],或者也许是从Emacs提交错误'Mx report-emacs-bug'。 – 2009-08-13 16:11:42

回答

5

感谢所有为您的建议和回应 - 我想我的解决办法是添加以下到我的.bash_profile:

## --- emacs --- 
alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs' 

## --- emacs client --- 
## adapted from http://philipweaver.blogspot.com/2009/08/emacs-23.html 

# start a windowed frame 
alias ec="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -c -a /Applications/Emacs.app/Contents/MacOS/Emacs" 

# start a terminal frame 
alias em="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -t -a /Applications/Emacs.app/Contents/MacOS/Emacs -nw" 

# do not start a new frame 
alias ea="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -a /Applications/Emacs.app/Contents/MacOS/Emacs" 

我试着使用emacs --daemon和Emacs的客户更换Emacs.app。应用程序图标,通过

http://www.cubiclemuses.com/cm/articles/2009/07/30/emacs-23-for-os-x/

,但(1)守护进程似乎并不加载许多我的.emacs定制和(2)当我将退出Emacs的客户端也将完全退出Emacs和产生错误的建议。 ..

所以我的解决方案是使用上面定义的bash别名;将(server-start)行添加到我的.emacs文件中,并将Emacs.app图标添加到我的OS X扩展坞,以便我可以使用图标或其中一个别名来启动emacs,并打开新文件在运行的实例中,我也可以在Emacs中使用上面的别名或Cx Cf(或Cx b)。

5

您确定您使用的是正确的'emacsclient'二进制文件吗?您需要/Applications/Emacs.app/Contents/MacOS/bin/emacsclient,并且默认情况下,它将不是在您的路径中。如果您只是从命令行调用一个纯粹的emacsclient,则会从Apple发布的Emacs 22.1中获得emacsclient

如果运行emacsclient --version,并得到这个:

$ emacsclient --version 
emacsclient 22.1 

你没有得到正确的。

+0

谢谢...我得到emacsclient 23.1,所以看起来并不是这样的情况 – hatmatrix 2009-08-26 06:48:01

2

如果您安装了二进制Emacs.app,则应该使用包内的可执行文件。例如:

$ /Applications/Emacs.app/Contents/MacOS/Emacs -nw 

还有一个bin目录里面包:

$ cd /Applications/Emacs.app/Contents/MacOS/bin 
$ ls -la 
total 1488 
[email protected] 19 ayman admin  646 Aug 16 02:33 . 
[email protected] 5 ayman admin  170 Aug 16 02:33 .. 
[email protected] 1 ayman admin 39704 Aug 16 02:33 b2m 
[email protected] 1 ayman admin 236412 Aug 16 02:33 ctags 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 cvtmail -> ../libexec/cvtmail 
lrwxr-xr-x 1 ayman admin  21 Aug 24 12:54 digest-doc -> ../libexec/digest-doc 
[email protected] 1 ayman admin 122124 Aug 16 02:33 ebrowse 
[email protected] 1 ayman admin 72188 Aug 16 02:33 emacsclient 
[email protected] 1 ayman admin 232344 Aug 16 02:33 etags 
lrwxr-xr-x 1 ayman admin  19 Aug 24 12:54 fakemail -> ../libexec/fakemail 
[email protected] 1 ayman admin 7288 Aug 16 02:26 grep-changelog 
lrwxr-xr-x 1 ayman admin  15 Aug 24 12:54 hexl -> ../libexec/hexl 
lrwxr-xr-x 1 ayman admin  19 Aug 24 12:54 movemail -> ../libexec/movemail 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 profile -> ../libexec/profile 
[email protected] 1 ayman admin 3977 Aug 16 02:26 rcs-checkin 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 rcs2log -> ../libexec/rcs2log 
lrwxr-xr-x 1 ayman admin  21 Aug 24 12:54 sorted-doc -> ../libexec/sorted-doc 
lrwxr-xr-x 1 ayman admin  28 Aug 24 12:54 update-game-score -> ../libexec/update-game-score 
lrwxr-xr-x 1 ayman admin  17 Aug 24 12:54 vcdiff -> ../libexec/vcdiff 
$ 

如果你正在做的所有命令行,则可以仅使用更新您的终端版本MacPort:

$ sudo port install emacs-app 

其中推送emacs-app @23.0.0_NS-9.0rc3_1截至本贴子时。

+0

谢谢。我通过我的bash启动文件中的别名命令将'emacs'和'emacsclient'映射到Emacs.app二进制文件。我不想在我的机器上复制emacs的副本,但这可能是要走的路,以便我可以通过终端打开多个emacs实例... – hatmatrix 2009-08-26 06:50:52

1

我并不经常在OS X上使用emacs,但我已经着手在启动/窗口管理器启动时刚启动emacs --daemon,使进程在后台运行。这不是一种选择吗?

我用下面的别名我* SHRC文件:

EDITOR='emacsclient -t' 
alias e='emacsclient -n' 
alias ew='emacsclient -c -n' 
alias et='emacsclient -t' 

尽管我必须承认,我主要是从我的窗口管理器绑定产卵emacs的帧(你可以考虑像QuickKeys或Quicksliver),其触发器:emacsclient -c -nemacs -n -e '(make-remember-frame)'这触发了一个新的组织记忆框架...

希望这有助于。