それぞれ独自のサーバーを持つ複数のEmacsインスタンス?


7

私のセットアップでは、ローカルマシンで複数の(GNU)Emacsインスタンスを同時に実行しています。現在取り組んでいるプロジェクトまたはタスクごとに1つです。

すでに実行中のEmacsインスタンスで、たとえば次のようなコマンドでバッファを開けるようにしたい

$ emacs file.txt

これに対する通常推奨される解決策は、Emacsをサーバーモードで実行することです。ただし、デフォルトでは常に1つのemacsclientしかアクティブにできないことを理解しているため、これは複数のEmacsインスタンスの使用と競合します。

既存の(おそらく複数の)Emacsインスタンスでバッファーとしてファイルを開くにはどうすればよいですか?最後の目標は、現在のワークスペース(Compiz)にあるEmacsインスタンスでファイルを開くか、そのようなインスタンスがまだ存在しない場合は作成することです。


タイトルを少し編集しました。複数のEmacsサーバーを同時に実行する方法について質問しているようです。間違えた場合は訂正してください。
マラバルバ2014

1
ここでの回答は興味深いものになる可能性があります:emacs.stackexchange.com/q/41/93
nispio

その場合は、答えを削除します。なぜなら、彼は異なるワークスペースの異なるクライアントを求めていると思ったからです。
Boccaperta-IT 2014

@Malabarba正直よくわかりません!私が質問をより広く述べた理由は、「どうすれば複数のEmacsサーバーを持つことができますか?」という質問に答えるかどうかわからないためです。「コマンドラインから複数のEmacsインスタンスを作成し、そのうちの1つにバッファーとしてファイルを開くにはどうすればよいですか?」ただし、複数のサーバーを実行できるようにすることは、私の問題を解決する潜在的な方法になる可能性があると思います。
Felix Hoffmann

回答:


5

この答えは一般的な方法ですが、質問はあなたのものとは異なりました。

emacs --daemon=workspaceN組み合わせて使用emacsclient -s workspaceNして、ワークスペースNにemacsデーモンを作成できます。複数が必要な場合は、workspace1、workspace2などを実行します。デーモン名は完全に任意であり、任意の命名方式を使用できます。

現在どのワークスペースにいるのかを判断することはおそらく困難であり、どのように判断するのかわかりません。環境変数がある場合は、シェルのエイリアスまたは関数でうまくいく可能性があります(シェル経由でのみ開く場合)。


1
答えを追加するserver-nameには、Emacsデーモンを使用せずに同じことを実行できるようにします。実行する前に設定してください(server-start)。の値に応じた値に設定しcommand-line-argsて、--daemon呼び出しに似たものをシミュレートすることができます
Sigma

1
@シグマありがとう!一方で--daemonソリューションは、原則的に作業を行い、私は今、私の質問の最後の部分でいくつかのトラブルに実行しているよ「...またはそれが存在しない場合、このようなインスタンスを作成します。」私はパス-cするemacsclientかしないかのどちらかですが、間には何もないようです(私が必要とするでしょう)。解決策について詳しく説明してもらえますか?server-name実行前に設定するにはどうすればよいですかserver-start(変数がまだ存在しないため、set-variableはうまくいきません)。server-nameコマンドライン引数にdepedingを設定するinit.elソリューションは、まさに私が探しているものです。
Felix Hoffmann

(set-variable 'server-name "foo")私のために働いた。引用することを覚えていますserver-nameか?またserver-running-p、サーバーがすでに実行されているかどうかを確認するために使用できます。
J David Smith

0

私の知る限り、サーバーモードでEmacsを使用して、探しているものを取得できます。多くの場合、異なるワークスペースに複数のemacsclientインスタンスがあるため、たとえば、ワークスペース間でバッファを簡単に共有できます。

これが私がすることです:

  • emacs --daemon私から始める.xinitrc
  • emacsclient -cワークスペース2で実行
  • emacsclient -tワークスペース1で実行する(通常、フルスクリーンtmuxを保持する場合)

各インスタンスのバッファを編集して、用語からGUIに、またはその逆にすばやく移動できます。

コンソールとGUI用の2つの個別のemacsデーモンを開始することで、より多くのアプローチを見つけることができます


これは別の質問に答えます。異なる場所から同じEmacsインスタンスにアクセスすることです。しかし問題は、複数のEmacsインスタンスを持つことです。
Gilles「SO-邪悪なことをやめよう」14

1
はい、回答後にトピックのタイトルが変更されたため、質問は複数のemacsclientに関するものだと思いました。ごめんなさい。
Boccaperta-IT 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.