System operacyjny: OS X 10.9.5, Mavericks
GNU Emacs 24.3.1 (x86_64-apple-darwin13.1.0, Carbon Version 1.6.0 AppKit 1265.19) z 2014-04-03 na Rainers-MacBook-Pro-3.lokalny
Zainstalowałem emacsa przez homebrew z railwaycat i działa ładnie - żadnych skarg. Nie używam emacsa w terminalu i zwykle uruchamiam go za pomocą aplikacji.
Jak powiedziałem - do tej pory jestem szczęśliwy.
Mam tylko jedną rzecz, której nie udało mi się naprawić (wcześniej działał ładnie pod Linuksem), a mianowicie:
- pobierz demona emacsa, zaczynając od logowania
- za pomocą emacsclient, aby otworzyć
- zamknij emacsdaemon i zapisz wszystkie pliki po wylogowaniu
Jakieś działające przepisy, które mogłyby pomóc mi to skonfigurować?
Dodano informacje
Aby uruchomić demona emacsa po zalogowaniu
Utworzyłem aplikację Automator wykonującą polecenie bash
/usr/local/bin/emacs --daemon
i dodałem go do elementów logowania, które działają dobrze.
Wykorzystanie demona z terminala
Mogę wykorzystać demona emacsa za pomocą
emacsclient .bashrc
który otwiera .bashrc w sesji terminalu emacs.
Wykorzystanie z GUI
Pozostaje pytanie: jak korzystać z interfejsu GUI?
Jak rozumiem program emacsclient, nie mogę otworzyć programu emacsclient, chyba że podam plik do otwarcia.
Chciałbym otworzyć GUI emacsclient i otworzyć wszystkie pliki, które zostały wcześniej otwarte ? czy to możliwe?
Dowiedziałem się, że mogę korzystać
emacsclient -c
w terminalu, aby zrobić to, co chcę - ale czy mogę zrobić to samo dla GUI?
źródło
emacsclient
nie jest aplikacją, jeśli chodzi o OS X, tylkoEmacs
jest (i tylko jeśli została zainstalowana w ten sposób). Dlaczego po prostu nie używasz systemowych powiązań klawiszy do wybierania otwartej aplikacji / okna? (Nie będzie działać, jeśli Emacs został uruchomiony w trybie demona i nie ma jeszcze ramki („okna”)).Odpowiedzi:
Naprawdę nie mam nic przeciwko temu, że Emacs.app zawsze działa, ale fakt, że nie mogłem zamknąć okna bez przypadkowego zabicia serwera Emacs był denerwujący. I nawet jeśli naprawdę bardzo się starasz zabić ostatnią klatkę, nadal nie pozwala ci: „Spróbuj usunąć jedyną widoczną lub ikonizowaną ramkę”. ... Więc oszukujemy.
To rozwiązanie ukrywa Emacsa (jak Command+ h), gdy próbujesz zamknąć ostatnie okno, klikając przycisk zamykania.
Dodaj gdzieś inicjał do Emacsa:
I dodaj Emacsa do „Użytkownicy i grupy> Elementy logowania” i kliknij pole wyboru „Ukryj”.
Twój inicjator Emacsa również musi
(start-server)
gdzieś zadzwonić .Używam tego
emacsclient
opakowania, aby najpierw przenieść Emacsa na pierwszy plan:Zagadnienia:
Kliknięcie ikony Emacsa w Docku wydaje się czasami losowo tworzyć nowe okno. Ale nie zawsze.Jest to oparte off @ noaham za odpowiedź sugeruje, aby zminimalizować Emacs, i ta odpowiedź wyjaśniając jak podłączyć próbuje zamknąć ostatniego okna.
EDYTOWAĆ:
Przeszukując źródło, znalazłem „powiązanie klawiszy” dla
mac-apple-event-map
których wywołańmac-ae-reopen-application
.mac-ae-reopen-application
wydaje się sprawdzać widoczne i oznaczone ikonami ramki i musi w jakiś sposób tęsknić za naszą ukrytą. To prawdopodobnie błąd.Łatwym rozwiązaniem jest wyłączenie powiązania klawiszy w twoim init:
Wprowadza to nowy drobny błąd: kliknięcie ikony dokowania, gdy wszystkie okna są zminimalizowane, nie powoduje automatycznej maksymalizacji jednego z nich. Poprawną poprawką byłoby przepisanie
mac-ae-reopen-application
, ale ledwo znam emacs i elisp.źródło
Port emacs Yamamoto Mitsuharu nie obsługuje niestety multi-tty (zobacz ten problem ). Oznacza to, że nie można uruchomić demona emacs z terminala i uruchomić okno GUI za pomocą emacsclient.
Oto, co robię: w mojej init.el mam
(server-start)
i uruchamiam Emacs.app przy logowaniu. Irytacja polega na tym, że pojawia się okno, które muszę ręcznie zminimalizować.Następnie mam skrypt bash
emacsc
o następującej nazwieNastępnie tworzę aplikację z AppleScript, która zawiera następujące elementy
Ważne jest, aby przekazać
-n
flagę do emacsclient, w przeciwnym razie będziesz mógł używać aplikacji emacsc tylko do otwierania jednego klienta na raz. Ustawienie zmiennej ścieżki gwarantuje, że OS X może znaleźć poprawną wersję programu emacsclient.Polecenie Emacsa „aktywacji” gwarantuje, że okno klienta zostanie uruchomione na pierwszym planie.
Jak powiedziałem, irytacja polega na tym, że musisz ręcznie zminimalizować okno emacs podczas logowania, a następnie ustawić je w doku. Jednym ze sposobów, aby tego uniknąć, jest automatyczne „ukrywanie” Emacsa po zalogowaniu, ale aktywacja go spowoduje, że się ujawni.
źródło
Nie jestem pewien, w jaki sposób Railwaycat Emacs różni się od zwykłej domowej receptury, ale z tą drugą zrobiłbyś
ln -sfv /usr/local/opt/emacs/*.plist ~/Library/LaunchAgents
, która działałabyemacs --daemon
po zalogowaniu.Plist jest zawarty w formule jako dokument TUTAJ . Musisz tylko zmienić ścieżkę do aplikacji emacs w linii
<string>#{opt_bin}/emacs</string>
.BTW, możesz również pobrać Emacsa jako aplikację OS X z Homebrew Emacs, jeśli zainstalujesz go z
--cocoa
opcją. (Trzeba też uruchomićbrew linkapps
później, aby go połączyć/Applications
lub utworzyć link samodzielnie.źródło
W demonach Mac w 90% przypadków zarządzanie odbywa się za pomocą uruchomionej aplikacji . Może uruchamiać je na wielu wyzwalaczach, w tym przy logowaniu / wylogowaniu użytkownika. Istnieje ładna aplikacja dla komputerów Mac o nazwie Lingon do przeglądania i edytowania różnych zarządzanych programów. Wiki emacs wspomina o tym, w tym i przykładowy plik konfiguracyjny . Ale wygląda na to, że to nie rozwiązuje problemu, tzn. Jak wyłączyć demona przy wylogowaniu.
źródło
Utwórz aplikację AppleScript w następujący sposób:
Może być konieczne dostosowanie ścieżki lub całkowite pominięcie ścieżki. Możesz także użyć czegoś bardziej wymyślnego, aby uruchomić demona, jeśli jeszcze nie działa.
źródło