問題タブ [emacsclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
527 参照

emacs - EmacsサーバーはEmacsクライアントが指定したリモートファイルを編集できますか?

emacsclientsによって指定されたファイル が、サーバーのファイルシステムではなく、emacsclients のファイルシステムに対して相対的になるように、 emacs サーバーをセットアップしようとしています。たとえば、マシン「darkstar」にemacsサーバーをセットアップし、「brightstar」のemacsclientを介してこのサーバーに次のコマンドで接続するとします。

emacs サーバーは、brightstar ではなく darkstar で ~/fantastic ファイルを編集しようとします。私はこれの逆が好きです。私はあらゆる種類のこっけいな提案を受け入れます。

*背景メモ: さまざまなマシンで開いているすべてのバッファを追跡し、色の設定、バインドなどを追跡する emacs プロセスが必要です。このすべてを利用可能にして、任意のマシンで emacs を使用して複製したいと考えています。emacs サーバーはまさにこれを行っているように見えますが、クライアントのローカル ファイルを編集する機能はありません!

0 投票する
1 に答える
1539 参照

linux - emacsclientの背景をEmacsの背景として設定するには?

私は(私の.emacsで)持っています

そして、私は2つのバインディングを持っています:

exはターミナルでクライアントを開くのに問題なく動作しますが、フレームとして開きたいときは白い背景があります:(

暗い背景を使用する理由と方法を教えてください。

0 投票する
2 に答える
1526 参照

linux - emacsがフレームまたはターミナルにあるかどうかを確認する方法は?

この質問に基づく:emacsclientの背景をEmacsの背景として設定するにはどうすればよいですか?

フレームだけに背景が必要で、端末やコンソールには必要ありません。

これが私がコンソールの修正を追加しようとしている方法です

しかし、それではemacsclientのバックグラウンドを取得できません(フレームの場合でも)。たぶん、チェックはemacsclientでも実行されませんか?

基本的に、ターミナルとコンソールではなく、フレームでemacsclientに背景を追加したいと思います。

0 投票する
2 に答える
3297 参照

emacs - sudoと単一のデーモンを使用してルートファイルでemacsclientを使用する方法

私はいつもemacsをデーモンとして実行していますが、似たようなものを作りたいとき

rootが別のemacsを使用していて、2つのデーモンを実行したり、通常のemacsが単純なファイルをロードするのを待ったりしたくないので、それを行うことはできません。

emacsclientsudo /etc/make.confユーザーemacsクライアントでシステムファイルを編集するには、同様の解決策が必要です:)。

0 投票する
1 に答える
324 参照

macos - emacsclientの非ラテン語入力

フォアグラウンドモードで実行すると、Emacsは非ラテン入力を正しく挿入します。

emacs --damon+として実行するとemacsclient、狂気が始まります。文字を挿入する必要がある各キーストロークは、単語の選択、式のジャンプ、関数の選択などのアクションをもたらします。まるで(恐ろしい考えの)Vimのようです!

不足している構成オプションはありますか?

アップデート:

実際にそれを解決しました:M-x set-locale-environment RETRET

システム全体のロケール設定(UTF-8)を使用しない理由はまだ明らかではありません。

アップデート2:

はい、トランクに固定されています!それをしてくれた人に感謝します!

0 投票する
1 に答える
2855 参照

emacs - Emacs: new-frame と emacsclient -c を取得して、設定されたフレーム サイズを使用しますか?

私は StackOverflow を初めて使用しますが、Emacs を習得しようとしているときに私をいらいらさせた事実上唯一の問題について質問があります。

.emacs次のように、 Emacs のデフォルトのフレーム サイズを 70 行 80 列に設定するようにファイルを構成しました。

これは、Emacs の起動時に問題なく動作します。問題は、new-frameまたはemacsclient -cこれらの設定を使用して新しいフレームを起動したときに無視されることです。実行時にファイル内の設定を強制emacsclientnew-frameて読み取る方法はありますか?.emacs

編集:

これが私の.emacsファイルです:

0 投票する
2 に答える
6557 参照

emacs - コマンド ラインで emacs lisp 式を評価する

私はemacsの初心者です。RedHat Linux で emacs-24.1 を使用しており、elisp 式を評価しようとしています。私が emacs に実行させたいのは、emacs 自体を起動せずに elisp 式を評価することです。いろいろ試してる

emacs が式を評価しているかどうかはわかりませんが、コンソールに結果が表示されず、emacs ウィンドウが表示されます。次に試したのはこれ

Emacs クライアントはサーバーを予期しています。サーバーが見つからなかったため、エラーがスローされました (ソケットが見つからない、サーバーを起動できないなど)。そこで、サーバーを起動し(サーバー名はSERVER)、emacsclientを再度実行しました

今回は、emacs が式を評価し、結果をコンソールに出力しました。これは、emacs が既存のサーバーを使用して式を評価しているためです。サーバーが実行されていないときに問題が発生します。

今回は、コンソールでエラーが発生していません。-a (私の.emacsには(server-start)コマンドがあり、サーバー名はANOTHER_SERVERに設定されています)ため、Emacsは新しいウィンドウを起動しています。しかし、emacs はファイルを編集しようとしています (+ 2 3)。モードラインに表示されます。よくわかりません。emacsclient --help でこれが表示されました

emacsのマニュアルにはこう書かれています。

これを進める方法がわかりません。前述したように、私の目標は、emacs を起動せずに elisp 式を評価することです。出来ますか?

0 投票する
4 に答える
25367 参照

emacs - 他のマシンで Emacs サーバーと emacsclient を他のユーザーとして使用する

(start-server)既存の Emacs セッション内で呼び出した後emacsclient -c、(同じコンピューター上で) を使用して、そのサーバーに接続する新しいフレームを作成できることを知っていemacsclientます。 )。

