我正在使用Magit在Emacs中与Git一起工作。 我已将Magit状态绑定到一个键,但每次按下该键时,它会在窗口的下半部分拆分并且我必须按C-x 1将其放入完整的窗口。 如何使其默认在完整窗口中打开?
(setq magit-status-buffer-switch-function 'switch-to-buffer)
或者通过自定义:
M-x customize-variable
RET magit-status-buffer-switch-function
RET
对于较新版本的 Magit,您可以使用以下 官方认可的 代码片段:
(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
我将其与以下代码结合使用,以在切换项目后获得类似禅意的全窗口 Git 状态:
(setq projectile-switch-project-action 'magit-status)
(add-to-list 'same-window-regexps "\*magit: .*\*")
这种解决方案的优点在于您可以像quit-window
一样关闭全屏缓冲区:
(defadvice magit-status (around magit-fullscreen activate)
(window-configuration-to-register :magit-fullscreen)
ad-do-it
(delete-other-windows))
(defadvice magit-mode-quit-window (after magit-restore-screen activate)
"Restores the previous window configuration and kills the magit buffer"
(jump-to-register :magit-fullscreen))
(define-key magit-status-mode-map (kbd "q") 'magit-mode-quit-window)
如果您使用的是较旧版本的Magit,则可能需要将magit-mode-quit-window
重命名为 magit-quit-window
。
magit-display-buffer-function
,可以利用该函数实现相同的行为。以下代码片段将给您所需的全屏Magit奖励。(defun display-buffer-full-screen (buffer alist)
(delete-other-windows)
(set-window-dedicated-p nil nil)
(set-window-buffer nil buffer)
(get-buffer-window buffer))
(setq magit-display-buffer-function
(lambda (buffer)
(if magit-display-buffer-noselect
(magit-display-buffer-traditional buffer)
(display-buffer buffer '(display-buffer-full-screen)))))
我使用这个:
(defun my-magit-status ()
"Don't split window."
(interactive)
(let ((pop-up-windows nil))
(call-interactively 'magit-status)))
display-buffer-alist
。magit
,可以这样做:(customize-set-variable
'display-buffer-alist
'(("\\*magit: .*" display-buffer-same-window)))
(setq magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1)
其他显示函数可以通过前缀magit-display-buffer-
找到。
magit-display-buffer-function
处理。 - Mathieu MarquesM-x
customize-variable
RET
magit-display-buffer-function
RET
。 - young_souvlaki