WindowsでEmacsをセットアップして、単一のインスタンスを起動し、既存のインスタンスでファイルを開く


18

私は、次のようなWindowsの完全なエクスペリエンスに特に興味があります。

  • サーバーがまだ開始されていない場合に自動的に開始する
  • サーバーを利用するためにemacsを呼び出す方法(コマンドラインまたはサードパーティのツールから)
  • コンテキストメニューのサポート(たとえば、ファイルを右クリックして、表示および編集のためにemacsに送信できるようにする)

そのようなサポートは、どこからでも利用できますか?

回答:


21

サーバーがまだ開始されていない場合に自動的に開始する

これは、どのEmacsビルドでも同じでなければなりません。このスニペットを.emacsまたはに追加します .emacs.d/init.el

(require 'server)
(unless (server-running-p)
  (server-start)) 

そしてrunemacs.exe、ビルドに付属する実行可能ファイルを実行して、emacsを起動します。

サーバーを利用するためにemacsを呼び出す方法(コマンドラインまたはサードパーティのツールから)

EmacsのWindowsビルドにはemacsclientw.exebin/ディレクトリに実行可能ファイルが付属しています 。構成する必要のあるサードパーティツールで、選択したエディターとしてその実行可能ファイルへのフルパスを使用します。

コンテキストメニューのサポート(たとえば、ファイルを右クリックして、表示および編集のためにemacsに送信できるようにする)

  1. ファイルを右クリックして、を選択しますOpen With -> Select Default Program
  2. 表示されるウィンドウで、emacsclientw.exe上記の実行可能ファイルに移動して選択します。
  3. Emacsをデフォルトにしたくない場合は、ステップ1と2を再度実行し、デフォルトとして別のプログラムを選択します。

emacsclientw.exe これで、常にコンテキストメニューのオプションになります。


ありがとう-サーバーについての素晴らしい点、私は考えていませんでした。
cristobalito

emacsclient.exeに関しては、emacsclientw.exeであってはなりませんか?また、サーバーが実行されていない場合は、-aフラグを指定してこれを実行し、代替エディターを指定する必要があると考えました。
cristobalito

サーバーを構成で適切に動作EMACS_SERVER_FILEさせるために、.emacs.d\serverディレクトリを指す環境変数を追加する必要もありました。
ライアン14

@Ryan環境変数を必要とせずにこれを機能させることができました。サーバーが実行されていることを確認するために必要なだけです。
クリストバリート14

うーん、私は評価するための(server-running-p)リターン:otherWindows上を(それさえも設定しようとした後EMACS_SERVER_FILEのenv VARを。
Kaushalモディ

5

サーバーがまだ開始されていない場合に自動的に開始する

私は非常用の環境変数を設定することはお勧めALTERNATE_EDITORしますrunemacs.exe。これにより、サーバーがなくても常にemacsclientを呼び出すことができます。initファイルに(server-start)を追加するだけです。サーバーが存在しない場合、emacsclientはを呼び出しますが、ALTERNATE_EDITORこれはemacsです。emaceはinitファイルでサーバーを起動するため、emacsclientへの新しい呼び出しはすぐに実行されます。

サーバーを利用するためにemacsを呼び出す方法(コマンドラインまたはサードパーティのツールから)

emacsclientw.exe -c -n "your_file"your_fileを開くために使用します。-c引数には、新しいグラフィックフレームを作成して-n、サーバーの状態を失うことなく、フレームを閉じることができます。ファイル名を指定せずに呼び出して*Scratch*バッファを開くこともできます。デスクトップのショートカットからも機能します。emacsclient.exe(欠落しているwに注意)を使用すると、呼び出すたびにコマンドプロンプトが数秒間表示されます。

コンテキストメニューへの追加

Emacswikiには、ここのコンテキストメニューにEmacsを追加する素晴らしいページがあります。レジストリノードHKEY_CLASSES_ROOT\*を編集して、emacsで開くアクションを追加する必要があります。


5

他の人がサーバーの部分に答えました。UNIXやGNU / Linuxに似たユーティリティ、grepand などを取得するために私がやることはdiff次のとおりです。

  1. Cygwinをインストールします(1回限りの操作)。
  2. ロードしcygwin-mount.elます。
  3. ロードしsetup-cygwin.elます。

ただし、Cygwinには異なるバージョンがあることに注意してください。私は古いバージョンを使用します(dunnoのいずれか-わかりにくい、AFAICT)。Dunnoは、最近のバージョンで問題が発生するかどうか。

こちらもご覧ください:


注:cygwin EMACSを使用しないでください。ftp.gnu.org/gnu/emacs/windows
M Smith 14

Cygwinをインストールすることはお勧めしません。いくつかのgnuツールを使用するだけで、望ましくない副作用(emacs、gccなどの他のgnu windowsポートの破損など)が発生する可能性があるためです。代わりに、GnuWin32ポートをインストールしてください。パッケージ全体または選択したツールをインストールできます。
関14

@Seki-はい、Eli Zaretskiiはあなたと同じことを言っています。私が言えることは、私には何の問題もなかったということだけです(そして、それがEmacsを破壊しているというあなたの主張に対して深刻な疑いがあります)。しかし、(a)古いCygwinリリースを使用しており、(b)Cygwinが提供するUNIX / GNU Linuxユーティリティのほとんどを使用していません。
ドリュー

@ドリュー:「破壊的な」emacsについて話すのは多すぎるかもしれませんが、「奇妙な振る舞いを引き起こす」方が良いでしょう。たとえば、Cygwinツールは、Cygwinツールが考慮されていないか、他に存在しない場合はデフォルトで使用されていないかを慎重に確認しないと、MinGWツールチェーンにブレーキをかけます。Makeに限らず、他の多くのツールを混在させることはできず、問題を指摘するのが微妙な場合もあります。つまり、Emacsのネイティブポートがあり、ネイティブGNUツールを使用することをお勧めします。または、Emacsを含むCygwinディストリビューション全体を使用できます。
関14

@Seki:だから、あなたの主なポイントは、CygwinとMingGWがうまく連携しないということのようです。それは私にとって驚くことではありません。(FWIWは、私が代わりにCygwinののMingGWを使用に対しては何もない私にとって、Cygwinをインストールするには簡単だった、と私は問題が発生したために、それを十分に使用しないでください。)
ドリュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.