Zur Zeit arbeite ich mit ruby und rspec. Ich mag die Idee wirklich, einen separaten Frame in einem anderen Monitor zu haben, der mir den Kompilierungspuffer zeigt. Mein aktuelles Setup verwendet einen 'Code'-Frame (in dem ich die eigentliche Arbeit erledige) und einen' Testergebnis'-Frame (in dem ich die angegebenen Ergebnisse sehe).
Das Problem ist, dass wenn ich versuche, einen Kompilierungsfehler oder eine Datei im Rahmen "Testergebnis" zu öffnen, das Fenster in diesem Rahmen geteilt wird. Was ich wirklich gerne tun würde, ist, dass es in meinem 'Code'-Frame geöffnet wird.
Ich nutze die Option bereits display-buffer-reuse-frames
. Ich habe auch versucht, das Fenster mit den Kompilierungsergebnissen festzulegen dedicated
, aber wenn Emacs versuchen, ein neues Fenster zu öffnen, wird ein neuer Rahmen erstellt (was besonders schrecklich ist, wenn Sie Helm verwenden).
Gibt es einen einfachen Weg, dies zu erreichen?
popwin.el
MELPA, um Popup-Kompilierungs- und Hilfspuffer aufzurufen, die bestehen bleiben, bisC-g
gedrückt wird. Wenn ich sie ganztägig brauche, wechsle ich einfach in einem anderen Fenster zu ihnen. Ich habe nicht daran gedacht, Fenster festzunageln, weil Emacs es tutsplit-windows-sensibly
.Antworten:
Sie müssen den 600-Pfund-Gorilla konfigurieren,
display-buffer-alist
der festlegt,display-buffer
wo ein Puffer angezeigt werden soll. Es machtdisplay-buffer-reuse-frames
in neueren Emacsen obsolet. Hier ist eine Konfiguration, die Sie führen sollte (zumindest in Emacs 24.3).Wie Sie sehen, verwende ich einen regulären Ausdruck, um den Kompilierungsprotokollpuffer abzugleichen. Die Dokumentation von
display-buffer
soll Ihnen eine Vorstellung davon geben, was gerade passiert. Nur ein Hinweis darauf, dass es nicht die unterhaltsamste Dokumentation ist, die Sie jemals lesen werden. Ich habe sie der Reihe nach hinzugefügt, damit der reguläre Ausdruck des Kompilierungsprotokolls vor dem generischen regulären Ausdruck abgeglichen wird. Passen Sie den regulären Ausdruck an Ihre Bedürfnisse an.BEARBEITEN Um einen Frame nicht teilbar zu machen, können Sie ihn
M-: (set-frame-parameter nil 'unsplittable t)
in diesem Frame auswerten . Ersetzen Sie nil durch erforderlich,FRAME
wenn Sie dies von elisp aus tun. Zwischen diesen beiden Einstellungen sollte der Kompilierungsrahmen exklusiv sein, es sei denn, Sie finden ausdrücklich eine Datei in diesem Rahmen.quelle