İstenmeyen tamponların açılmasını önleyin


18

Günlük javascript düzenleme için emacs kullanıyorum, aralarında geçiş yapmak için Cx SOL ve Cx SAĞ kullanıyorum ve bu konuda iyiyim (değiştirdiğim dosyanın yolunu bilmek zor olsa bile).

Benim problemlerim:

  1. Başlangıçta her zaman açtım *scratch*ve *Messages*açtım, (kill-buffer "*scratch*").emac'lerimi yerleştirmenin sorunu çözeceğini düşündüm , ama değil, bir öneriniz var mı?

  2. dosyaları açtığımda her zaman TAB otomatik tamamlama yapıyorum, bu yüzden tamamlama *Messages*seçeneklerini içeren yeni bir arabellek oluşturduğumda, bunun oluşturulmasını nasıl önleyebilirim veya daha iyisi, emacs'ın onu öldürmesini nasıl sağlarım seçimimi yaptın mı?

En üstte söylediğim gibi benimle gezinirken "olması gerektiği gibi" olmayan bir şey yaptığımı düşünüyorsanız fikrinizi söyleyin.


1
Trey'in önerdiği gibi arabellekleri değiştirmenin diğer yollarını keşfetmek isteyebilirsiniz. Sıralı olmayan başka bir yöntem seçerseniz, hemen istenen ara belleğe atlayabilirsiniz, bu nedenle arabellek listesinde istenmeyen tamponların olması önemli değildir. Kendimi iswitchb kullanıyorum .
Tom

Yanıtlar:


23

Bu beni delirtti ... ben düzeltene kadar.

Artık akışınızla ilgili çizik , mesaj veya tamamlama tamponları yok. Zevk almak!

Bunu .emac'lerinize yerleştirin:

;; Makes *scratch* empty.
(setq initial-scratch-message "")

;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)

;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
                (kill-buffer buffer)))))

;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)

;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)

Bonus:

;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)

1
Bunun için çok teşekkür ederim, size daha fazla destek verebilseydim.
Alberto Zaccagni

Rica ederim! : D
Ole

2
(if (get-buffer "*Messages*") (kill-buffer "*Messages*"))Biri yapılandırmayı yeniden yüklerse yapmak anlamlı olmaz mıydı ? Tamamen o diğer makronuzdan ilham aldınız.
Simon 'Reinstate Monica' Shine

2
Onlardan kurtulana kadar bu tamponların beni ne kadar rahatsız ettiğini fark etmemiştim.
otomat

Emacs'ı çökertti
alper

6

Şey ... kısmen Emacs'ın çalışma şekli, ancak genel olarak geçişe yardımcı olmak için yapabileceğiniz şeyler var.

İlk olarak, Emacs'ın en az bir tamponu olmalıdır. Yani, kurtulmak istese bile *scratch*ve *Messages*, size kalan olurdum yine bir başka sen istemediğini tampon (veya Emacs sadece son görmezden gelin almak istiyorum kill-buffer(o tampon yeniden oluşturma çünkü isteği b / c bir tampon gerekir).

Bu nedenle, arabellekleri değiştirmenin daha anlamlı olduğu noktaya gelmenin en iyi yolu, aslında geçmek istediğiniz arabelleklere sahip olmaktır.

Bunu yaptığınızda, arabellekleri değiştirmek için kullanabileceğiniz tüm seçeneklere / paketlere bakabilirsiniz - bunların çoğu Emacs Wiki'de SwitchingBuffers altında listelenir . idoOldukça popüler olan gibidir iciclesve anything.


1
Oturumlarımı kaydediyorum (desktop-save-mode 1), bu yüzden neredeyse her zaman başlangıçta bir şeyler açık olacağım, bu paketlere bakacağım, teşekkürler.
Alberto Zaccagni

1

Herhangi biri yalnızca * scratch * arabelleğini kaldırmakla ilgileniyorsa ve * Mesajlar * arabelleği ile kalmak istiyorsa, bu kod benim için çalıştı:

(defun acg-initial-buffer-choice ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*"))
  (get-buffer "*Messages*"))

(setq initial-buffer-choice 'acg-initial-buffer-choice)

Unutmamanız gereken bir şey, herhangi bir zamanda Emacs görüntülenecek arabellek bırakılmazsa (örneğin, tüm arabellekleri öldürdünüz), * çizik * veya * Mesajlar * arabellek oluşturacaktır. t İş akışınız sırasında tüm arabellekleri silmek, aksi takdirde * scratch * tekrar hayata dönebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.