Cx Cc के बाद अस्थायी ठहराव कैसे सेट करें?


10

अगर मैं C-x C-cemacs में दौड़ता हूं , तो यह तुरंत बंद हो जाएगा। यदि मैं इसे सेट confirm-kill-emacsकरता हूं, तो y-or-n-pबंद करने से पहले पुष्टि के लिए पूछेगा।

इसके बजाय y-or-n-p, मैं emacs को बंद करने से पहले 3 सेकंड के लिए कुछ अस्थायी टाइमर सेट करना चाहता हूं। इसलिए, अगर मैं C-x C-cइसे दबाता हूं तो इसे कुछ दिखाना चाहिए

Emacs 3 सेकंड में बंद हो जाएगा। रोकने के लिए Cg दबाएं

अगर मैं कुछ नहीं करता हूं, तो इसे emacs को बंद कर देना चाहिए, लेकिन अगर मैं दबाता हूं C-g, तो इसे बंद करने से रोकना चाहिए। इसे कैसे प्राप्त किया जा सकता है?

जवाबों:


13

आप अपने स्वयं के विधेय फ़ंक्शन को रोल कर सकते हैं जो 3 सेकंड के लिए प्रतीक्षा करता है और हमेशा गैर-शून्य लौटाता है (जब तक कि इसके साथ बाधा न हो 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

आप प्लस 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)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.