私が見つけたドキュメントのほとんどは、「ローカルの Emacs にすばやくアクセスできるようにする」ユースケースに焦点を当てているため、まだ詳細を見ていないことが 2 つあります。

  1. 他のemacsclient -cユーザーが開始した Emacs サーバーにアクセスできますか? それとも、自分のユーザーが開始したセッションのみを検出するように組み込まれていますか?

  2. Emacs サーバーは (直接的または間接的に) リモート接続をサポートしていますか? emacsclient -cつまり、リモートマシンでの呼び出しがEmacs サーバーのローカル状態にアクセスできるようにする Emacs (おそらく SSH を含む) をセットアップする方法はありますか?

(まだ想像していない方のために説明すると、私が最終的にやりたいのは、上記の 2 つの手法を組み合わせて、基本的な共同編集サポートを提供することです。)


これは現実の問題なので、私が取り組んでいることは次のとおりです。

  • 必要な機能はすでに Emacs に組み込まれているはずです (23.3.1、64 ビット)。標準の Ubuntu リポジトリから Emacs 拡張機能に拡張することはできますが、そうしないほうがよいと思います。(悲しいことに、これはRudelを除外すると私は信じています。)
  • 新しいユーザーやユーザーのなりすましはありません。ソリューションは既存のユーザー アカウントのセットで動作する必要があり、ユーザーは他のユーザーになりすましてはなりません (たとえば、suまたはを介し​​てssh)。

違いがある場合、マシンはプライベート LAN 上にあり、OpenSSH クライアントとサーバーがインストール (および実行) されており、すべてのユーザーが (自分のアカウントで) すべてのマシンに接続できますが、共有ファイルシステムはありません。


それで、Emacsサーバーができるかどうか知っている人はいますか

  • 他のユーザーにアクセスを許可する、または
  • リモートアクセスを提供しますか?

編集

rwb の回答でコメントされているように、実行によってローカルで開かれている新しいウィンドウが、リモートのEmacs サーバー プロセスemacsclient -cによって実際に作成されていることは明らかです。つまり、サーバーで関連する動作をトリガーするだけです。通常、サーバーはローカル デスクトップにアクセスできないため、ディスプレイ設定が正しくないという問題が発生します (以下を参照)。ただし、次の一連のコマンドを使用すると、リモートの Emacs セッションに接続できるようになりました。emacsclient

1 つの端末で、1.22.333.44は次の IP アドレスですremotehost

次に、別の(同じマシン上で):

このemacsclientコマンドにより、リモート Emacs サーバー (詳細は で検索/tmp/server-file) が、リモート ホスト上の Emacs セッションと状態を共有するグラフィカルな Emacs ウィンドウ (ローカル ディスプレイ上) を開きます。

リモート Emacs サーバーは 経由で起動されたのでssh -X、SSH は「偽の」ディスプレイ経由で私のローカル ディスプレイへのアクセスを提供し:10ます。したがってDISPLAY=:10、(経由で)渡されたemacsclientにより、ローカルデスクトップでウィンドウが開かれます。


上記のアプローチは「リモート マシンで Emacs サーバーを実行し、emacsclientローカルで接続する」ボックスにチェックを入れていますが、非常に制限されています。実際、サーバーとクライアントをすべてローカルで 1 人のユーザーとして実行する場合と大差ありません。唯一の違いは、サーバーがリモートになり、別のシステム リソースにアクセスできることです。

