带有gdb的Emacs 23.1.1 - 强制源窗口

时间:2010-08-13 00:49:27

标签: emacs gdb

我正在使用带有gdb和gdb-many-windows的emacs 23.1.1。

我的问题是,是否可以强制gdb始终使用主源窗口来逐步执行代码。 当我在堆栈帧中移动时,如果我碰巧将源文件放在另一个emacs帧中,则emacs将该帧带到前台,同时在键盘焦点的背景中留下 gud

我想做的是强制emacs / gdb使用主要源窗口进行所有跟踪,即使有另一个框架在同一地方放置了相同的源文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我的emacs版本是24.3。所以我不确定以下建议是否能解决您的问题:

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

我在旧源中找到了gud-display-line arg true-filehttp://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

此外,gdb-source-window可以在关于23.1的讨论中找到: https://groups.google.com/forum/#!topic/gnu.emacs.bug/KS6bhNeJ9rc

因此,看起来我使用的东西应该在23.1中可用。

为避免分割窗口,您可以试试这个:

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