31

我正在使用 Magit 在 emacs 中使用 git。我已将 magit-status 绑定到一个键,但每次我按下该键时,它都会在窗口的下半部分打开,我必须点击 Cx 1 才能将它变成一个完整的窗口。我怎样才能让它默认在一个完整的窗口中打开?

4

8 回答 8

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

或通过自定义:

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

于 2012-02-25T02:25:10.707 回答
20

对于较新版本的 Magit,您可以使用这个经过批准的代码段:

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

我将它与它结合起来,在切换项目后获得类似禅宗的全窗口 Git 状态:

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

于 2018-10-04T05:50:21.447 回答
8

这是实现此目的的另一种方法:

(add-to-list 'same-window-regexps "\*magit: .*\*")

于 2014-07-30T00:58:44.887 回答
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-windowmagit-quit-window.

于 2014-02-20T16:24:06.697 回答
3

我用这个:

(defun my-magit-status ()
  "Don't split window."
  (interactive)
  (let ((pop-up-windows nil))
    (call-interactively 'magit-status)))
于 2012-02-25T01:21:28.240 回答
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)))))
于 2016-04-13T15:57:26.103 回答
1

另一种选择是自定义变量display-buffer-alist

如果你想要的只是magit,你可以这样做:

(customize-set-variable
     'display-buffer-alist
     '(("\\*magit: .*" display-buffer-same-window)))
于 2017-02-02T20:58:22.270 回答
0

对于 Magit v2.90.1,正确答案不适合我。使用下面的线,它取得了最好的结果。

(setq magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1)

其他显示功能可以通过前缀找到magit-display-buffer-

于 2019-10-25T07:53:49.283 回答