From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Stephen J. Turnbull" Newsgroups: gmane.emacs.devel Subject: Re: Tabs are ready? -> Let us give a definition of tabs. Date: Mon, 06 Feb 2012 23:46:24 +0900 Message-ID: <877h00yq7z.fsf@uwakimon.sk.tsukuba.ac.jp> References: <4F2E5D33.6020406@gmx.at> <4F2E8185.4080706@gmx.at> <4F2EC768.4050603@gmx.at> <4F2FAD31.9040702@gmx.at> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 X-Trace: dough.gmane.org 1328539609 20998 80.91.229.3 (6 Feb 2012 14:46:49 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 6 Feb 2012 14:46:49 +0000 (UTC) Cc: Juri Linkov , martin rudalics , Emacs Dev To: Alin Soare Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 06 15:46:42 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RuPq4-0002xt-6v for ged-emacs-devel@m.gmane.org; Mon, 06 Feb 2012 15:46:40 +0100 Original-Received: from localhost ([::1]:39091 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RuPq3-0003Jb-PS for ged-emacs-devel@m.gmane.org; Mon, 06 Feb 2012 09:46:39 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:41810) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RuPpv-0003Ex-Vb for emacs-devel@gnu.org; Mon, 06 Feb 2012 09:46:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RuPpr-00078l-Ig for emacs-devel@gnu.org; Mon, 06 Feb 2012 09:46:31 -0500 Original-Received: from mgmt2.sk.tsukuba.ac.jp ([130.158.97.224]:41613) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RuPpr-00078I-0x for emacs-devel@gnu.org; Mon, 06 Feb 2012 09:46:27 -0500 Original-Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp [130.158.99.156]) by mgmt2.sk.tsukuba.ac.jp (Postfix) with ESMTP id D099B9707AB; Mon, 6 Feb 2012 23:46:24 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id 9A2131A282A; Mon, 6 Feb 2012 23:46:24 +0900 (JST) In-Reply-To: X-Mailer: VM undefined under 21.5 (beta31) "ginger" e6b5c49f9e13 XEmacs Lucid (x86_64-unknown-linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 130.158.97.224 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:148263 Archived-At: Alin Soare writes: > > > 3. when grep finds something, and the tab is hidden , the tab widget to > > > change the color > > > > What sense does it make to have a hidden tab change color? And what > > kind of event is this in your nomenclature? Alin, in English the physical metaphor that "tab" invokes refers to the small piece of a folder or notebook divider that sticks out where you can find it in a stack. It specifically does *not* refer to the content area that is linked with the tab. So if the tab is hidden (eg, by another row of tabs), you can't see it change color! This precise definition may be difficult to understand from the way native speakers use the term, but I assure you your usage is confusing the hell out of the native speakers here. As well as some of the non-native speakers, as I presume Martin is. > Tabs should register a callback for an event , for example, when i/o > arrives in the given process... You're going around in circles. Martin knows how events and callbacks work. > Quite so, you can do this functionality using only M-x and calling lisp > functions. Or menu entries. But I am sure most people would be happy to be > able to define a tab that shows a 'grep process. I doubt it. In real life as defined in the English language, a tab is a way to quickly find a flat object in a neat stack of flat objects of similar size and shape, such as pages of an address book or file folders in a file cabinet. It is very similar to a bookmark (I mean things the ribbon you find in a nicely bound book or some odd scrap of paper, not the web browser sort), except that bookmarks are ad hoc and tend to have no fixed relationship to the content that they mark, while tabs are systematic, and have a fixed relationship to content. Eg, a common tabbed object is an address book, and the tabs are small areas that stick out, have labels such as "A", "B", "C", and the related content is "names that start with A," and so on. Another example is a product manual divided into sections, such as the well known Unix manual with "Commands", "OS entry points", "Standard library", and so on. In computers, because software is more dynamic than printed books (even looseleaf notebooks), tabs tend to be more ad hoc. Still, they're really just glorified bookmarks, usually coming in sets with some sort of relationship to each other. So basically a tab control is just a set of windows (or frames) that share the same screen real estate, with a visible but nonobtrusive GUI to switch windows (frames) quickly.[1] I can easily believe that *you* might use a tab to invoke a grep process, and there's nothing wrong with that if you want that . However, that is not the way most people think of tabs. Most people would invoke the grep process with M-! or a menu item or maybe a toolbar button, and then -- if the output was to be referred to frequently -- they *might* use a tab to navigate to *Shell Command Output* buffer that holds that output. I doubt very many people would find it natural to invoke commands with a tab. In practice, the only things that a tab needs is a Lisp object to represent it and to keep track of its screen real estate, and a small API to control its appearance. Everything else can be defined in terms of existing Lisp primitives (eg, your grep example with the tab changing color when the associated process buffer receives output could be implemented with a process sentinel). Footnotes: [1] That's not 100% accurate, depending on how you think of GUI window decorations etc, but it's close enough.