6

OSXでのemacs23のセットアップに関して誰かが推奨事項があるのだろうか。私はしばらくの間Linux/Windowsを使用していて、emacsの多くのインスタンスを開くだけで、それらは自己完結型でした。たとえば、別々のフレームに2つの別々のファイルがあり、それぞれが独自のR、Python、シェルを実行しています。これは嫌われていると思います(?)-しかし、それは私が愛した各スクリプトファイルの作業ディレクトリを別々に保ちました。

.emacsファイルで設定(server-start)することにはいくつかの利点があることを理解しており、「Emacs」ではなく「emacsclient」を呼び出すことが現在推奨されている方法です(?)。私はこれがApplescriptを通して起こるのを容易にするこのスレッドを見つけました: Emacs 23、OS X、multi-ttyおよびemacsclient

しかし、これがそれを回避する唯一の方法であるかどうか疑問に思います-OS Xで2つのemacsインスタンスを開くと、エラーが発生します:

** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x3803, name = 'org.gnu.Emacs.ServiceProvider'

しかし、新しいフレームを開くと、ファイルを編集できます。OS Xのvimには、vimの複数のインスタンスを起動できる「mvim」と呼ばれるものがあることを理解していますが、emacsにも同様のものがありますか?長い質問をしてすみません-要約すると、これらは私があなたの専門知識を求めたい質問だと思います:

(1)「emacsclient」は専門家のやり方ですか?(2)必ずしもそうではない場合、OSXで実行されているemacs23(フレームだけでなく)の複数のインスタンスを取得する方法はありますか?

ありがとう!

4

6 に答える 6

7

あなたの質問に間接的に答えさせてください。

ご存じのemacsclientように、ユーザーが Emacs の外部から既存のEmacs でドキュメントを開くことができるようにするサービスを提供します。これが専門家の「道」ですか?専門家によります。私は Emacs のヘビー ユーザーですが、決して使用しませんemacsclient。なんで?そもそも私が Emacs を離れることはないからです。私が実行するすべてのシェルは Emacs 内にあり (自作のscreenemacsclientパッケージを使用)、Emacs でメールを読むなどです。コマンド ラインで入力する理由はありません。

あなたの使用モデルは、どのプロセスとファイルが一緒に使用されているかを追跡しやすくするために、複数の Emacsen を実行することを好むようです。そして、それは理にかなっています。必要に応じて、 1 つのEmacsですべてを行うこともできますが、使用モデルにいくつかの変更が必要になる場合や、複数のインタープリター/シェルなどを好みに合わせて管理できるようにするためのカスタマイズが必要になる場合があります。

したがって、Emacs の複数のインスタンスを実行するのが好きな場合は、是非ともそれを続けてください。

2 番目の質問に関しては(server-start)、.emacs にあることが問題を引き起こしているようです。おそらく、2 つの Emacsen が同じポートを使用しようとして競合しているためです。サーバーの起動に関するドキュメントを確認し、.emacs からその行を削除し、代わりに--daemonコマンド ライン オプションを使用してサーバーを一度起動してください。

次に、コマンド ラインで、新しい emacs を起動するか ( と入力emacs)、起動したサーバーに接続するか( と入力) を選択できますemacsclient

于 2009-08-12T03:55:52.467 に答える
7

emacs の複数のインスタンス(フレームではなく) が必要な場合は、ターミナル プロンプトで次のコマンドを使用します。

/Applications/Emacs.app/Contents/MacOS/Emacs &

(Generic form for any app) /Path_To_Application.app/Contents/MacOS/Application &
于 2011-03-30T18:14:32.513 に答える
4

別のインスタンスを起動し、Emacs ウィンドウを上げてフォーカスを与える単純なシェル スクリプトを次に示します。

#!/bin/bash

/Applications/Emacs.app/Contents/MacOS/Emacs \
    --eval '(select-frame-set-input-focus (nth 0 (frame-list)))' \
    "$@"

ノート:

  • このスクリプトは、私が慣れ親しんでいる Linux 上の emacs のように emacs を動作させます。
  • アクティブにするフレームを識別するには、「(nth 0 (frame-list))」よりも良い方法がおそらくありますが、上記のスクリプトは私にとって正しいことを行います。
  • .emacs ファイルに「(server-start)」がありません。
于 2012-11-28T05:07:51.890 に答える
1

サーバーがまだ実行されていない場合にのみ、 .emacsで次のようなものを使用してserver-start を呼び出します。

(if (file-exists-p
 (concat (getenv "TMPDIR") "emacs"
         (number-to-string
          (user-real-uid)) "/server"))
nil (server-start))

次に、.zshrcecにいくつかの変更を加えて、シェルからエディター コマンドとして無意識に実行できるようにします。

# I use the Emacs package from emacsformacosx.com
alias emacs='open -a emacs'
alias emacsclient='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'
alias ec='emacsclient -a /Applications/Emacs.app/Contents/MacOS/Emacs'
export EDITOR='ec'
于 2011-03-09T09:53:54.540 に答える
1

複数の emacs インスタンスを同時に開くことができるこのシェル スクリプトを作成しました。

インストールするには、emacs-ideスクリプトを/usr/local/bin/または の任意のディレクトリにコピーするだけ$PATHです。

次のように、複数のファイルまたはディレクトリで複数の Emacs インスタンスを実行できます。

emacs-ide ~/Projects/project-1
emacs-ide ~/Projects/project-2

このスクリプトは、ウィンドウの名前も、編集中のディレクトリ (プロジェクト) またはファイルに一致するように設定します。

于 2012-11-03T16:14:34.290 に答える