(Lưu ý rằng, tiêu đề ngược lại, câu hỏi này không giống như Làm thế nào để bắt đầu trong chế độ trình nền và loại bỏ các hộp thoại tương tác ? , Vì câu hỏi đó đã được "trả lời" bởi người gửi loại bỏ những gì gây ra một dấu nhắc cụ thể xuất hiện.)
Tôi muốn biết liệu có một cách chung nào để không emacs --daemon
bị treo mãi mãi khi chờ câu trả lời cho lời nhắc được hiển thị trong xe buýt nhỏ chưa tồn tại.
Không thể kết nối với một emacsclient để trả lời các lời nhắc này, bởi vì máy chủ không khởi động cho đến khi Emacs kết thúc chuỗi khởi động. (Điều này có nghĩa là, nếu bạn đã đặt ALTERNATE_EDITOR thành chuỗi trống, điều này làm cho emacsclient
máy chủ không thể tìm thấy máy chủ bắt đầu một trình nền mới, bạn có thể kết thúc với nhiều trình nền Emacs bị kẹt và chờ đợi.) Tôi phải killall emacs
khắc phục sự cố trước khi tiếp tục.
Tôi có thể chơi whack-a-mol với mỗi thứ gây ra một dấu nhắc khi khởi động khi tôi xác định nó (bằng cách khởi động Emacs ở chế độ không phải daemon và xem những gì nó yêu cầu), nhưng đó không phải là giải pháp vì nó không thể dừng daemon tiếp theo từ treo khi khởi động vì một lý do mới.
Để đưa ra một ví dụ: một lý do phổ biến mà nó sẽ bị treo là sau khi khởi động lại hệ thống hoặc sự cố Emacs, khi Emacs sau khởi động lại đầu tiên muốn biết liệu có ổn không khi đánh cắp các lockfiles từ Emacs không còn tồn tại. Tôi có thể khắc phục điều đó bằng cách tạo lời khuyên để khiến lời nhắc đó luôn trả lời "có" mà không cần tương tác. Nhưng sau đó, một trong những tệp được mở ở phiên lưu trước đó là tệp TRAMP yêu cầu mật khẩu sudo hoặc SSH, do đó, trình nền bị kẹt chờ trong dấu nhắc mật khẩu. Vì vậy, tôi khắc phục điều đó bằng cách chỉnh sửa thủ công tệp phiên (có vi
hoặc emacs -q
!) Để xóa các tệp vi phạm, nhưng điều đó không ngăn nó xảy ra vào lần tới.
Vì vậy, tôi có thể dừng tải phiên của mình một cách tự động khi khởi động và thay đổi nó thành lệnh tôi phải thực hiện thủ công từ emacsclient đầu tiên của mình. Nhưng nếu nó không tải phiên của tôi dưới nền để nó sẵn sàng vào lúc tôi sẵn sàng sử dụng nó, toàn bộ mục đích của daemon sẽ bị mất!
Vì vậy, những gì tôi muốn là:
- (Tốt nhất) Một số cách để trì hoãn nhắc nhở xe buýt nhỏ cho đến khi tôi mở một emacsclient, trong khi vẫn hoàn thành phần còn lại của việc khởi tạo.
- (OK) Một số cách để thực hiện tất cả các lời nhắc của xe buýt nhỏ mà tôi đã không khuyên khác nếu như được mô tả ở trên chỉ cần quay lại
no
trừ khi một emacsclient đang chạy. Tôi có thể sống với bộ đệm TRAMP của mình bị lỗi miễn là nó hoạt động được.
Có cách nào để đạt được một trong những mục tiêu này không?
(read-desktop)
, sau đó, trước khi chạy emacs --daemon
, hãy tạo một tệp khóa không có thật bằng cách đặt một số nguyên vào .emacs.desktop.lock ( không may đặt tệp đó vào đâu, tùy thuộc vào cấu hình của bạn , nhưng có thể là homedir của bạn hoặc ~ / .emacs.d / .