2011-07-20 12 views
13

Emacs'ten çıkmayı denediğimde, değiştirilen arabellekleri kaydetmek isteyip istemediğimi sorar. "Hayır" cevabını verdiğim durumda bana soracaktır:Emacs'ın "değiştirilmiş arabellek var mıdır?" Diye sormasını engelle

Modifiye tamponlar mevcuttur; yine de çık (y veya n)

Emacs'in son soruyu sormasını engellemenin bir yolu var mı?

+0

olası yinelenen [olun Emacs sormasın "Aktif süreç devam etmektedir; onları öldürmek ve yine çıkmak"] (http://stackoverflow.com/questions/2706527/ Yapmak -emacs-stop-soran-aktif-işlemleri-var-öldürmek-onları-ve-çıkış-neyse) –

+0

http://stackoverflow.com/a/10780124/539797 nasıl yapılır. – yPhil

cevap

14

:

kaydedebilir-tamponları-kill-emacs işlevini tavsiye olabilir:

(defadvice save-buffers-kill-emacs (around no-y-or-n activate) 
    (flet ((yes-or-no-p (&rest args) t) 
     (y-or-n-p (&rest args) t)) 
    ad-do-it)) 

bunu yapmanın dezavantajı da wh (emacs aktif süreçlerde denetimini atlamak edecektir ich dosya tampon kontrolünden sonra yapılır). Yani, kendi versiyonunu yazmak için en güvenli yöntem olacaktır

(defun my-save-buffers-kill-emacs (&optional arg) 
    "Offer to save each buffer(once only), then kill this Emacs process. 
With prefix ARG, silently save all file-visiting buffers, then kill." 
    (interactive "P") 
    (save-some-buffers arg t) 
    (and (or (not (fboundp 'process-list)) 
     ;; process-list is not defined on MSDOS. 
     (let ((processes (process-list)) 
     active) 
     (while processes 
      (and (memq (process-status (car processes)) '(run stop open listen)) 
      (process-query-on-exit-flag (car processes)) 
      (setq active t)) 
      (setq processes (cdr processes))) 
     (or (not active) 
     (progn (list-processes t) 
      (yes-or-no-p "Active processes exist; kill them and exit anyway? "))))) 
     ;; Query the user for other things, perhaps. 
     (run-hook-with-args-until-failure 'kill-emacs-query-functions) 
     (or (null confirm-kill-emacs) 
     (funcall confirm-kill-emacs "Really exit Emacs? ")) 
     (kill-emacs))) 

save-tamponların-emacs-öldürmek ve ya bağlayıcı standart Cx Cc anahtarına bağlamak:

(global-set-key (kbd "C-x C-c") 'my-save-buffers-kill-emacs) 

veya FSet için "save-tamponları-emacs'ı öldürmek":

(fset 'save-buffers-kill-emacs 'my-save-buffers-kill-emacs) 
ait
+0

Önerirseniz, evet-or-no-p 'seçeneğini önerirseniz, yalnızca "save-buffers-kill-emacs" (OP'nin değiştirmek istediği) çağrılarını değil, aynı zamanda "kaydetme" işlevlerini de etkiler. -some-buffer'lar (OP'nin yaptığı gibi, * bunu değiştirdiğinden). –

+0

Hayır, ilk kaydetme tamponu uyarıları yine de gerçekleşir. Bir dosya belleğinin kaydedilip kaydedilmeyeceğine, ancak 2. "Değiştirilmiş arabelleklerin var mı olduğuna, yine de çıkılmaya mı başlayacağınıza (y veya n)" komut isteminde bulunmayacaksınız. – zev

+0

Ah, kurnaz: 'save-some-buffers'' y-or-n-p' yerine 'map-y-or-n-p' kullanır, böylece tavsiyeniz bunu etkilemez. –

7

source for save-buffers-kill-emacs'a bakarsanız, bu soruyu kapatmak için kullanıcı seçeneği olmadığını görürsünüz.

Bu yüzden, istediğinizi elde etmenin en kolay yolunun, onaylamayı atlayan kendi sürümünüzü yazmanızdır (bunun nasıl göründüğüne ilişkin olarak Trey Jackson'un answer adresine bakın). Bununla birlikte, çalışma alışkanlıklarınızı değiştirmek için daha iyi bir yaklaşım olduğunu düşünüyorum, bu yüzden Emacs'ı çok sık bırakmak zorunda kalmazsınız. Emacs'i sıklıkla bırakıyorsanız, Emacs'in istemci/sunucu özelliklerinden ya da etkileşimli kabukları çalıştırma, uzaktaki makinelerdeki dosyaları düzenleme, birden fazla terminale bağlanma vb.

+0

Sanırım haklısınız, alışkanlıkları değiştirmeliyim. Tavsiye için +1. – Tassos

5
Sen/çıkış ilave onay w kaydedilmemiş dosyalarındaki değişiklikleri ve sonra kaydedip çıkmak isteyecektir senin .emacs, bu ekleyebilir

:

Bunu yapmanın birçok yolu vardır
(defun my-kill-emacs() 
    "save some buffers, then exit unconditionally" 
    (interactive) 
    (save-some-buffers nil t) 
    (kill-emacs)) 
(global-set-key (kbd "C-x C-c") 'my-kill-emacs) 
+1

+1 çünkü cevabınız en anlaşılır. – Tassos

İlgili konular