emacs 专用完成窗口

emacs 专用完成窗口

为了防止混淆,我只运行 emacs 的一个“窗口”,因此我在 emacs 意义上使用 window 。我正在寻找一个窗口分割,假设宽度为 70,当我启动 emacs 时,它包含新分割上的完成缓冲区。我想我需要有一个专门的窗口。我基本上想要实现的目标如下。

 +-----+---+
 |     | A |
 |     |---|
 |  C  | B |
 +-----+---+

C = 我通常工作的地方。 A = 完成缓冲区(我也希望有消息以及 emacs 向我抛出的所有内容) B = 一个 shell。

为此,我现在在 .emacs 中添加了以下内容:

(split-window-horizontally)   ;; want two windows at startup 
(other-window 1)              ;; move to other window
(shell)                       ;; start a shell
(other-window 1)              ;; move back to first window 

我想再次垂直分割右侧窗口,并且希望能够指定每个窗口的尺寸。另外,我希望完成、消息、...窗口 (A) 的专用属性为 true,以便 emacs 不会替换它。

我听说很多人都使用这个设置,但我似乎无法在任何地方找到它。

答案1

最终我能够通过 .emacs 文件中的以下内容获得我想要的内容。

(progn
  (interactive)
  (split-window-horizontally)
  (other-window 1)
  (split-window)
  (other-window 1)
  (eshell)
  (other-window 1)) ;; finally change back to scratch window



;; open temporary buffers in a dedicated window split
(setq special-display-regexps
        '("^\\*Completions\\*$"
          "^\\*Help\\*$"
          "^\\*grep\\*$"
          "^\\*Apropos\\*$"
          "^\\*elisp macroexpansion\\*$"
          "^\\*local variables\\*$"
          "^\\*Compile-Log\\*$"
          "^\\*Quail Completions\\*$"
          "^\\*Occur\\*$"
          "^\\*frequencies\\*$"
          "^\\*compilation\\*$"
          "^\\*Locate\\*$"
          "^\\*Colors\\*$"
          "^\\*tumme-display-image\\*$"
          "^\\*SLIME Description\\*$"
          "^\\*.* output\\*$" ; tex compilation buffer
          "^\\*TeX Help\\*$"
          "^\\*Shell Command Output\\*$"
          "^\\*Async Shell Command\\*$"
          "^\\*Backtrace\\*$"))
(setq grb-temporary-window (nth 1 (window-list)))
(defun grb-special-display (buffer &optional data)
  (let ((window grb-temporary-window))
    (with-selected-window window
      (switch-to-buffer buffer)
      window)))
(setq special-display-function #'grb-special-display)

我在 github 上的这个 .emacs 文件中找到了我需要的东西。

https://github.com/garybernhardt/dotfiles/blob/master/.emacs

相关内容