2009-07-31 16 views
24

To prawdopodobnie bardzo naiwne pytanie Emacsa - jestem nowy.Jak zamknąć automatycznie otwarte okno w Emacs?

Kiedy analizuję wyrażenie LISP, jeśli wystąpi błąd, debugger automatycznie pojawi się w innym oknie. Jeśli mam * scratch * i * info * open (pierwszy z nich próbuje przetestować seplenienie i drugi dla przeczytania o tym), to debugger otwiera się w oknie, w którym znajduje się * info *. W tej chwili muszę zmienić do tego okna, a następnie zmień je z powrotem na * info *, przed powrotem do * scratch *. (To samo dzieje się, gdy robię C-x C-b dla listy buforów.) Zgaduję, że musi istnieć sposób na zamknięcie tego okna bez tej długiej sekwencji poleceń. Czy ktoś może mnie oświecić?

+0

może zadać to na co superuser? –

+0

Zastanowiłem się, że ... Trudne jest podejmowanie decyzji. Czy wszystko jest w porządku? (Sądzę, że powinienem pytać o to na meta: P) – Skilldrick

+3

Ponieważ większość pytań dotyczących Emacsa zwykle wymaga napisania odrobiny elipsy, wydaje się, że najlepiej im tu odpowiedzieć. :) –

Odpowiedz

21

Przynajmniej na moim emacsie (22.3), kiedy pojawi się debugger, jego okno staje się aktywne. Tam naciśnięcie klawisza q powoduje wyłączenie debuggera, jeśli tego właśnie chcesz. W tym momencie również wychodzi z edycji rekursywnej.

+0

Tak, to działa! Nie rozwiązuje to jednak przypadku listy trwałych buforów, ale może to kolejne pytanie ... – Skilldrick

+0

"q" to dość powszechny mechanizm wyjścia dla wielu wyskakujących okienek. Działa z calc, kalendarzem, debuggerami, diredami i wieloma innymi, które nie są wbudowane, jak przeglądaj-zabij-ring. Działa również z listą trwałych buforów, chociaż najpierw musisz przełączyć się na listę buforów. Jeśli masz konkretną konfigurację okna roboczego, możesz zapisać ją za pomocą C-x rw , a następnie przeskoczyć do niej z C-x r j w dowolnym momencie. –

+0

Grałem z 24,5, mogę potwierdzić rozwiązanie "q". Jeśli jednak "q" zawodzi w dowolnym przypadku, 'C-x 0' również zamknie okno skupienia. –

1

Możliwym rozwiązaniem jest użycie pakietu zarządzania okno. Zapisz "preferowany" układ okna, a gdy pojawi się okno debuggera/bufora i skończysz, powróć do preferowanej aranżacji.

Istnieje kilka pakietów do wyboru, patrz: switching window configurations na wiki.

Dodatkowo, możesz chcieć dowiedzieć się, jakie działania zwykle wywołujesz, wywołując dodatkowe (niepożądane) okno, i użyć go do zapisania konfiguracji okna tuż przed wyskakującym okienkiem.

Jeśli chcesz toczyć własną rękę (to jest dość łatwe), można po prostu zapisać się konfigurację okna i przywrócić go tak:

(setq the-window-configuration-i-want (current-window-configuration)) 
(global-set-key (kbd "<f7>") 
     (lambda() (interactive) 
      (set-window-configuration the-window-configuration-i-want))) 

Sztuką jest dowiedzieć się, gdzie umieścić ustawienie the-window-configuration-i-want.

3

Myślę, że szukasz C-x 4 C-o, która wyświetla bufor w "innym" oknie bez przełączania się do niego.

Jak wspomniano powyżej, w przypadku bufora śledzenia wstecznego prawdopodobnie chcesz wyjść z niego za pomocą q, aby wydostać się z edycji rekursywnej.

5

Za pomocą winner mode można użyć strzałki w lewo klawisza C-C, aby powrócić do poprzedniej konfiguracji okna. Oczywiście nie zabija to nowego bufora, ale go ukrywa.

12

Z tego co rozumiem, chcesz zamknąć bufor w drugim oknie bez przesuwania kursora z bieżącego okna.

Nie używam żadnej istniejącej funkcji, więc wykonałem własną.

(defun other-window-kill-buffer() 
    "Kill the buffer in the other window" 
    (interactive) 
    ;; Window selection is used because point goes to a different window 
    ;; if more than 2 windows are present 
    (let ((win-curr (selected-window)) 
     (win-other (next-window))) 
    (select-window win-other) 
    (kill-this-buffer) 
    (select-window win-curr))) 

można powiązać go z czymś takim jak „C-x K” lub innego nieco trudne do prasy klucz, więc nie będzie naciskać go przez pomyłkę.

(global-set-key (kbd "C-x K") 'other-window-kill-buffer) 

Używam tego LOTU! (dla buforów Pomocy, buforów kompilacji, buforów Grepa i po prostu starych buforów, które chcę teraz zamknąć, bez przesuwania punktu)

1

Spróbuj użyć popwin-mode. Naprawdę dobrze jest automatycznie zamykać okna.

wkrótce chory spróbować opisać

otworzyć undo-tree-visualize niż można znaleźć poprawną oddział po tym okno switch-window zmienić zamknie inne okno automatycznie

Powiązane problemy