gpt4 book ai didi

emacs - M-x 编译更好的最终状态

转载 作者:行者123 更新时间:2023-12-01 23:42:33 25 4
gpt4 key购买 nike

当我说 M-x compile 时,通常会调用 make 程序。完成后,缓冲区 *compilation* 通常处于不希望的状态:窗口的一半是空的(可能需要更多输出)。使用 C-l C-l 我可以移动到缓冲区中的最后一行到窗口底部 - 这样我就可以看到更多的实际编译过程。

是否有一种简洁的方法来配置编译,使窗口始终显示最大行数 - 至少在最后?

最佳答案

这是我想出的(把它放在你的 .emacs 中)。

(defun compilation-redisplay (proc msg)
"Scroll the current window to fit the tail of the buffer
in. This only fires if `compilation-scroll-output' is true"
(when (memq (process-status proc) '(exit signal))
(let ((buffer (process-buffer proc)))
;; Check that the buffer hasn't already been killed
(unless (null (buffer-name buffer))
(with-current-buffer buffer
;; Check we're at the bottom of the buffer and that we're there
;; because compile.el put us there
(when (and compilation-scroll-output
(= (point) (point-max)))
(with-selected-window (get-buffer-window)
;; This logic is pinched from recenter-top-bottom (window.el)
(recenter
(- -1 (min (max 0 scroll-margin)
(truncate (/ (window-body-height) 4.0))))))))))))

(advice-add 'compilation-sentinel :after #'compilation-redisplay)

这个想法是它在编译过程完成时运行。然后它会做一些检查以确保有一个合理的缓冲区,compilation-scroll-output 已设置,并且该点位于缓冲区的底部(您不希望如果你有一个漫长的编译过程并且你已经开始仔细研究输出,那么东西就会跳来跳去)。最后,从 recenter-top-bottom 中的代码中窃取了 recenter 调用。

关于emacs - M-x 编译更好的最终状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com