(Zwróć uwagę, że przeciwnie, to pytanie nie jest takie samo jak Jak uruchomić w trybie demona i ukryć interaktywne okna dialogowe? Ponieważ na to pytanie „odpowiedział” autor, który wyeliminował to, co spowodowało pojawienie się konkretnego monitu).
Chciałbym wiedzieć, czy istnieje ogólny sposób, aby nie emacs --daemon
zawieszać się na zawsze i czekać na odpowiedź na monit wyświetlany w minibuforze, który jeszcze nie istnieje.
Nie można połączyć się z emacsclient, aby odpowiedzieć na te monity, ponieważ serwer nie uruchomi się, dopóki Emacs nie zakończy sekwencji startowej. (Oznacza to, że jeśli ALTERNATE_EDITOR jest ustawiony na pusty ciąg, co sprawia, emacsclient
że serwer , który nie może znaleźć serwera, uruchamia nowego demona, możesz skończyć z wieloma demonami Emacsa, które są zablokowane i czekają.) Muszę killall emacs
rozwiązać problem przed kontynuowaniem.
Mogę grać w walenie w kret z każdą rzeczą, która powoduje wyświetlenie monitu podczas uruchamiania, gdy ją zidentyfikuję (uruchamiając Emacsa w trybie innym niż demon i sprawdzając, o co pyta), ale nie jest to rozwiązanie, ponieważ nie może zatrzymać następnego demona od zawieszenia się przy starcie z nowego powodu.
Podam przykład: częstym powodem zawieszania się było po ponownym uruchomieniu systemu lub awarii Emacsa, gdy pierwszy po ponownym uruchomieniu Emacs chciał wiedzieć, czy można ukraść pliki blokujące od nieistniejącego Emacsa. Mógłbym to naprawić, tworząc porady, które sprawią, że monit zawsze odpowie „tak” bez interakcji. Ale jednym z plików, które były otwarte podczas poprzedniej sesji składowania, był plik TRAMP wymagający hasła sudo lub SSH, więc demon utknął, czekając na monit o hasło. Naprawiam to, ręcznie edytując plik sesji (za pomocą vi
lub emacs -q
!), Aby usunąć szkodliwe pliki - ale to nie powstrzymuje go przed następnym razem.
Mogę więc zatrzymać ładowanie sesji automatycznie podczas uruchamiania i zmienić ją na polecenie, które muszę ręcznie wykonać z pierwszego programu emacsclient. Ale jeśli nie ładuje mojej sesji w tle, więc jest gotowa, zanim będę gotowa z niej korzystać, cały cel demona zostanie utracony!
Chciałbym więc:
- (Najlepsze) Jakiś sposób na odroczenie monitów minibufora, dopóki nie otworzę emacsclient, jednocześnie kończąc resztę inicjalizacji.
- (OK) W jakiś sposób, aby wszystkie monity w minibuforze nie były jeszcze zalecane, jak opisano powyżej, po prostu wróć,
no
chyba że uruchomiony jest emacsclient. Mogę żyć z błędami buforów TRAMP, o ile w większości działają.
Czy jest jakiś sposób na osiągnięcie któregokolwiek z tych celów?
(read-desktop)
, a następnie, przed uruchomieniem emacs --daemon
, utwórz fałszywy plik blokady, umieszczając liczbę całkowitą w .emacs.desktop.lock (gdzie umieszczenie tego pliku niestety zależy od konfiguracji , ale prawdopodobnie albo twój homedir, albo ~ / .emacs.d / .