2009-08-12 65 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)'這觸發了一個新的組織記憶框架...

希望這有助於。