select-gud-interaction-window

最近尝试在Emacs里面调用gdb调试程序,使用了gdb-many-windows这个特性,一个frame上开5个window(参见截图)。窗口多了切换便成了问题,很快就放弃使用C-x o,而用了鼠标。而来发现可以使用windmove,只要在.emacs文件里面加上:

(windmove-default-keybindings)

然后就可以使用Shift加方向键来移动光标到不同窗口。然而,好多快捷键只有当光标在GUD interaction buffer时才有效,我就写了一个命令,并绑定在F9上,一键返回GUD interaction buffer所在的window。

(defun select-gud-interaction-window ()
  (interactive)
  (if (and (boundp 'gud-comint-buffer)
	   gud-comint-buffer
	   (window-live-p (get-buffer-window gud-comint-buffer)))
      (select-window (get-buffer-window gud-comint-buffer))
    (message "GUD interaction window is inactive")))

(define-key global-map [(f9)] 'select-gud-interaction-window)

更多emacs配置参见我的.emacs文件

3 thoughts on “select-gud-interaction-window

  1. 我绑定到f10的:

    (setq preferred-debugger-alist
    ‘((c-mode . gdb)
    (c++-mode .gdb)
    (cperl-mode . perldb)
    (jde-mode . jdb)
    ))
    (defun humble-gud ()
    “gdb if not already running, otherwise bring to front”
    (interactive)
    (require ‘gud)
    (if (and (boundp ‘gud-comint-buffer) ;find running gdb process
    gud-comint-buffer
    (buffer-name gud-comint-buffer)
    (get-buffer-process gud-comint-buffer))
    (if (fboundp ‘gdb-restore-windows)
    (gdb-restore-windows)
    (pop-to-buffer gud-comint-buffer))
    (call-interactively
    (or (cdr (assq major-mode preferred-debugger-alist))
    ‘gdb))))

  2. 匿名 says:

    一直在用,不过公司的系统不知道为什么进入gdb需要很长时间。不过我从来没有你们这个需求,呵呵。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据