2012-04-10 2 views
2

Ich möchte gerne das Fensterlayout des Emacs angeben, wenn ich es von der Kommandozeile aus starte.spezifiziert das Fensterlayout in Emacs auf der Kommandozeile

Insbesondere rufe ich "Emacs Datei1 Datei2 file3 file4" und würde zum Beispiel sehen, wie

+---------+        +--------+ 
| file1 |        | buff | 
|   |        | list | 
+---------+ instead of the default +--------+ that I see currently 
|   |        |  | 
| file3 |        | file4 | 
+---------+        +--------+ 

Mein Emacs GNU Emacs 24.0.91.1, und ich weiß nicht emacsclient verwenden.

Hinweis, ich möchte die Änderung nicht dauerhaft machen. Deshalb frage ich nach einer Befehlszeilenlösung.

Antwort

2

die in folgenden Put layout.el

(setq inhibit-startup-screen t) 

(defun ordered-window-list-aux (tree) 
    (if (windowp tree) 
     (list tree) 
    (append (ordered-window-list-aux (nth 2 tree)) 
      (ordered-window-list-aux (nth 3 tree))))) 

(defun ordered-window-list() 
    "Lists windows from top to bottom, left to right." 
    (ordered-window-list-aux 
    (car (window-tree)))) 

(require 'cl) 

(defun fill-windows() 
    "Make window list display recent buffer." 
    (mapcar* 
    (lambda (win buf) 
    (set-window-buffer win buf)) 
    (nreverse (ordered-window-list)) 
    (buffer-list))) 

(delete-other-windows) 

;; your window configuration 
(split-window-horizontally) 
(split-window-vertically) 

;; Make window list display recent buffer 
(fill-windows) 

Dann

emacs blah foo bar --load layout.el 

Das einzige, was Sie das Layout der Art und Weise zu tun haben, ist die Anpassung Sie eine Kombination der folgenden Funktionen verwendet werden sollen:

(split-window-horizontally) 
(split-window-vertically) 
(other-windows 1) 
+0

Vielen Dank für Ihre Hilfe. Wohingegen der Code, den du zur Verfügung gestellt hast, nicht für mich funktioniert (und ich verstehe es nicht, um es zu reparieren). Was Sie jedoch tun, gab mir eine Idee, wie ich mein Problem lösen könnte. Ich habe "layout.el" wie vorgeschlagen erstellt und eine einzelne Zeile hinzugefügt (add-hook 'emacs-startup-hook (lambda() (anderes-Fenster 1) (switch-to-buffer ")"))) " um den Effekt zu erreichen, wollte meine ursprüngliche Frage. Um zusätzliche Änderungen zu erhalten, kann ich (Split-Fenster-horizontal) (Split-Fenster-vertikal) wie Sie vorgeschlagen verwenden. –

+0

Inwiefern funktioniert das nicht? – thisirs

+0

Wenn ich den Code wie angegeben benutze, bekomme ich vier Fenster. Der unterste ist der größte nimmt die untere Hälfte des Rahmens, und enthält "bar", darüber sind drei Fenster. Der rechte von ihnen nimmt die rechte Hälfte des Raumes und enthält "foo". Der linke obere Teil ist aufgeteilt zwischen "blah" und "* Scratch", mit "blah" auf der Unterseite und "* scratch" auf der Oberseite. Wenn ich "(Split-Fenster-Vertikal)" auskommentiere, bekomme ich drei Fenster mit "blah", "foo" und "bar". Wenn ich zusätzlich "(split-window-horizontal)" auskommentiere, bekomme ich "foo" oben und "Buffer List" unten. –

Verwandte Themen