(Зауважте, що, наголошуючи на протилежне, це питання не те саме, як запуститись у демон-режимі та придушити інтерактивні діалоги? Оскільки на це питання "відповів" подавець, усуваючи те, що спричиняло появу певного запиту.)
Мені хотілося б знати, чи існує загальний спосіб утриматися emacs --daemon
від вивішування вічно, чекаючи відповіді на підказку, відображену в мінібуфері, який ще не існує.
Підключитися до emacsclient не можна, щоб відповісти на ці підказки, оскільки сервер не запускається, поки Emacs не завершить послідовність запуску. (Це означає, що якщо у вас ALTERNATE_EDITOR встановлено в порожній рядок, завдяки чому emacsclient
сервер не може знайти запуск нового демона, ви можете закінчити з декількома демонами Emacs, усі застрягли і чекаючи.) Я повинен killall emacs
вирішити проблему перш ніж продовжувати.
Я можу грати з бездротовою моллю з кожною річчю, викликаючи підказку при запуску, коли я її ідентифікую (запускаючи Emacs в недемоновому режимі і бачачи, що він просить), але це не рішення, оскільки він не може зупинити наступний демон від зависання при запуску з нової причини.
Для прикладу: поширена причина, яку вона зависла, - це після перезавантаження системи або аварії Emacs, коли перший Emacs після перезавантаження хотів дізнатися, чи добре вкрасти замкові файли у неіснуючих Emacs. Я міг би це виправити, створюючи поради, щоб цей підказник завжди відповідав "так" без взаємодії. Але потім, один з файлів, який був відкритий на попередньому сеансі збереження, - це файл TRAMP, який вимагає sudo або SSH-пароля, тому демон демонстровно затримався в очікуванні на запит пароля. Тож я це виправляю, вручну редагуючи сесійний файл (з vi
або emacs -q
!), Щоб видалити файли, які порушують правопорушення, але це не перешкоджає наступному разу.
Отже, я можу припинити завантаження сеансу автоматично під час запуску і змінити його на команду, яку я повинен виконувати вручну з першого мого emacsclient. Але якщо він не завантажує сеанс у фоновому режимі, щоб він був готовий до моменту, коли я готовий його використовувати, вся мета демона втрачається!
Отже, що мені хотілося б:
- (Найкраще) Якимось способом відкласти підказки minibuffer, поки я не відкрию emacsclient, доки не завершую решту ініціалізації.
- (ОК) Якимось способом зробити всі підказки мінібуфера, які я вже не радив, інакше як описано вище, просто повертайтеся,
no
якщо не працює emacsclient. Я можу жити, коли мої буфери TRAMP помиляються до тих пір, поки це в основному працює.
Чи є спосіб досягти будь-якої з цих цілей?
(read-desktop)
, перш ніж запустити emacs --daemon
, створити фіктивний файл блокування, помістивши ціле число в .emacs.desktop.lock (куди помістити цей файл, на жаль, залежить від вашої конфігурації , але, ймовірно, або ваш homedir, або ~ / .emacs.d / .