(Perhatikan bahwa, sebaliknya, pertanyaan ini tidak sama dengan Bagaimana memulai dalam mode daemon dan menekan dialog interaktif?, Karena pertanyaan itu "dijawab" oleh submitter yang menghilangkan apa yang menyebabkan prompt tertentu muncul.)
Saya ingin tahu apakah ada cara umum untuk tidak emacs --daemon
menggantung selamanya menunggu jawaban prompt yang ditampilkan di minibuffer yang belum ada.
Mustahil untuk terhubung dengan emacsclient untuk menjawab prompt ini, karena server tidak memulai sampai Emacs menyelesaikan urutan startup. (Ini berarti, jika Anda memiliki ALTERNATE_EDITOR yang disetel ke string kosong, yang membuat emacsclient
server yang tidak dapat menemukan memulai daemon baru, Anda dapat berakhir dengan beberapa daemon Emacs yang semuanya macet dan menunggu.) Saya harus killall emacs
memperbaiki masalahnya sebelum melanjutkan.
Saya dapat memainkan whack-a-mole dengan setiap hal menyebabkan prompt pada startup ketika saya mengidentifikasinya (dengan memulai Emacs dalam mode non-daemon dan melihat apa yang ditanyakan), tetapi itu bukan solusi karena tidak dapat menghentikan daemon berikutnya dari menggantung di startup karena alasan baru.
Untuk memberikan contoh: alasan umum itu akan hang adalah setelah sistem reboot atau crash Emacs, ketika Emacs pasca-reboot pertama ingin tahu apakah itu boleh saja mencuri lockfiles dari Emacs yang sudah tidak berfungsi. Saya bisa memperbaikinya dengan membuat saran agar prompt itu selalu menjawab "ya" tanpa interaksi. Tapi kemudian, salah satu file yang terbuka di sesi sebelumnya simpan adalah file TRAMP yang membutuhkan sudo atau kata sandi SSH, sehingga daemon macet menunggu pada prompt kata sandi. Jadi saya memperbaikinya dengan mengedit file sesi secara manual (dengan vi
atau emacs -q
!) Untuk menghapus file yang menyinggung — tetapi itu tidak mencegahnya terjadi di waktu berikutnya.
Jadi, saya bisa berhenti memuat sesi saya secara otomatis saat startup dan mengubahnya menjadi perintah yang harus saya jalankan secara manual dari emacsclient pertama saya. Tetapi jika itu tidak memuat sesi saya di latar belakang sehingga siap pada saat saya siap menggunakannya, seluruh tujuan daemon hilang!
Jadi yang saya suka adalah:
- (Terbaik) Beberapa cara untuk menunda minibuffer meminta hingga saya membuka emacsclient, sambil tetap menyelesaikan sisa inisialisasi.
- (OK) Beberapa cara untuk membuat semua minibuffer meminta saya belum menyarankan sebaliknya seperti yang dijelaskan di atas hanya kembali
no
kecuali emacsclient sedang berjalan. Saya dapat hidup dengan buffer TRAMP saya yang gagal asalkan sebagian besar berfungsi.
Apakah ada cara untuk mencapai salah satu dari tujuan ini?
(read-desktop)
, kemudian, sebelum menjalankan emacs --daemon
, membuat file kunci palsu dengan meletakkan integer ke .emacs.desktop.lock (di mana meletakkan file itu, sayangnya, tergantung pada konfigurasi Anda , tapi mungkin homedir Anda atau ~ / .emacs.d / .