2012-10-21 11 views
7

Şu anda, öncelikle Clojurescript uygulamalarıyla konuşmak için nrepl kullanıyorum. Nrepl'i emacs içinden kullanmayı seviyorum. Nrepl'i M-x nrepl-jack-in yazarak başlatıyorum.nrepl-jack-in çağrıldığında önceki nrepl oturumlarını öldürmek?

Maalesef nrepl oturumum genellikle tamamen kapanıyor. Bu olduğunda, nrepl ile ilgili 3 arabayı öldürürüm. Bunu kapatmak istiyorsanız, bana sor *nrepl-server*

*nrepl-server*

  1. *nrepl*
  2. *nrepl-connection*
  3. da aktif bir süreç vardır ve evet diyorum: Bu tamponlar bulunmaktadır.

    Yeniden M-x nrepl-jack-in yazdım.

    Bu bir acıdır.

    nrepl-jack-in'u aşırı yüklemek istiyorum, böylece bu 3 arabelleklerden herhangi birinin var olup olmadığını otomatik olarak kontrol eder. Bunlardan herhangi biri mevcutsa, bu tamponları ve bu ortaklarla ilişkili tüm aktif işlemleri öldürecektir. Bunu yaptıktan sonra, aşırı yüklenmiş nrepl-jack-in her zamanki gibi devam edecektir. Bunu istiyorum çünkü o zaman, nrepl'in kendisini tekrar asmaya karar verdiğini tespit ettiğimde, sadece M-X nrepl-jack-in yazıp ne yaptığımı yeniden başlatabilirim.

cevap

4

Bu işi olmalıdır:

(defun my-nrepl-jack-in() 
    (interactive) 
    (dolist (buffer (buffer-list)) 
    (when (string-prefix-p "*nrepl" (buffer-name buffer)) 
     (kill-buffer buffer))) 
    (nrepl-jack-in nil)) 
+1

Yazı yazarken * \ * Mesajlar aşağıdaki hatayı alıyorum aşağıdaki 'Mx my-nrepl-jack-Alanı'nda geldi : my-nrepl-jack-in: Hatalı sayıda argüman: # [(komut istemi) "ÄÅÆÇ! \t # \t ÈÉÊ # ËÌ \" ÍÎ \ "ÏÐ # ÑÒ! *" [Prompt-project nrepl-server -command cmd işlem formatı "cd% s &&% s" ido-read-directory-name "Proje:" start-process-shell-komutu "nrepl-server" ...] 4 nil "P"], 0 –

+0

şimdi. Benim için çalışıyor gibi görünüyor. –

+0

Evet, bu hile yaptı. Şimdi çalışıyor, teşekkürler! –

4

seçilen cevabı benim için oldukça işe vermedi ... nrepl süreci sentinel yeniden başlatılmasını engelleyen bir hata attı. Bunun biraz oynadım ve (aynı zamanda ayrı bir kill-nrepl fonksiyonunu veren)

;; Disable prompt on killing buffer with a process 
(setq kill-buffer-query-functions 
     (remq 'process-kill-buffer-query-function 
      kill-buffer-query-functions)) 

(defun nrepl-kill() 
    "Kill all nrepl buffers and processes" 
    (interactive) 
    (when (get-process "nrepl-server") 
    (set-process-sentinel (get-process "nrepl-server") 
          (lambda (proc evt) t))) 
    (dolist (buffer (buffer-list)) 
    (when (string-prefix-p "*nrepl" (buffer-name buffer)) 
     (kill-buffer buffer)))) 

(defun nrepl-me() 
    (interactive) 
    (nrepl-kill) 
    (nrepl-jack-in nil)) 
+0

Normalde normalde, temeldeki arabellek sürecini öldürmek için doğrulama isteğinde bulunur. Yeniden başlatmayı denediğimde benim için çalıştı, ancak açıkçası kodun yukarısında olduğu gibi davranmayacağım ;-) –

İlgili konular