Zapobiegaj otwieraniu niechcianych buforów


18

Używam emacsa do codziennej edycji javascript, do przełączania się między buforami używam Cx LEFT i Cx RIGHT i nie mam nic przeciwko (nawet jeśli trudno mi poznać ścieżkę pliku, który modyfikuję).

Moje problemy:

  1. na starcie zawsze miałem *scratch*i *Messages*otwierałem, myślałem, że włożenie (kill-buffer "*scratch*")moich .emacs rozwiąże problem, ale nie jest, czy masz jakieś sugestie?

  2. kiedy otwieram pliki, zawsze wykonuję autouzupełnianie TAB, więc za każdym razem, gdy tworzę nowy *Messages*bufor zawierający opcje uzupełniania, w jaki sposób mogę temu zapobiec, lub lepiej, jak sprawić, by emacs go zabił, po tym jak dokonałem wyboru?

Powiedz swoją opinię, jeśli myślisz, że robię coś, co nie jest „tak, jak powinno być”, gdy nawiguję, jak powiedziałem na górze.


1
Możesz chcieć odkryć inne sposoby przełączania buforów, jak sugerował Trey. Jeśli wybierzesz inną metodę, która nie jest sekwencyjna, możesz od razu przejść do pożądanego bufora, więc nie ma znaczenia, czy niechciane bufory znajdują się na liście buforów. Sam używam iswitchb .
Tom

Odpowiedzi:


23

Doprowadzało mnie to do szału ... dopóki tego nie naprawiłem.

Teraz nie ma żadnych buforów do rysowania , wiadomości i uzupełnień, które mogłyby zepsuć przepływ. Cieszyć się!

Umieść to w .emacs:

;; 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)

Premia:

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

1
Dziękuję bardzo za to, chciałbym móc dać ci więcej przedstawicieli.
Alberto Zaccagni

Nie ma za co! : D
Ole

2
Czy nie miałoby to sensu, (if (get-buffer "*Messages*") (kill-buffer "*Messages*"))gdyby ktoś ponownie załadował konfigurację? Czysto zainspirowany innym twoim makrem.
Simon „Reinstate Monica” Shine

2
Nie zdawałem sobie sprawy, jak bardzo przeszkadzały mi te bufory, dopóki ich nie pozbyłem.
automat

Rozbił Emacs
alper

6

Cóż ... jest to częściowo sposób, w jaki działa Emacs, ale są rzeczy, które możesz zrobić, aby ogólnie pomóc w zmianie.

Po pierwsze, Emacs musi mieć co najmniej jeden bufor. Więc nawet jeśli chcesz się go pozbyć *scratch*i *Messages*zostaniesz z innym buforem, którego nie chcesz (lub dostaniesz punkt, w którym Emacs zignoruje twoje ostatnie kill-bufferżądanie, ponieważ ponownie go utworzył ( b / c potrzebuje jednego bufora).

Tak więc najlepszym sposobem na przejście do punktu, w którym przełączanie buforów ma sens, jest posiadanie buforów, na które chcesz się przełączyć.

A kiedy to zrobisz, możesz spojrzeć na wszystkie opcje / pakiety dostępne dla przełączania buforów - wiele z nich znajduje się na Wiki Emacsa pod SwitchingBuffers . idojest dość popularny, podobnie jak iciclesi anything.


1
Zapisuję swoje sesje (desktop-save-mode 1), więc prawie zawsze będę mieć coś otwartego przy starcie, sprawdzę te pakiety, dzięki.
Alberto Zaccagni

1

Jeśli ktoś jest zainteresowany usunięciem tylko bufora * scratch * i pozostawieniem bufora * Messages *, ten kod działał dla mnie:

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

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

Jedną z rzeczy, o których powinieneś pamiętać, jest to, że jeśli Emacs w ogóle nie ma bufora do wyświetlenia (np. Zabiłeś wszystkie bufory), utworzy bufor * scratch * lub * Messages *, więc upewnij się, że wygrałeś Usuwasz wszystkie bufory w trakcie pracy lub * scratch * może wrócić do życia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.