Cx Cc 후 일시 정지를 설정하는 방법은 무엇입니까?


10

C-x C-c이맥스에서 실행하면 즉시 닫힙니다. 설정 confirm-kill-emacs하면 y-or-n-p닫기 전에 확인을 요청합니다.

대신 y-or-n-pemacs를 닫기 전에 3 초 동안 임시 타이머를 설정하고 싶습니다. 그래서 누르면 누르면 C-x C-c다음과 같이 표시됩니다

이맥스는 3 초 안에 종료됩니다. 중지하려면 Cg 를 누르 십시오

아무 것도하지 않으면 emacs가 종료되지만을 누르면 종료되지 않습니다 C-g. 어떻게하면 되나요?

답변:


13

3 초 동안 대기하고 항상 nil이 아닌 값을 반환하는 고유 한 술어 함수를 롤링 할 수 있습니다 (로 중단되지 않는 한 C-g).

(setq confirm-kill-emacs
      (lambda (&rest args)
        (interactive)
        (message "Quitting in 3 seconds. Press `C-g' to stop.")
        (sleep-for 3)
        t))

또는 모든 키를 읽는 변형 :

(setq confirm-kill-emacs
      (lambda (&rest args)
        (interactive)
        (null (read-event "Quitting in 3 seconds. Hit any key to stop."
                          nil 3))))

7

plus sit-for대신에 사용할 수 있습니다 . 그리고 함수는 명령 일 필요는 없습니다 ( ).sleep-fortinteractive

sit-fort대기 한 nil경우와 사용자가 대기 한 경우를 반환 합니다 .

(setq confirm-kill-emacs
      (lambda (&rest _)
        (message "Quit in 3 sec (`C-g' or other action cancels)")
        (sit-for 3)))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.