2010-08-13 7 views
6

Używam emacs 23.1.1 z gdb i gdb-many-windows.Emacs 23.1.1 z gdb - wymuszanie źródła windows

Moje pytanie brzmi, czy można zmusić gdb, aby zawsze używał głównego okna źródłowego do przechodzenia przez kod. Co się dzieje, gdy przechodzę przez klatki stosu, jeśli mam plik źródłowy w innych ramkach emacs, emacs przenosi tę ramkę na pierwszy plan pozostawiając ramkę gud w tle z ostrością klawiatury.

Chciałbym, aby emacs/gdb używał głównego okna źródłowego do śledzenia, nawet jeśli istnieje inna ramka z tym samym plikiem źródłowym.

Wszelkie pomysły?

+0

na Debianie z emacs 24.4.1, to nadal zdarza mi. FWIW, znalazłem raport o błędzie, ale bez (jeszcze) żadnej poprawki: http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-06/msg00097.html – pestophagous

Odpowiedz

3

Moja wersja emacs to 24,3. Więc nie jestem pewien, czy następujące rada będzie rozwiązać problem:

(defadvice gud-display-line (before one-source-window activate) 
    "Always use the same window to show source code." 
    (let ((buf (get-file-buffer true-file))) 
    (when (and buf gdb-source-window) 
     (set-window-buffer gdb-source-window buf)))) 

znalazłem gud-display-line z arg true-file w starym źródła tam: http://www.mit.edu/~mkgray/stuff/ath/afs/oldfiles/project/silk/root/afs/athena.mit.edu/contrib/xemacs/OldFiles/share/xemacs-packages/lisp/debug/gdb.el

Ponadto gdb-source-window można znaleźć w dyskusji około 23.1: https://groups.google.com/forum/#!topic/gnu.emacs.bug/KS6bhNeJ9rc

Dlatego wygląda na to, że rzeczy, których użyłem powinny być dostępne w 23.1.

Aby uniknąć podziału okna można spróbować tego:

(defadvice gud-display-line (around one-source-window activate) 
    "Always use the same window to show source code." 
    (let ((buf (get-file-buffer true-file))) 
    (when (and buf gdb-source-window) 
     (set-window-buffer gdb-source-window buf))) 
    (let (split-width-threshold split-width-threshold) 
    ad-do-it 
    )) 
+0

Działa tylko na pierwszym nowy, jeśli GDB otworzy inny plik źródłowy, podzieli główne okno. –

+1

Zobaczmy, czy gud dzieli się rozsądnie. Czy mógłbyś spróbować ustawić 'split-height-threshold' oraz' split-width-threshold' na 'nil'? – Tobias

+2

@MarioGiovinazzo Dodałem wariant, w którym tymczasowo ustawiam 'split-width-threshold' oraz' split-width-threshold' na zero, aby zapobiec dzieleniu głównego okna. Proszę spróbować. – Tobias