2017-11-09 13 views
0

저는 magit의 새로운 사용자이며 현재 단일 창 (magit-status)으로 별도의 프레임에서 사용하고 있습니다. 최근에 방문한 버퍼 프로젝트의 git 상태를 보여주고 싶습니다. 다른 프레임에서 두 개의 서로 다른 프로젝트 파일 두 개의 버퍼가있는 두 개의 창을 가지고 있다고 가정 해보십시오. magit 창에 현재 선택된 창에 따라 프로젝트의 자식 상태를 표시하고 싶습니다. 선택된 윈도우가 나는 window 2로 변경하면 그때는 프로젝트의 상태를 표시 window 3 싶습니다, 프로젝트 1의 상태를 보여 window 3 싶습니다 window 1 경우 Emacs - Magit은 창을 전환 할 때 다른 프로젝트에 대해 동일한 창을 다시 사용합니다.

 frame 1     frame 2 
***********************  **************** 
* window 1 * window 2 *  * window3 * 
*   *   *  *    * 
* file * file *  * magit-status * 
* of proj1 * of proj2 *  *    * 
*   *   *  *    * 
***********************  **************** 

은 명확합니다 2.

Magitmagit-display-buffer-function 변수를 설정하여 magit-status을하는 방법을 보여줍니다
+0

음, 이해가 안되네요 - 현재 버퍼에서'magit-status'를 실행하면 저장소의 상태를 보여줍니다 이 파일로. –

+0

@AlexOtt 예,하지만 다른 창에서 버퍼를 열 것입니다, 나는 이미 열린 버퍼'* magit : '이 현재 버퍼의 프로젝트에 대해 새로 고쳐지기를 바랍니다. – se7entyse7en

+0

@AlexOtt 질문이 – se7entyse7en

답변

0

여기에 내가 여기 대답에 감사를 사용하고 최종 해결책 :

https://emacs.stackexchange.com/questions/36718/magit-reuse-same-window-for-different-project-when-switching-window

참고로, 당신은 또한 버퍼를 보여 Magit에 대한 자신의 방법을 구현할 수 있습니다

(defun magit-status-autorefresh (callee) (interactive) (let ((project-previous (magit-toplevel))) (call-interactively callee) (let ((project (magit-toplevel))) (when (and project (not (equal project-previous project))) (let ((status-win (cl-some (lambda (b) (and (with-current-buffer b (derived-mode-p 'magit-status-mode)) (get-buffer-window b 'visible))) (buffer-list))) (magit-display-buffer-noselect t) (magit-display-buffer-function (lambda (buffer) (display-buffer buffer '(display-buffer-same-window))))) (when status-win (with-selected-frame (window-frame status-win) (with-selected-window status-win (magit-status-internal project)))))))) ) (defun my/other-window() (interactive) (magit-status-autorefresh 'other-window) ) (defun my/other-counsel-projectile-find-file() (interactive) (magit-status-autorefresh 'counsel-projectile-find-file) ) (defun my/other-ace-window() (interactive) (magit-status-autorefresh 'ace-window) ) 
-1

당신은 실제로 사용자 정의 할 수 있습니다.

질문을 올바르게 이해 한 경우 해당 변수가 magit-display-buffer-same-window-except-diff-v1으로 설정되어 있습니다.

이 변수를 수동으로 설정할 수도 있고 C-h v magit-dispaly-buffer-function RET을 누르고 Easy Customization을 사용할 수 있습니다.

(setq magit-display-buffer-function 
     (lambda (buffer)   
     ;; Go on 
    ))