
Um Verwirrung zu vermeiden, führe ich nur ein „Fenster“ von Emacs aus und verwende daher Fenster im Sinne von Emacs. Ich möchte eine Fensteraufteilung erhalten, die, sagen wir, 70 Zoll breit ist und den Vervollständigungspuffer der neuen Aufteilung enthält, wenn ich Emacs starte. Ich glaube, ich brauche ein dediziertes Fenster. Was ich im Wesentlichen erreichen möchte, ist Folgendes.
+-----+---+
| | A |
| |---|
| C | B |
+-----+---+
C = wo ich normalerweise arbeite. A = der Abschlusspuffer (außerdem möchte ich dort Nachrichten und alles haben, was Emacs mir vorsetzt) B = eine Shell.
Zu diesem Zweck habe ich nun folgendes in meine .emacs eingefügt:
(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
Ich möchte das rechte Fenster noch einmal vertikal teilen und die Abmessungen jedes Fensters angeben können. Außerdem möchte ich, dass die dedizierte Eigenschaft des Fensters „Vervollständigungen, Nachrichten usw.“ (A) „true“ ist, damit Emacs es nicht ersetzt.
Ich habe gehört, dass viele Leute dieses Setup verwenden, aber ich kann es nirgends finden.
Antwort1
Schließlich konnte ich mit Folgendem in meiner .emacs-Datei das gewünschte Ergebnis erzielen.
(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)
Ich habe gefunden, was ich brauchte, in dieser .emacs-Datei auf GitHub.
https://github.com/garybernhardt/dotfiles/blob/master/.emacs