Bagaimana saya bisa menjalankan Emacs grafis Mac OSX dalam mode daemon?

24

Bentuk singkat: Saya ingin menjalankan versi Mac OSX dari Emacs yang ditemukan di http://emacsformacosx.com/ sebagai daemon, dengan klien grafis dan teks yang menghubungkannya sesuai kebutuhan.

Secara detail, inilah alur kerja yang saya inginkan:

  1. Saat masuk, jalankan /Applications/Emacs.app/Contents/MacOS/Emacs --daemonuntuk memulai emacs sebagai daemon. Saya sudah tahu bagaimana melakukan ini .

  2. Ketika menjalankan emacs dari termnal lokal, saya ingin salah satu dari ini:

    1. Jika saya menjalankan emacsdari prompt perintah lokal, buka bingkai baru dengan file yang dipilih.
    2. Jika # 1 tidak memungkinkan, setidaknya jika saya menjalankan emacsclientdari baris perintah, buka bingkai baru dengan file yang dipilih.
  3. Ketika menjalankan emacs dari terminal jarak jauh, saya ingin emacs mode teks untuk memulai, terhubung ke proses daemon.

  4. Jika saya menjalankan Emacs.appkembali menggunakan daemon emacs yang berjalan di latar bukannya memulai contoh baru dan membuka jendela baru di atasnya.

Sejauh ini, saya hanya dapat mencapai # 1 dan # 2.2 di atas, tetapi itu adalah bagian yang mudah. # 3 dan # 4 adalah hal-hal yang paling dibutuhkan untuk membuat pekerjaan ini. Adakah yang tahu bagaimana menyelesaikan hal-hal ini?

Chris R
sumber
1
Bagi yang lain yang menemukan pertanyaan ini: Anda juga dapat M-x server-startmenggunakan emacs tanpa --daemon masuk ke mode server. Pertanyaan bagus, BTW.
dmckee
1
... atau masukkan (server-start).emacs Anda sehingga itu dimulai ketika Anda meluncurkan emacsa
Doug Harris
Adakah yang bisa menjelaskan cara melakukan # 1? Apakah Anda hanya membuatnya menjadi barang masuk?
Charlie Flowers
1
@Charlie Flowers emacswiki.org/emacs/EmacsAsDaemon#toc5
Colin

Jawaban:

15
  1. Anda sudah menangani ini
  2. Ya, Anda ingin menggunakan emacsclient. Untuk mendapatkan bingkai baru, tambahkan opsi -c. Saya memiliki alias untuk membuatnya lebih cepat dan untuk memberitahu emacsclient untuk tidak menunggu server emacs untuk kembali:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Saya tidak yakin tentang ini. Saya memulai Emacs sekali dan selalu memuat file baru baik di dalam emacs atau menggunakan emalias saya .

Memperbarui:

Lihat tip ini yang mendokumentasikan cara menggunakan Platypus untuk membuat pembungkus aplikasi di sekitar emacsclient. Anda kemudian dapat menggunakan "Buka Dengan ..." untuk meluncurkan menggunakan pembungkus aplikasi baru Anda.

Doug Harris
sumber
Ya, itu trik sebenarnya, bukan? Karena yang saya inginkan adalah semua panggilan terbuka OS untuk menggunakan emacs yang berjalan, apakah saya beroperasi dalam terminal atau konteks GUI. Saya akan terus mencari.
Chris R
Menemukan referensi ke Platypus dan memperbarui jawaban saya.
Doug Harris
6
Apakah ini terpecahkan? Bagaimana Anda mendapatkan Emacs.app untuk terhubung ke daemon?
milkypostman
Saya juga ingin tahu jawaban untuk pertanyaan 4 :)
jkp
2

Ya, berikut ini penjelasan yang cukup komprehensif tentang cara melakukan ini dengan baik. Saya mencoba beberapa metode untuk membuatnya bekerja dengan baik, tetapi tidak lebih baik dari apa yang mereka jelaskan di sini.

https://gist.github.com/304964

Tepuk tangan!

Paku
sumber
1
Tautannya
1

Untuk 4. taruh ini di .emacs Anda:

(setq ns-pop-up-frames nil)

Solusi membuat Mac .app (dengan Platypus) tidak berfungsi karena Mac tidak akan membuka aplikasi yang sama dua kali.

juanmirocks
sumber
1
Jika Anda menggunakan "open -n", Anda dapat membuka instance aplikasi baru meskipun sudah berjalan. Coba ini di terminal: buka -n -a Emacs.app somefile.txt
Jörgen Lundberg
Ya, tetapi membuka jendela baru, yang saya tidak mau
juanmirocks
Mungkin saya salah paham apa yang Anda inginkan, tetapi jika Anda tidak ingin membuat jendela baru tetapi menggunakan yang sudah ada, lewati '-n'.
Jörgen Lundberg
Ya, saya tidak ingin membuat jendela baru. open -a Emacs.apptentu saja apa yang saya lakukan, tetapi untuk dibuka pada instance / daemon background yang sama dari emacs yang ada, saya perlu menulis (setq ns-pop-up-frames nil)di saya .emacsseperti yang saya tulis dalam jawaban saya. Kalau tidak, ia akan menciptakan jendela baru, dengan atau tanpa -n.
juanmirocks