我正在使用Magit在emacs中使用git。我已将magit-status绑定到一个键,但每次我按下它时,它会在窗口的下半部分中打开,我必须按C-x 1才能进入一个完整的窗口。默认情况下,如何在完整窗口中打开它?
答案 0 :(得分:26)
(setq magit-status-buffer-switch-function 'switch-to-buffer)
或通过自定义:
M-x customize-variable
RET magit-status-buffer-switch-function
RET
答案 1 :(得分:6)
以下是实现此目的的另一种方法:
(add-to-list 'same-window-regexps "\*magit: .*\*")
答案 2 :(得分:5)
对于较新版本的magit,您可以使用以下sanctioned代码段:
(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
在切换项目后,我将其结合起来以获得类似zen的全窗口git状态:
(setq projectile-switch-project-action 'magit-status)
答案 3 :(得分:3)
此解决方案的优势在于您可以使用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
。
答案 4 :(得分:2)
我用这个:
(defun my-magit-status ()
"Don't split window."
(interactive)
(let ((pop-up-windows nil))
(call-interactively 'magit-status)))
答案 5 :(得分:2)
请注意!较新版本的magit使用函数magit-display-buffer-function
,这可以用来获得相同的行为。以下代码片段将为您提供所需的全屏幕魔术奖励。
(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)))))
答案 6 :(得分:1)
另一个选择是自定义变量display-buffer-alist
。
如果你想要的只是magit
,你可以这样做:
(customize-set-variable
'display-buffer-alist
'(("\\*magit: .*" display-buffer-same-window)))
答案 7 :(得分:0)
对于Magit v2.90.1,正确的答案不适合我。在下面的行中,它取得了最佳效果。
(setq magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1)
其他显示功能可以通过前缀magit-display-buffer-
找到。