如何在全屏窗口中打开magit-status

32

我正在使用Magit在Emacs中与Git一起工作。 我已将Magit状态绑定到一个键,但每次按下该键时,它会在窗口的下半部分拆分并且我必须按C-x 1将其放入完整的窗口。 如何使其默认在完整窗口中打开?

8个回答

31
(setq magit-status-buffer-switch-function 'switch-to-buffer)

或者通过自定义:

M-x customize-variable RET magit-status-buffer-switch-function RET


17
请注意,目前的Magit中,新缓冲区的行为由 magit-display-buffer-function 处理。 - Mathieu Marques
1
这将把命令更改为 M-x customize-variable RET magit-display-buffer-function RET - young_souvlaki

23

对于较新版本的 Magit,您可以使用以下 官方认可的 代码片段:

(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)

我将其与以下代码结合使用,以在切换项目后获得类似禅意的全窗口 Git 状态:

(setq projectile-switch-project-action 'magit-status)


4
这实际上是完整框架,对于全窗口而言,它是"magit-display-buffer-same-window-except-diff-v1"。 - ergosys
3
感谢您添加了这个很棒的弹道附加功能! - Git.Coach
退出时保持相同的缓冲区打开,有什么办法吗? - Jacob Pavlock

8
这里有另一种方法来实现这个功能: (add-to-list 'same-window-regexps "\*magit: .*\*")

4

这种解决方案的优点在于您可以像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


3
注意!Magit的新版本使用函数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)))))

3

我使用这个:

(defun my-magit-status ()
  "Don't split window."
  (interactive)
  (let ((pop-up-windows nil))
    (call-interactively 'magit-status)))

1
另一个选择是自定义变量display-buffer-alist
如果你只需要magit,可以这样做:
(customize-set-variable
     'display-buffer-alist
     '(("\\*magit: .*" display-buffer-same-window)))

不错,但对于最近版本的 magit,您需要在条件中删除前导星号:““magit: .*””。 - tmalsburg
不错,但对于最新版本的 magit,您需要在条件中去掉前导的星号:"magit: .*" - tmalsburg

1
对于Magit v2.90.1,正确的答案并不适合我。使用下面这行代码可以获得最佳结果。
(setq magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1)

其他显示函数可以通过前缀magit-display-buffer-找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接