残念ながら、ssh -X別のマシンの X サーバーでウィンドウを開くことができた唯一の方法は、経由で起動することです。

  • 基本を指定してDISPLAY=remote:0も意味がありません (Ubuntu X サーバーは-nolisten tcpオプションで起動されるため)。

  • SSH 経由で接続してから使用するDISPLAY=:0ことも失敗しますが、今回は適切な認証資格情報が不足しているためです。(とにかく、そうだと思います:エラーメッセージは不可解にNo protocol specified/と言っていますCan't open display。)

2 番目の問題を回避する方法を見つけることで、解決策にかなり近づくことができると思います。


http://comments.gmane.org/gmane.emacs.devel/103350の投稿('25 Oct 14:50' の投稿から始まり、半分ほど下)を読んで、これがこれは、Emacs ができない (つまり、不可能です ;-) ) というまれなことの 1 つです。

ただし、上記のパーミッションエラーなしでリモート X ディスプレイへのアクセスを提供する方法を誰かが持っている場合、私はまだ説得の余地があります....

TL;DR

rwb の回答で指摘されているように、Emacs がリモート アクセスを許可できるかどうかに関する上記の私の質問は、物事が逆になっています。Emacs が他のユーザーにアクセス権を付与することには実際の問題はありません (server-use-tcpそして適切server-fileにこれを処理します): むしろ問題は、あるマシン上のプロセスが他のユーザーの X ディスプレイ(具体的には実行中の Emacs)で新しい X ウィンドウを開くことを許可する方法です。(start-server)経由で要求するユーザーのためにウィンドウを開く必要がありますemacsclient -c)。その答えは、この質問の範囲を超えています。

代替ソリューション

回避策として、以下を使用します。

  • マシン0:tmux -S /tmp/shared-tmux-socket new-session
  • machine1..machineN:ssh -t machine0 tmux -S /tmp/shared-tmux-socket attach

に対する適切なファイル権限を持つ/tmp/shared-tmux-socket

次に、共有ターミナルでテキストモードの Emacs を実行します。:-) これにより、ユーザーのなりすましに関する疑問がいくつか生じますが、少なくともホストは、ゲストが行っているすべてのことを確認できます。

0 投票する
6 に答える
395 参照

emacs - emacsclientからサイレントにdefunを呼び出します

ソースのコンパイル中に、GNUMakeにemacsdefunを呼び出してもらいたいと思います。このために私は2つのオプションがあります:

  • 新しいemacsインスタンスを開始し、目的の関数をロードして呼び出します。
  • 次のようにemacsclientからdefunを呼び出します。

    /li>

後者には利点があり、emacsサーバーがすでに実行されており、必要なdefunがロードされているため、より高速です。

しかし、これには欠点もあります。(message ...)から呼び出された場合(my-emacs-defun)、アクティブなemacsセッションが中断されます。変更を試みることができた(my-emacs-defun)ので(message ...)呼び出されませんが、emacsの組み込み関数を使用する場合は非常に困難です。

(message ...)したがって、 fromを抑制する方法を知りたい(my-emacs-defun)です。(message ...)このために呼び出されたときの動作を変更することは可能(my-emacs-defun)? Can I useですか(defadvice) `

編集 本当の問題は、メッセージがミニバッファに表示されることです。そのとき(例えば、中(find-file))にミニバッファを使用するときはイライラします。

0 投票する
2 に答える
753 参照

emacs - サーバーがビジー状態のときに、emacsclient 内から emacs に Cg/quit シグナルを送信するにはどうすればよいですか?

私の現在のセットアップでは、emacs --daemon起動時に実行し、その後は作業に使用emacsclientしています。ただし、これには問題があることに気付きました。処理の複雑なチャンクが発生すると、C-g動作が停止します。複雑な作業を停止したり、早期に終了したりすることはできません。私が知る限り、これは、クライアントからの入力が処理される前に、emacs クライアントがサーバーからの確認を待つ必要があるためです。その結果、C-g最も必要なときに機能しません。つまり、時間がかかる、または破壊的な可能性のあるプロセスから抜け出すために.

これに対する回避策、またはサーバープロセスに「停止してください!」と伝える方法はありますか? マニュアルの終了または緊急脱出のセクションには、この問題が存在することを認めているようには見えません。したがって、これは私が何か間違ったことをした結果である可能性もあります。もしそうなら、私は何を間違っていますか?

答えが「いいえ、あなたがやりたいことをする方法はありません。emacsclientプロセスはサーバーがかなりの時間ブロックされていることに対処できません」という場合、コードまたはドキュメントで指摘されている答えを受け入れ済みとしてマークしますその答えが得られる場所: 私はそのようなものを見つけることができませんでした. :(