如何强制特定缓冲区在新窗口中打开?


12

在Magit中提交更改时,打开diff视图并添加有关提交的详细信息很有用。

在Magit中,我们看到*magit ..*缓冲区中的差异。当你打cc,而光标在上演文件时,Magit提交缓冲.. COMMIT_EDITMSG弹起。默认情况下,此新缓冲区将替换*magit ..*显示提交差异的缓冲区。

问题- 如何使.. COMMIT_EDITMSG缓冲区在新窗口中打开(如果框架仅以1个窗口开头,请重用其他窗口或创建新窗口),以便我能同时看到*magit ..*.. COMMIT_EDITMSG缓冲区?


Answers:


17

可以使用来配置缓冲区的打开方式(在同一帧/窗口或不同的帧/窗口中)display-buffer-alist。请参考以下参考资料,以了解有关此变量的更多信息。

我们需要告诉emacs始终打开COMMIT_EDITMSG以窗口结尾但不在同一(*magit ..*)窗口结尾的缓冲区。

将以下代码段添加到init.el之后(require 'magit)以指定此操作。

(add-to-list 'display-buffer-alist
                 '(".*COMMIT_EDITMSG". ((display-buffer-pop-up-window) .
                                        ((inhibit-same-window . t)))))

解决方案细目

display-buffer-alist是当a 为true 时使用参数alist调用a FUNCTION(或函数列表)的。的可以表示为,ALISTCONDITIONdisplay-buffer-alist

'(CONDITION . (FUNCTION . ALIST))
  • CONDITION是缓冲区名称以结尾的,COMMIT_EDITMSG由表示".*COMMIT_EDITMSG"
  • FUNCTION调用是display-buffer-pop-up-window因为我们要创建这个缓冲区的一个窗口。而不是单独指定功能,而是将其作为单个功能的列表放入,(display-buffer-pop-up-window)以便将来需要时可以将更多功能轻松添加到列表中。
  • ALIST含有(inhibit-same-window . t)因为我们不希望这个缓冲区在同一个窗口中打开。

参考文献


2

v2.1.0默认情况下,以Magit开头会显示正在提交的更改以及用于写入提交消息的缓冲区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.