4

最近、Emacs 23 (OS X Leopard 上) をインストールし、emacs サーバーを試してみました。私は両方の方法を試しました: (1) .emacs ファイルに (server-start) を入れ、(2) 端末で emacs --daemon を実行します (別々の試行で、同時にではありません)。どちらの場合でも、すでに emacs フレームを開いているときに、emacsclient -t、-tty、または -nw を使用して OS X ターミナルで別のファイルを開こうとすると、ファイルはターミナルではなく、常に既存のフレームで開きます。説明された:

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 は期待どおりに機能します。何が起こっているのか、何か考えはありますか?

どうもありがとう!-スティーブン

4

4 に答える 4

5

正しい「emacsclient」バイナリを使用していますか? が必要になりますが/Applications/Emacs.app/Contents/MacOS/bin/emacsclient、デフォルトではパスにはありません。emacsclientコマンド ラインからベアを呼び出すだけでemacsclient、Apple が出荷している Emacs 22.1 から を取得できます。

実行emacsclient --versionしてこれを取得した場合:

$ emacsclient --version
emacsclient 22.1

あなたは正しいものを手に入れていません。

于 2009-08-14T09:39:41.520 に答える
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.app を Emacs Client.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) も使用できます。

于 2009-08-26T11:13:17.347 に答える
2

バイナリをインストールした場合はEmacs.app、パッケージ内の実行可能ファイルを使用する必要があります。例えば:

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

binパッケージ内には次のディレクトリもあります。

$ cd /Applications/Emacs.app/Contents/MacOS/bin
$ ls -la
total 1488
drwxr-xr-x@ 19 ayman   admin     646 Aug 16 02:33 .
drwxr-xr-x@  5 ayman   admin     170 Aug 16 02:33 ..
-rwxr-xr-x@  1 ayman   admin   39704 Aug 16 02:33 b2m
-rwxr-xr-x@  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
-rwxr-xr-x@  1 ayman   admin  122124 Aug 16 02:33 ebrowse
-rwxr-xr-x@  1 ayman   admin   72188 Aug 16 02:33 emacsclient
-rwxr-xr-x@  1 ayman   admin  232344 Aug 16 02:33 etags
lrwxr-xr-x   1 ayman   admin      19 Aug 24 12:54 fakemail -> ../libexec/fakemail
-rwxr-xr-x@  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
-rwxr-xr-x@  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この投稿の時点でプッシュしています。

于 2009-08-24T20:17:51.493 に答える
1

私は OS X で定期的に emacs を使用するわけではありませんがemacs --daemon、ブート/ウィンドウ マネージャーの起動時に開始し、プロセスをバックグラウンドで実行し続けています。これはオプションではありませんか?

*shrc ファイルで次のエイリアスを使用します。

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

私はほとんどの場合、ウィンドウ マネージャー (QuickKeys や Quicksliver のようなものを考えるかもしれません) のバインドから emacs フレームを生成していることを認めなければなりませんが、トリガー:emacsclient -c -nまたはemacs -n -e '(make-remember-frame)'、新しい org-remember フレームをトリガーするもの...

お役に立てれば。

于 2009-10-09T16:14:24.653 に答える