Jak mogę uruchomić graficzną Emacsa Mac OSX w trybie demona?

24

Skrócony formularz: chcę uruchomić wersję Emacsa dla Mac OSX, którą można znaleźć na stronie http://emacsformacosx.com/ jako demon, z klientami graficznymi i tekstowymi łączącymi się z nim w razie potrzeby.

Szczegółowo, oto przepływ pracy, który chcę:

  1. Podczas logowania uruchom, /Applications/Emacs.app/Contents/MacOS/Emacs --daemonaby uruchomić emacsa jako demona. Wiem już, jak to zrobić .

  2. Podczas uruchamiania emacsa z lokalnego terminala chcę jedno z tych:

    1. Jeśli uruchomię emacsz lokalnego wiersza polecenia, otwórz nową ramkę z wybranym plikiem.
    2. Jeśli # 1 nie jest możliwe, przynajmniej jeśli uruchomię emacsclientz wiersza poleceń, otwórz nową ramkę z wybranym plikiem.
  3. Podczas uruchamiania emacsa ze zdalnego terminala chciałbym, aby emacs w trybie tekstowym został uruchomiony, podłączony do procesu demona.

  4. Jeśli uruchomię, Emacs.appużyj ponownie demona emacs działającego w tle zamiast uruchamiać nowe wystąpienie i otwierać w nim nowe okno.

Do tej pory jestem w stanie osiągnąć tylko # 1 i # 2.2 powyżej, ale to są łatwe części. # 3 i # 4 to rzeczy, które są najbardziej potrzebne, aby to zadziałało. Czy ktoś wie, jak to osiągnąć?

Chris R.
źródło
1
Dla innych, którzy znajdą to pytanie: możesz również usr M-x server-startwprowadzić emacsa uruchomionego bez --daemon w tryb serwera. Dobre pytania, BTW.
dmckee,
1
... lub włóż (server-start).emacs, aby zaczął się po uruchomieniu emacsa
Doug Harris
Czy ktoś może wyjaśnić, jak zrobić # 1? Czy zrobiłbyś to po prostu jako login?
Charlie Flowers,
1
@Charlie Flowers emacswiki.org/emacs/EmacsAsDaemon#toc5
Colin

Odpowiedzi:

15
  1. Masz to załatwione
  2. Tak, będziesz chciał użyć emacsclient. Aby uzyskać nową ramkę, dodaj opcję -c. Mam alias, aby przyspieszyć i powiedzieć emacsclient, aby nie czekał na powrót serwera emacs:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Nie jestem pewien co do tego. Uruchamiam Emacsa raz i zawsze ładuję nowe pliki w emacsie lub używając mojego emaliasu.

Aktualizacja:

Sprawdź tę wskazówkę dokumentującą, jak używać Dziobaka do tworzenia opakowania aplikacji wokół emacsclient. Następnie możesz użyć „Otwórz za pomocą ...”, aby uruchomić za pomocą nowego opakowania aplikacji.

Doug Harris
źródło
Tak, to prawdziwa sztuczka, prawda? Ponieważ chcę, aby wszystkie otwarte połączenia systemu operacyjnego korzystały z uruchomionych emacs, niezależnie od tego, czy działam w kontekście terminala, czy kontekstu GUI. Będę szukał dalej.
Chris R
Znaleziono referencję do Dziobaka i zaktualizowałem moją odpowiedź.
Doug Harris,
6
Czy to jest rozwiązane? Jak udało Ci się połączyć Emacs.app z demonem?
milkypostman
Chcę również poznać odpowiedź na pytanie 4 :)
jkp
2

Tak, oto dość wyczerpujące wyjaśnienie, jak to zrobić ładnie. Wypróbowałem kilka metod, aby działało to ładnie, ale nie lepiej niż to, co tutaj opisano.

https://gist.github.com/304964

Twoje zdrowie!

Kolec
źródło
1
Link nie działa
Nisba,
1

Dla 4. włóż to do .emacs:

(setq ns-pop-up-frames nil)

Rozwiązanie tworzenia aplikacji na Maca (z dziobakiem) nie działa, ponieważ Mac nie otworzy dwukrotnie tej samej aplikacji.

juanmirocks
źródło
1
Jeśli użyjesz „open -n”, możesz otworzyć nowe wystąpienie aplikacji, nawet jeśli jest już uruchomiona. Spróbuj tego w terminalu: otwórz -n -a Emacs.app somefile.txt
Jörgen Lundberg
Tak, ale otwiera nowe okno, którego nie chcę
juanmirocks
Może nie rozumiem, czego chcesz, ale jeśli nie chcesz, aby tworzyło nowe okno, ale używało już istniejącego, pomiń „-n”.
Jörgen Lundberg
Tak, nie chcę tworzyć nowego okna. open -a Emacs.appjest z pewnością tym, co robię, ale aby otworzyć się w tym samym tle instancji / demona istniejącego emacsa, muszę pisać (setq ns-pop-up-frames nil)w swoim, .emacstak jak napisałem w odpowiedzi. W przeciwnym razie i tak tworzy nowe okno, z lub bez -n.
juanmirocks