2012-06-13 7 views
6

Emacsウィンドウがすでに分割されていることを検出するにはどうすればよいですか?私.emacsファイルでEmacsウィンドウの検出は既に分割されています

は、私が持っている:

(when (display-graphic-p) 
    (set-frame-size (selected-frame) 166 85) 
    (split-window-horizontally)) 

私はサイド・バイ・サイド2つのバッファ、広いそれぞれ正確に80文字を持つことができました。

毎回私の.emacsファイルを変更して、それを所定の場所にリロードしたいので、私は.emacsファイルにM-x load-fileを実行します。そのウィンドウは再分割されます。

フレームが既に分割されているかどうかを確認するコールがあり、それがない場合は(split-window-horizontally)と呼ぶことができますか?何かのように:あなたが行うことができるはずので

(when (window-is-root) 
    (split-window-horizontally)) 

または

(when (not (window-is-already-split)) 
    (split-window-horizontally)) 

答えて

10

window-listは、あなたに(現在のフレームの)ウィンドウのリストを返します。

(when (= (length (window-list)) 1) 
    (split-window-horizontally)) 

チェックrelevant documentation for windowsを送信してください。

+0

は完璧に動作し、感謝!そして、ドキュメントポインタにも感謝します。私はこのページを見つけました:http://www.gnu.org/software/emacs/manual/html_node/elisp/Splitting-Windows.html#Splitting-Windowsしかし、それは有用な情報を持っていないようです。 – sligocki

-3

これは無意味な質問ですが、ウィンドウは分割されません。

はい、split-window ...という名前の関数がありますが、それは単にウィンドウのサイズを縮小し、解放されたスペースに新しいサイズを作成することです。

フレームごとに少なくとも1つのウィンドウがあるので(ミニバッファのsimili-windowを数えないので)、(= 1(length(window-list))を使うことはできません。

あなたが試みることができる:

(< (length (frame-list)) (length (window-list))) 

をしかし、あなたが実際に求めているものを選択されたフレーム内の複数のウィンドウがある場合は、明らかに、それはいくつか含まれている別のフレームかもしれないので、それは、あなたを教えてくれありません窓。

ですから、正しく質問をする場合は、「どのように私は、選択したフレームは、複数のウィンドウが含まれているかどうかを知ることができる」、あなたは簡単に答えを見つけることができます。

(require 'cl) 

(defun complement (fun) 
    (byte-compile `(lambda (&rest args) (not (apply ',fun args))))) 

(defun* more-than-one-window-in-frame-p (&optional (frame (selected-frame))) 
    (< 1 (length (remove* frame (window-list) 
         :key (function window-frame) 
         :test (complement (function eql)))))) 
+2

機能:ウィンドウリストとオプションのフレームミニバッファウィンドウ。 この関数は、フレームフレームに属するライブウィンドウのリストを返します。 frameが省略されているかnilの場合は、デフォルトで選択されているフレームになります。したがって、このフレーム内のウィンドウのみを返します。私は '(=(length(window-list))1)'を2つのフレームで試してみました。 – sligocki

+2

送信元:http://www.gnu.org/software/emacs/manual/html_node/elisp/Windows-and-Frames.html#Windows-and-Frames – sligocki

関連する問題