1

使用 gdb-mi 在 Emacs 中调试时,*gud-xxx*窗口中的光标总是无法跳转到point-max,然后我按照其他一些设置进行advice如下设置:

(defun hack-gud-mode ()
  (when (string= major-mode "gud-mode")
    (goto-char (point-max))))

(defadvice switch-to-buffer (after switch-to-buffer-after activate)
  (hack-gud-mode))

(defadvice comint-send-input (after comint-send-input-after activate)
  (hack-gud-mode))

(defadvice windmove-do-window-select (after windmove-do-window-select-after activate)
  (hack-gud-mode))


(defadvice gud-call (after gud-call-select-after activate)
  (hack-gud-mode))

但是问题仍然存在:当我点击一些 gdb 命令并按下Retcomint-send-input)时,仍然不能保证光标会跳转。我也觉得添加这么多的建议功能太令人沮丧了。有没有更好的设置呢?

4

2 回答 2

1

我不能 100% 确定(因为我的 gdb 工作正常),但我会通过添加类似的东西来改变你的 hack-gud-mode

(run-with-timer 0.25 nil (lambda () (goto-char (point-max))))

由于 emacs 将内容发送到底层进程和 emacs 获得响应之间存在小的延迟。如果可行,则只comint-send-input需要建议

(但是,我想知道您的问题的根本原因)

于 2013-07-04T10:36:32.020 回答
1

(严格来说,为了完成,我在这里写下@assem 在评论中提出的建议。)

comint-scroll-to-bottom-on-input每当您输入内容时滚动comint缓冲区。
comint-scroll-to-bottom-on-output与输出一起滚动缓冲区(这可能是最相关的一个)。

您应该将它们都设置为t使用:

(setq comint-scroll-to-bottom-on-input t)
(setq comint-scroll-to-bottom-on-output t)

您可能还想设置comint-scroll-to-bottom-on-output'others而不是t. 这样,它只会在缓冲区当前未聚焦时滚动。

于 2013-07-04T19:17:09.687 回答