2012-04-10 4 views
2

명령 행에서 시작할 때 이맥스의 창 레이아웃을 지정할 수 있기를 원합니다.명령 행에서 emacs의 창 레이아웃을 지정하십시오.

은보다 구체적으로, 나는 "이맥스 파일 1 파일 2 파일 3 file4"호출하고 GNU Emacs의 24.0.91.1, 예를 들어, 같은

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

내 이맥스를 볼 것이다, 나는는 emacsclient를 사용하지 않습니다.

참고, 저는 변경 사항을 영구히하고 싶지 않습니다. 그래서 커맨드 라인 솔루션을 요구합니다.

:

답변

2

은 다음 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) 

emacs blah foo bar --load layout.el 

당신이 레이아웃 당신이 다음과 같은 기능의 조합을 사용하여 원하는 방식으로 정의된다해야 할 유일한 것은에 다음을 넣어

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

도움 주셔서 감사합니다. 당신이 제공 한 코드가 나를 위해 작동하지 않는 반면 (그리고 그것을 고칠 이해가 안되는). 그러나, 당신이하는 일은 내 문제를 해결하는 방법을 알려주었습니다. 나는 당신이 제안한대로 "layout.el"을 만들었고 "add-hook emacs-startup-hook (lambda() (다른 창 1) (switch-to-buffer"bar ")) 내 원래의 질문이 원하는 효과를 얻을 수 있습니다. 추가 수정 사항을 얻으려면 내가 제안한대로 (분할 창 - 수평) (분할 창 - 수직)을 사용할 수 있습니다. –

+0

어떤 점에서 이것이 작동하지 않습니까? – thisirs

+0

주어진 코드를 사용하면 4s 창이 나타납니다. 가장 밑바닥이 가장 큰 것은 프레임의 아래쪽 절반을 차지하며 "막대"를 포함하며 위에는 세 개의 창이 있습니다. 가장 오른쪽은 공간의 오른쪽 절반을 차지하며 "foo"를 포함합니다. 왼쪽 상단 부분은 하단에 "blah"가 있고 상단에 "* scratch"가있는 "blah"와 "scratch"로 나뉩니다. "(split-window-vertically)"라고 말하면 "blah", "foo"및 "bar"가있는 세 개의 창이 나타납니다. 덧붙여 "(split-window-horizontally)"라고 말하면 "foo"가 맨 위에, "Buffer List"가 아래에 있습니다. –

관련 문제