如何在Emacs中仅在特定窗口打开文件?

6
我已经按照以下方式配置了我的emacs,并希望只在第一个窗口(*scratch*)中打开和操作源文件。但是sr-speedbar喜欢在最新的窗口(例如新打开的*shell*窗口)中打开新文件。如何阻止它在一些不需要的窗口中打开文件?enter image description here

1
(A) 你可以将特定的窗口设置为专用窗口,这样display-buffer函数族就会避免使用它。详情请见:http://www.gnu.org/software/emacs/manual/html_node/elisp/Dedicated-Windows.html
(B) 你可以根据自己的需要调整display-buffer-alist。详情请见:https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Action-Functions.html和http://www.gnu.org/software/emacs/manual/html_node/elisp/Choosing-Window.html
(C) 你可以根据自己的喜好调整speedbar的源代码。
- lawlist
我已经尝试过**(A)*,并将*shell窗口设置为专用,但sr-speedbar坚持通过分割最后一个窗口(即*shell*)来打开文件,并忽略了scratch窗口。 - ppn029012
sr-speedbar.el 库进行简单的单词搜索,搜索项为 split-window,会出现两个结果:http://www.emacswiki.org/emacs/sr-speedbar.el。我个人喜欢选项 (C) -- 修改源代码,让它按照你的意愿运行。也许你不想使用 split-window,而是想使用 display-buffer 来选择一个 已存在的 窗口?……(根据需要修改代码以适应新的修订)。 - lawlist
3个回答

1
要仅在单个窗口中打开,请自定义emacs初始化文件(在Ubuntu(18.04.01)中为(~ / .emacs),并添加以下内容。
(setq inhibit-splash-screen t)       ;; Don't show initial Emacs-logo and info 

谢谢,这正是我在寻找的,尽管我不知道它叫什么。 - dotancohen

1
我也遇到了这个问题。我的解决方案是使用purpose包,我可以亲自推荐。
它允许您为特定的“用途”专门分配窗口,每个窗口都有用户可配置的相关模式;例如,edit用途可能与prog-mode相关联,view用途可能与`info-mode相关联等。每当要打开新缓冲区时,如果当前有一个专门用于该用途的窗口,则Emacs将强制在该专用窗口中打开该缓冲区。
例如,我的默认Emacs“工作区”由一个大的edit窗口、一个IRC的comm窗口和两个admin窗口组成——一个用于RSS,另一个用于电子邮件。
强烈推荐。

0
我所做的是将我不想更改的缓冲区设置为粘性缓冲区模式(当你选择缓冲区时,只需执行M-x sticky-buffer-mode)。使用此命令切换模式。粘性缓冲区不会更改,因此如果您使您的shell成为粘性缓冲区,您应该能够得到您想要的结果。

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