From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: Window configurations Date: Wed, 28 Apr 2010 11:35:33 +0300 Organization: JURTA Message-ID: <87mxwom16s.fsf@mail.jurta.org> References: <4BB4CF6B.2000007@alice.it> <4BC0BD6D.3060103@swipnet.se> <4BC0F715.2060605@alice.it> <45EB8DD4-B0F8-4FB3-941F-13FADA4DAD66@swipnet.se> <4BC1854B.2060409@alice.it> <4BC1A9D2.8050607@swipnet.se> <4BC206C0.2010202@alice.it> <87fx2pdvfq.fsf@mail.jurta.org> <87y6gg95ad.fsf@mail.jurta.org> <750140A47B7D4FBD93371813D65478F8@us.oracle.com> <87eii63v4j.fsf@mail.jurta.org> <0840B3F4D9E84706874EDD2CA2CC4236@us.oracle.com> <87vdbhgqgd.fsf@mail.jurta.org> <828BB36311A84C43B96D1F2A559DACAE@us.oracle.com> <87d3xo662u.fsf@mail.jurta.org> <69D40D69CC6F4982A8E91D8D8F0F494F@us.oracle.com> <87r5m4hz39.fsf@mail.jurta.org> <4BD40821.70808@gmx.at> <87zl0rtmqy.fsf@mail.jurta.org> <4BD5BC62.5070306@gmx.at> <53146.130.55.118.19.1272398101.squirrel@webmail.lanl.gov> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1272443924 30342 80.91.229.12 (28 Apr 2010 08:38:44 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 28 Apr 2010 08:38:44 +0000 (UTC) Cc: martin rudalics , 'Emacs' To: herring@lanl.gov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Apr 28 10:38:41 2010 connect(): No such file or directory Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1O72n2-0005g4-Uv for ged-emacs-devel@m.gmane.org; Wed, 28 Apr 2010 10:38:41 +0200 Original-Received: from localhost ([127.0.0.1]:40400 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O72n2-0005EE-3f for ged-emacs-devel@m.gmane.org; Wed, 28 Apr 2010 04:38:40 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O72lw-0004JX-CF for emacs-devel@gnu.org; Wed, 28 Apr 2010 04:37:32 -0400 Original-Received: from [140.186.70.92] (port=44846 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O72lu-0004IH-W7 for emacs-devel@gnu.org; Wed, 28 Apr 2010 04:37:32 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O72lo-0008BV-Io for emacs-devel@gnu.org; Wed, 28 Apr 2010 04:37:30 -0400 Original-Received: from smtp-out2.starman.ee ([85.253.0.4]:58422 helo=mx2.starman.ee) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O72ln-0008Ap-Ei for emacs-devel@gnu.org; Wed, 28 Apr 2010 04:37:24 -0400 X-Virus-Scanned: by Amavisd-New at mx2.starman.ee Original-Received: from mail.starman.ee (82.131.68.98.cable.starman.ee [82.131.68.98]) by mx2.starman.ee (Postfix) with ESMTP id BADC93F41FD; Wed, 28 Apr 2010 11:37:18 +0300 (EEST) In-Reply-To: <53146.130.55.118.19.1272398101.squirrel@webmail.lanl.gov> (Davis Herring's message of "Tue, 27 Apr 2010 12:55:01 -0700 (PDT)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (x86_64-pc-linux-gnu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:124285 Archived-At: > Why not store a configuration as a (resolution-independent) tree: > > subtree = window | tree ; > tree = "(", horiz, subtree, split, { split }, ")" ; > split = fraction, subtree ; > horiz = nil | t ; (* t for C-x 3 *) > fraction = ? float ? ; > window = ? ... ? ; (* the hard part *) > > very much like (window-tree)? A window-tree format is good for androids. But for human beings it is too complicated. Please see how ECB defines window configurations as a plain list of function calls because it is more simple and convenient for human users: (ecb-set-directories-buffer) (ecb-split-ver 0.3) (ecb-set-sources-buffer) (ecb-split-ver 0.5) (ecb-set-methods-buffer) (select-window (previous-window)) (ecb-split-hor 0.5) (ecb-set-history-buffer) But this format has one drawback - it is procedural. Using a declarative, more general and future-proof format: (window A (buffer . A)) (window B (buffer . B) (left-window . A)) (window C (buffer . C) (top-window . A)) (window D (buffer . D) (top-window . B) (left-window . C)) will create +-+-+ |A|B| +---+ |C|D| +-+-+ and with a different order of window definitions: (window A (buffer . A)) (window C (buffer . C) (top-window . A)) (window B (buffer . B) (left-window . A)) (window D (buffer . D) (top-window . B) (left-window . C)) will create +-+-+ |A|B| +-|-+ |C|D| +-+-+ -- Juri Linkov http://www.jurta.org/emacs/