
Чтобы избежать путаницы, я запускаю только одно "окно" emacs, поэтому я использую window в смысле emacs. Я хочу получить разделение окна, которое, скажем, шириной 70, содержит буфер дополнений в новом разделе, когда я запускаю emacs. Я думаю, мне нужно иметь выделенное окно. В основном я пытаюсь добиться следующего.
+-----+---+
| | A |
| |---|
| C | B |
+-----+---+
C = там, где я обычно работаю. A = буфер завершения (я также хотел бы, чтобы там хранились сообщения и все, что мне выдает emacs). B = оболочка.
Для этой цели я теперь добавил в свой .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
Я хотел бы разделить правое окно еще раз по вертикали и хотел бы иметь возможность указать размеры каждого окна. Также я хотел бы, чтобы выделенное свойство окон completions, messages, ... (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)
Я нашел то, что мне было нужно, в этом файле .emacs на github.
https://github.com/garybernhardt/dotfiles/blob/master/.emacs