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: Tab bar Date: Tue, 08 Apr 2008 02:35:02 +0300 Organization: JURTA Message-ID: <877if91cbl.fsf@jurta.org> References: <87wsnaso3h.fsf@jurta.org> <87d4p2tuim.fsf@jurta.org> <000201c898c9$bf7eb620$c2b22382@us.oracle.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1207611920 29670 80.91.229.12 (7 Apr 2008 23:45:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 7 Apr 2008 23:45:20 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Apr 08 01:45:52 2008 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.50) id 1Jj126-0004Iy-7Y for ged-emacs-devel@m.gmane.org; Tue, 08 Apr 2008 01:45:50 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jj11T-0000gG-2U for ged-emacs-devel@m.gmane.org; Mon, 07 Apr 2008 19:45:11 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jj10i-0008M7-Q7 for emacs-devel@gnu.org; Mon, 07 Apr 2008 19:44:24 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Jj10i-0008Ll-GK for emacs-devel@gnu.org; Mon, 07 Apr 2008 19:44:24 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jj10h-0008Li-VI for emacs-devel@gnu.org; Mon, 07 Apr 2008 19:44:23 -0400 Original-Received: from relay02.kiev.sovam.com ([62.64.120.197]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Jj10h-0001et-AH for emacs-devel@gnu.org; Mon, 07 Apr 2008 19:44:23 -0400 Original-Received: from [83.170.232.243] (helo=smtp.svitonline.com) by relay02.kiev.sovam.com with esmtp (Exim 4.67) (envelope-from ) id 1Jj10f-0000KW-Dj; Tue, 08 Apr 2008 02:44:21 +0300 In-Reply-To: (Stefan Monnier's message of "Mon, 07 Apr 2008 12:52:59 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (x86_64-pc-linux-gnu) X-Scanner-Signature: bb9f355b5be917825c280d06cf0e20ab X-DrWeb-checked: yes X-SpamTest-Envelope-From: juri@jurta.org X-SpamTest-Group-ID: 00000000 X-SpamTest-Header: Not Detected X-SpamTest-Info: Profiles 2574 [Apr 07 2008] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {HEADERS: header Content-Type found without required header Content-Transfer-Encoding} X-SpamTest-Method: none X-SpamTest-Rate: 10 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0278], KAS30/Release X-detected-kernel: by monty-python.gnu.org: FreeBSD 6.x (1) 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:94646 Archived-At: > All the current Elisp-based tabbars I've seen might be good > proofs-of-concept but are not appropriate implementations: they either > hijack the toolbar, or the header-line, neither of which is acceptable. Yes, I agree that all there PoC implementations are abuses of the header line and the toolbar, and neither of them treats correctly modes that use the header line and the toolbar in the intended way (like e.g. info.el that overwrites them with its own data). > Also they both have the corresponding limitation: tabbar.el cannot be > used for perspectives because header lines are "per-window", and > tab-bar.el cannot be used for buffers because toolbars are "per-frame". There is also a third variant implemented by elscreen.el: it uses the header line to switch between window configurations, but often it exhibits a weird behavior when it tries to keep the header line with tabs only in the top window. > I think a good implementation for a tabbar would be to use a whole > window (and buffer) for the tabbar (set mode-line-format to nil and > window-min-height to 1 or 2). Also we need to disable the fringes and the scroll bar, but I don't see how to do this in a single window. > This would allow placing it anywhere in the window tree, and hence all > both "one per frame" and "one per window". Of course, to make it work > well, we probably need some changes at the C level in order to treat > those windows specially, although we can probably kludge around it in > an Elisp-only proof-of-concept. Unless it will be possible to implement native tabbars, using a special window seems to be a good compromise. It would even allow creating arbitrary tabbar configurations, e.g. a vertical top-down tabbar on the right side of the frame like I use in Firefox that is allowed by the flexibility of the Gecko layout engine. I wish Emacs having enough primitives to implement arbitrary layouts for the tabbar and also a compilation error navigation bar, parallel to the scroll bar, that Richard wants to add to Emacs. -- Juri Linkov http://www.jurta.org/emacs/