2010-08-13 28 views
6

Tôi đang sử dụng emacs 23.1.1 với gdb và gdb-nhiều-windows.Emacs 23.1.1 với gdb - buộc cửa sổ nguồn

Câu hỏi của tôi là nếu có thể buộc gdb luôn sử dụng cửa sổ nguồn chính để duyệt qua mã. Điều xảy ra là khi tôi di chuyển qua khung ngăn xếp, nếu tôi tình cờ có tệp nguồn trong một khung emacs khác, biểu tượng emacs sẽ đưa khung đó lên nền trước trong khi rời khung gud ở chế độ nền với tiêu điểm bàn phím.

Điều tôi muốn làm là buộc emacs/gdb sử dụng cửa sổ nguồn chính cho tất cả lần truy tìm ngay cả khi có một khung khác có cùng tệp nguồn nằm xung quanh một nơi nào đó.

Bất kỳ ý tưởng nào?

+0

trên debian với emacs 24.4.1, đây vẫn xảy ra với tôi. FWIW, tôi đã tìm thấy một báo cáo lỗi, nhưng không có (chưa) bất kỳ bản vá nào: http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-06/msg00097.html – pestophagous

Trả lời

3

Phiên bản emacs của tôi là 24.3. Vì vậy, tôi không thực sự chắc chắn cho dù những lời khuyên sau đây sẽ giải quyết vấn đề của bạn:

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

tôi thấy gud-display-line với arg true-file trong nguồn cũ có: 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

Hơn nữa, gdb-source-window có thể được tìm thấy trong một cuộc thảo luận khoảng 23.1: https://groups.google.com/forum/#!topic/gnu.emacs.bug/KS6bhNeJ9rc

Do đó, có vẻ như những thứ tôi đã sử dụng sẽ có sẵn trong 23.1.

Để tránh tách của cửa sổ bạn có thể thử cái này:

(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

Nó chỉ hoạt động vào lần đầu tiên cái mới, nếu GDB mở một tập tin nguồn khác thì nó sẽ chia cửa sổ chính. –

+1

Hãy xem liệu gud có chia tách một cách hợp lý hay không. Bạn có thể thử đặt 'split-height-threshold' và' split-width-threshold' thành 'nil' không? – Tobias

+2

@MarioGiovinazzo Tôi đã thêm một biến thể trong đó tôi đặt 'chiều rộng phân tách-ngưỡng' và' chiều rộng phân tách-ngưỡng 'tạm thời thành không để ngăn việc chia tách cửa sổ chính. Vui lòng thử. – Tobias

Các vấn đề liên quan