Mac OSXグラフィカルEmacsをデーモンモードで実行するにはどうすればよいですか?


24

短い形式:http: //emacsformacosx.com/にあるMac OSXバージョンのEmacsをデーモンとして実行し、 必要に応じてグラフィカルクライアントとテキストクライアントを接続します。

詳細に、私が望むワークフローは次のとおりです。

  1. ログインしたら、実行/Applications/Emacs.app/Contents/MacOS/Emacs --daemonしてデーモンとしてemacsを開始します。 私はすでにこれを行う方法を知っています

  2. ローカル端末からemacsを実行する場合、次のいずれかが必要です。

    1. emacsローカルコマンドプロンプトから実行する場合、選択したファイルで新しいフレームを開きます。
    2. #1が不可能な場合、少なくともemacsclientコマンドラインから実行する場合は、選択したファイルで新しいフレームを開きます。
  3. リモート端末からemacsを実行しているとき、デーモンプロセスに接続されたテキストモードemacsを起動したいと思います。

  4. 実行するEmacs.appと、新しいインスタンスを起動して新しいウィンドウを開くのではなく、バックグラウンドで実行されているemacsデーモンを再利用します。

これまでのところ、上記の#1と#2.2しか達成できませんが、それらは簡単な部分です。#3と#4は、この機能を実現するために最も必要なものです。誰もがこれらのことを達成する方法を知っていますか?


1
この質問を見つける他の人のために:あなたはまたM-x server-start、サーバーモードにせず --daemonに開始されたemacsを置くためにusr することができます。いい質問ですね、ところで。
dmckee

1
...またはPUT (server-start)あなたの.emacsであなたがemacsaを起動したとき、それが開始されるように
ダグ・ハリス

誰かが#1を行う方法を説明できますか?ログインアイテムにするだけですか?
チャーリーフラワーズ

1
@チャーリー・フラワーズemacswiki.org/emacs/EmacsAsDaemon#toc5
コリン

回答:


15
  1. これを処理しました
  2. はい、emacsclientを使用する必要があります。新しいフレームを取得するには、-cオプションを追加します。私はそれをより速くし、emacsサーバーが戻るのを待たないようにemacsclientに伝えるエイリアスを持っています:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. これについてはわかりません。Emacsを1回起動し、常にemacs内またはemエイリアスを使用して新しいファイルをロードします。

更新:

Platypusを使用してemacsclientのアプリラッパーを作成する方法を文書化したこのヒントをご覧ください。次に、アプリから開く...」を使用して、新しいアプリラッパーを使用して起動できます。


ええ、それが本当のトリックですよね?必要なのは、端末またはGUIコンテキスト内で操作しているかどうかにかかわらず、すべてのOSオープンコールが実行中のemacsを使用することです。私は探し続けます。
クリスR

カモノハシへの参照を見つけ、私の答えを更新しました。
ダグハリス

6
これは解決しましたか?Emacs.appをデーモンに接続するにはどうしましたか?
ミルキーポストマン

質問4への答えも知りたいです:)
jkp

2

はい、これをうまく行う方法についてのかなり包括的な説明があります。私はそれをうまく動作させるためにいくつかの方法を試しましたが、ここで説明した方法よりは良くありません。

https://gist.github.com/304964

乾杯!


1
リンクが死んでいる
ニスバ

1

4.では、これを.emacsに追加します。

(setq ns-pop-up-frames nil)

Macは同じアプリケーションを2回開かないため、Mac .app(Platypusを使用)を作成するソリューションは機能しません。


1
「open -n」を使用すると、アプリケーションが既に実行されている場合でも、アプリケーションの新しいインスタンスを開くことができます。ターミナルでこれを試してください:open -n -a Emacs.app somefile.txt
ヨルゲンルンドバーグ

うん、それは私が望んでいない新しいウィンドウが開きます
juanmirocks

たぶん私はあなたが望むものを誤解しているかもしれませんが、新しいウィンドウを作成して既存のウィンドウを使用したくない場合は、「-n」をスキップしてください。
ヨルゲン・ルンドバーグ

はい、新しいウィンドウを作成しません。open -a Emacs.app私は何をすべきか確かであるが、同じインスタンス/既存のEmacsのデーモンバックグラウンドで開くことが、私が書く必要があり(setq ns-pop-up-frames nil)、私の中で.emacs私は私の答えに書いたように。それ以外の場合は、とにかく、新しいウィンドウを作成します-n
-juanmirocks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.