unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Tabbed buffers
@ 2008-01-25 21:57 Nick Roberts
  2008-01-25 22:40 ` Miles Bader
  2008-01-26  9:10 ` Eli Zaretskii
  0 siblings, 2 replies; 66+ messages in thread
From: Nick Roberts @ 2008-01-25 21:57 UTC (permalink / raw)
  To: emacs-devel


On help-gnu-emacs, Per Nordlöw has asked about showing the threads view by
default in gdb-ui.  The problem is trying to fit so many windows in a single
frame.  Eclipse gets round this problem by displaying tabbed panes.  I know
that you can do something like this in Emacs using tabbar.el.  Nowadays though,
many applications, e.g., Firefox, use the underlying toolkit for this.  I
wonder if we should add such a feature to Emacs at the C level, at least for
GTK.


-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-25 21:57 Tabbed buffers Nick Roberts
@ 2008-01-25 22:40 ` Miles Bader
  2008-01-25 23:41   ` Nick Roberts
  2008-01-26  9:14   ` Tabbed buffers Eli Zaretskii
  2008-01-26  9:10 ` Eli Zaretskii
  1 sibling, 2 replies; 66+ messages in thread
From: Miles Bader @ 2008-01-25 22:40 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

Nick Roberts <nickrob@snap.net.nz> writes:
> Eclipse gets round this problem by displaying tabbed panes.  I know
> that you can do something like this in Emacs using tabbar.el.
> Nowadays though, many applications, e.g., Firefox, use the underlying
> toolkit for this.  I wonder if we should add such a feature to Emacs
> at the C level, at least for GTK.

It seems like it would need some thought to work well in Emacs, as
tabbed user interfaces quickly become unusable if there lots of tabs,
and Emacs buffer counts are quite often _way_ over that threshold.

-Miles

-- 
"Most attacks seem to take place at night, during a rainstorm, uphill,
 where four map sheets join."   -- Anon. British Officer in WW I

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-25 22:40 ` Miles Bader
@ 2008-01-25 23:41   ` Nick Roberts
  2008-01-26  0:07     ` Miles Bader
  2008-01-26  9:14   ` Tabbed buffers Eli Zaretskii
  1 sibling, 1 reply; 66+ messages in thread
From: Nick Roberts @ 2008-01-25 23:41 UTC (permalink / raw)
  To: Miles Bader; +Cc: emacs-devel

 > It seems like it would need some thought to work well in Emacs, as
 > tabbed user interfaces quickly become unusable if there lots of tabs,
 > and Emacs buffer counts are quite often _way_ over that threshold.

I'm sure it will take some work but I'm not suggesting that *all* the buffers
buffers are displayed in tabbed windows, just as currently not all the buffers
are displayed in normal windows.

In terms of lisp interface, for example, there could be optional extra argument
to display-buffer which gets ignored if Emacs doesn't support tabbed windows
for the toolkit with which it has been built.

--- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-25 23:41   ` Nick Roberts
@ 2008-01-26  0:07     ` Miles Bader
  2008-01-26  2:47       ` Stefan Monnier
  0 siblings, 1 reply; 66+ messages in thread
From: Miles Bader @ 2008-01-26  0:07 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

Nick Roberts <nickrob@snap.net.nz> writes:
> > It seems like it would need some thought to work well in Emacs, as
> > tabbed user interfaces quickly become unusable if there lots of
> > tabs, and Emacs buffer counts are quite often _way_ over that
> > threshold.
>
> I'm sure it will take some work but I'm not suggesting that *all* the
> buffers buffers are displayed in tabbed windows, just as currently not
> all the buffers are displayed in normal windows.

You have to be careful though, as I think typical user-experience is
with tools that _do_ put all "buffers" (or whatever term they use) in
tabs, so users will expect that they are.

Actually though, I suppose using the GUI's existing tab overflow
mechanism is probably good enough in many cases (e.g., which limits the
number of tabs, and puts remaining stuff in a menu which can be popped
up by a "..."  button on the far right).

My experiences with debuggers that use tabs are

  (1) Eclipse, which has an aggressive pruning/overflow mechanism.

      This keeps the number of tabs low, so the tab labels remain easily
      readable, but I've found that my typical "debugging working set"
      is larger than the number of tabs shown by default, and it quickly
      becomes annoying having to select tabs from the menu (you'd think
      it wouldn't be such a big deal, but for whatever reason I found
      this very annoying... :-)  Still, not that bad...

      [Of course this is partly due to Eclipse's wonky window layout
      (let's display all possible types of information crammed into the
      same display, in small unreadable windows), which makes the space
      available for the tab display much smaller than in most systems.]

  (2) VS [whatever version they have at work :-] seems to put far more
      files in tabs, to the point where the tab labels quickly become
      completely unreadable.  At this point the tabs become almost
      useless, you'd be better off just selecting from a menu.

> In terms of lisp interface, for example, there could be optional extra
> argument to display-buffer which gets ignored if Emacs doesn't support
> tabbed windows for the toolkit with which it has been built.

I don't think any interface that requires calls to display-buffer to
know about tabs is workable, there's simply too much code that wouldn't
know about them (not to mention we probably don't want to build in
dependencies on system-specific GUI features like tabs).

-Miles

-- 
Quidquid latine dictum sit, altum viditur.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  0:07     ` Miles Bader
@ 2008-01-26  2:47       ` Stefan Monnier
  2008-01-26  5:03         ` Miles Bader
                           ` (2 more replies)
  0 siblings, 3 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-26  2:47 UTC (permalink / raw)
  To: Miles Bader; +Cc: Nick Roberts, emacs-devel

> I don't think any interface that requires calls to display-buffer to
> know about tabs is workable, there's simply too much code that wouldn't
> know about them (not to mention we probably don't want to build in
> dependencies on system-specific GUI features like tabs).

I could imagine introducing tabs as a new concept between windows
and frames.  So the behavior of display-buffer could be configured to
either use the current window, or pop a new window, or pop a new tab or
pop a new frame.

In any case we should probably ask tabbar.el users, and (more
importantly) XEmacs users&developers since XEmacs has had tabs for
a while now.

For what it's worth, I think that if we introduce this notion of tab, we
should change ttys to use tabs rather than frames since tty frames
behave much more like tabs.  Of course multiple ttys would each get its
own frame.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  2:47       ` Stefan Monnier
@ 2008-01-26  5:03         ` Miles Bader
  2008-01-26  7:24           ` Thomas Lord
  2008-01-26 19:07           ` Stefan Monnier
  2008-01-26 14:38         ` Chong Yidong
  2008-01-27  0:45         ` Richard Stallman
  2 siblings, 2 replies; 66+ messages in thread
From: Miles Bader @ 2008-01-26  5:03 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Nick Roberts, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:
> I could imagine introducing tabs as a new concept between windows
> and frames.  So the behavior of display-buffer could be configured to
> either use the current window, or pop a new window, or pop a new tab or
> pop a new frame.

Hmm, do we want the tab-bar to be per-frame, or per-emacs-window?

For "switching buffer" use of tabs, per-emacs-window seems like it might
be more useful, though obviously eating more screen real-estate.
[With such a setup, it would be useful to have "non-tabbed" and "tabbed"
emacs windows though I don't know how that UI would work...]

-Miles

-- 
Run away!  Run away!

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  5:03         ` Miles Bader
@ 2008-01-26  7:24           ` Thomas Lord
  2008-01-26 19:07           ` Stefan Monnier
  1 sibling, 0 replies; 66+ messages in thread
From: Thomas Lord @ 2008-01-26  7:24 UTC (permalink / raw)
  To: Miles Bader; +Cc: Nick Roberts, Stefan Monnier, emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 908 bytes --]

Miles Bader wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>   
>> I could imagine introducing tabs as a new concept between windows
>> and frames.  So the behavior of display-buffer could be configured to
>> either use the current window, or pop a new window, or pop a new tab or
>> pop a new frame.
>>     
>
> Hmm, do we want the tab-bar to be per-frame, or per-emacs-window?
>   


As a user --- my thought is that a "tab" should contain a frame.
i.e., it's kind of filling in for a gap left by crappy X11 window
managers.


Coordination with the GNU desktop project here might help.

-t





> For "switching buffer" use of tabs, per-emacs-window seems like it might
> be more useful, though obviously eating more screen real-estate.
> [With such a setup, it would be useful to have "non-tabbed" and "tabbed"
> emacs windows though I don't know how that UI would work...]
>
> -Miles
>
>   


[-- Attachment #1.2: Type: text/html, Size: 1528 bytes --]

[-- Attachment #2: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-25 21:57 Tabbed buffers Nick Roberts
  2008-01-25 22:40 ` Miles Bader
@ 2008-01-26  9:10 ` Eli Zaretskii
  2008-01-27  0:12   ` Nick Roberts
  1 sibling, 1 reply; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-26  9:10 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

> From: Nick Roberts <nickrob@snap.net.nz>
> Date: Sat, 26 Jan 2008 10:57:14 +1300
> 
> On help-gnu-emacs, Per Nordlöw has asked about showing the threads view by
> default in gdb-ui.  The problem is trying to fit so many windows in a single
> frame.

For that specific problem, you could put each thread's info in a
separate set of GUD buffers, and have a gdb-ui command to switch them
all in lockstep.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-25 22:40 ` Miles Bader
  2008-01-25 23:41   ` Nick Roberts
@ 2008-01-26  9:14   ` Eli Zaretskii
  2008-01-26 11:36     ` Robert J. Chassell
  1 sibling, 1 reply; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-26  9:14 UTC (permalink / raw)
  To: Miles Bader; +Cc: nickrob, emacs-devel

> From: Miles Bader <miles@gnu.org>
> Date: Sat, 26 Jan 2008 07:40:42 +0900
> Cc: emacs-devel@gnu.org
> 
> Nick Roberts <nickrob@snap.net.nz> writes:
> > Eclipse gets round this problem by displaying tabbed panes.  I know
> > that you can do something like this in Emacs using tabbar.el.
> > Nowadays though, many applications, e.g., Firefox, use the underlying
> > toolkit for this.  I wonder if we should add such a feature to Emacs
> > at the C level, at least for GTK.
> 
> It seems like it would need some thought to work well in Emacs, as
> tabbed user interfaces quickly become unusable if there lots of tabs,
> and Emacs buffer counts are quite often _way_ over that threshold.

How about using the tool-bar infrastructure for that?  We could have a
second tool-bar line, below the usual one, with buttons for buffers.
When buttons are too many to display in a single line, we could add
another line, etc.  Alternatively, when there are too many buttons to
fit on a single line, we display a "More..." button that would pop up
a menu of the rest; those that get their own buttons would then be
maintained on some kind of LRU basis.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  9:14   ` Tabbed buffers Eli Zaretskii
@ 2008-01-26 11:36     ` Robert J. Chassell
  0 siblings, 0 replies; 66+ messages in thread
From: Robert J. Chassell @ 2008-01-26 11:36 UTC (permalink / raw)
  To: emacs-devel

W3M mode, which works in but is not part of GNU Emacs, has optional
tabbed buffers for different browsing sessions.  You might look at
them.

The tabbed buffers are within an existing *w3m* buffer, so you can
have both a normal buffer, such as an RMAIL buffer in one part of a
frame and several W3M mode tabbed buffers in what looks like a single
*w3m* buffer in another part of that frame.

    http://emacs-w3m.namazu.org/

    cvs -d:pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

-- 
    Robert J. Chassell                          GnuPG Key ID: 004B4AC8
    bob@rattlesnake.com                         bob@gnu.org
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  2:47       ` Stefan Monnier
  2008-01-26  5:03         ` Miles Bader
@ 2008-01-26 14:38         ` Chong Yidong
  2008-01-27  0:44           ` Richard Stallman
  2008-01-27  0:45         ` Richard Stallman
  2 siblings, 1 reply; 66+ messages in thread
From: Chong Yidong @ 2008-01-26 14:38 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Nick Roberts, emacs-devel, Miles Bader

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I could imagine introducing tabs as a new concept between windows
> and frames.  So the behavior of display-buffer could be configured to
> either use the current window, or pop a new window, or pop a new tab or
> pop a new frame.

Here's another approach.  Currently, frames can be iconified or
normal/deiconified.  We could add a third state, "unselected tab",
which also contains information about a "master" frame that is the
selected tab to which the unselected tab is attached.  That way, a
"selected" tab is a frame in its normal or iconified states, and an
"unselected" tab is a frame in the "unselected tab" state.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  5:03         ` Miles Bader
  2008-01-26  7:24           ` Thomas Lord
@ 2008-01-26 19:07           ` Stefan Monnier
  1 sibling, 0 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-26 19:07 UTC (permalink / raw)
  To: Miles Bader; +Cc: Nick Roberts, emacs-devel

>> I could imagine introducing tabs as a new concept between windows
>> and frames.  So the behavior of display-buffer could be configured to
>> either use the current window, or pop a new window, or pop a new tab or
>> pop a new frame.

> Hmm, do we want the tab-bar to be per-frame, or per-emacs-window?

Both make sense.

> For "switching buffer" use of tabs, per-emacs-window seems like it might
> be more useful, though obviously eating more screen real-estate.
> [With such a setup, it would be useful to have "non-tabbed" and "tabbed"
> emacs windows though I don't know how that UI would work...]

Yes, it'd be a per-window or per-frame setting.
If it's per-frame it'd switch between window-configurations, otherwise
it'd switch between buffers.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  9:10 ` Eli Zaretskii
@ 2008-01-27  0:12   ` Nick Roberts
  2008-01-27  4:07     ` Eli Zaretskii
  0 siblings, 1 reply; 66+ messages in thread
From: Nick Roberts @ 2008-01-27  0:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

 > > On help-gnu-emacs, Per Nordlöw has asked about showing the threads view by
 > > default in gdb-ui.  The problem is trying to fit so many windows in a
 > > single frame.
 > 
 > For that specific problem, you could put each thread's info in a
 > separate set of GUD buffers, and have a gdb-ui command to switch them
 > all in lockstep.

I thought lockstep referred to stepping all threads together.  

Anyway, I am thinking of using a separate multi-window frame for each thread
with indirect buffers for the source, but it would still need the threads
buffer to be initially visible.

-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26 14:38         ` Chong Yidong
@ 2008-01-27  0:44           ` Richard Stallman
  2008-01-27  1:21             ` Miles Bader
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-27  0:44 UTC (permalink / raw)
  To: Chong Yidong; +Cc: nickrob, miles, monnier, emacs-devel

    Here's another approach.  Currently, frames can be iconified or
    normal/deiconified.  We could add a third state, "unselected tab",
    which also contains information about a "master" frame that is the
    selected tab to which the unselected tab is attached.  That way, a
    "selected" tab is a frame in its normal or iconified states, and an
    "unselected" tab is a frame in the "unselected tab" state.

I think the most natural thing is for tabs to exist just within a
frame, and for each tab to have a window configuration.  Thus,
switching to another tab would select its window configuraton.
This is natural and already implemented.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-26  2:47       ` Stefan Monnier
  2008-01-26  5:03         ` Miles Bader
  2008-01-26 14:38         ` Chong Yidong
@ 2008-01-27  0:45         ` Richard Stallman
  2008-01-27  4:09           ` Eli Zaretskii
  2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
  2 siblings, 2 replies; 66+ messages in thread
From: Richard Stallman @ 2008-01-27  0:45 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: nickrob, emacs-devel, miles

      So the behavior of display-buffer could be configured to
    either use the current window, or pop a new window, or pop a new tab or
    pop a new frame.

When a window has multiple tabs, only one of them is displayed at a time.
For most purposes, the non-current tabs can be ignored.
However, for purposes of displaying a buffer, switching tabs
could be one method `display-buffer' can use.

    For what it's worth, I think that if we introduce this notion of tab, we
    should change ttys to use tabs rather than frames since tty frames
    behave much more like tabs.  Of course multiple ttys would each get its
    own frame.

Tabs should be supported on ttys, but we should not get rid of the
current frame support on ttys.  The main reason we have frames on ttys
is to reduce the difference between handling of ttys and handling of
graphics displays.  People normally don't use multiple frames on ttys,
and that is ok, people can continue not to use them.  But getting rid
of them would just mean trouble.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  0:44           ` Richard Stallman
@ 2008-01-27  1:21             ` Miles Bader
  2008-01-27  1:41               ` Stefan Monnier
  2008-01-27  1:50               ` Nick Roberts
  0 siblings, 2 replies; 66+ messages in thread
From: Miles Bader @ 2008-01-27  1:21 UTC (permalink / raw)
  To: rms; +Cc: Chong Yidong, emacs-devel, nickrob, monnier

Richard Stallman <rms@gnu.org> writes:
> I think the most natural thing is for tabs to exist just within a
> frame, and for each tab to have a window configuration.  Thus,
> switching to another tab would select its window configuraton.
> This is natural and already implemented.

That would be easy to implement, and I agree it would be insanely great
for many uses (especially if there are convenient key bindings for
moving to adjacent tabs) -- I'd _love_ to have a "Gnus" tab, and a "Gdb"
tab!

However that system would seem to essentially require making a tab to be
an explicit user action, somewhat heavyweight.

In many other systems, on the other hand, tabs are more lightweight, and
essentially represent different buffers; making a new "buffer" (in some
other app) automatically creates a new tab, so the user can easily see
what buffers/files he's created, and move among them.

I suspect this latter style of usage is what most people mean when they
say they wish Emacs supported tabs, and they might be disappointed to
see some other meaning of the term.

Such "buffer switching" usage _could_ work with your implementation, if
Emacs sticks to one window per frame, though -- and maybe users used to
that style would even _like_ one window per frame -- so maybe a
combination of settings could make everything work nicely in that case,
e.g., having the tab title default to the [first/only?] buffer name, and
configuring emacs to always create new tabs instead of new windows...?

-Miles

-- 
[|nurgle|]  ddt- demonic? so quake will have an evil kinda setting? one that
            will  make every christian in the world foamm at the mouth?
[iddt]      nurg, that's the goal

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  1:21             ` Miles Bader
@ 2008-01-27  1:41               ` Stefan Monnier
  2008-01-27 16:04                 ` Richard Stallman
  2008-01-27  1:50               ` Nick Roberts
  1 sibling, 1 reply; 66+ messages in thread
From: Stefan Monnier @ 2008-01-27  1:41 UTC (permalink / raw)
  To: Miles Bader; +Cc: nickrob, Chong Yidong, rms, emacs-devel

> Such "buffer switching" usage _could_ work with your implementation, if
> Emacs sticks to one window per frame, though -- and maybe users used to
> that style would even _like_ one window per frame -- so maybe a
> combination of settings could make everything work nicely in that case,
> e.g., having the tab title default to the [first/only?] buffer name, and
> configuring emacs to always create new tabs instead of new windows...?

That's pretty much what I was suggesting: introduce a pop-up-tabs
variable between pop-up-windows and pop-up-frames.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  1:21             ` Miles Bader
  2008-01-27  1:41               ` Stefan Monnier
@ 2008-01-27  1:50               ` Nick Roberts
  2008-01-27  1:58                 ` Miles Bader
  1 sibling, 1 reply; 66+ messages in thread
From: Nick Roberts @ 2008-01-27  1:50 UTC (permalink / raw)
  To: Miles Bader; +Cc: Chong Yidong, emacs-devel, rms, monnier

 > > I think the most natural thing is for tabs to exist just within a
 > > frame, and for each tab to have a window configuration.  Thus,
 > > switching to another tab would select its window configuraton.
 > > This is natural and already implemented.

It's not what I had in mind,  Eclipse has tabs for each window.  However,
it's probably a more realistic goal and would provide benefit.

 > That would be easy to implement, and I agree it would be insanely great
 > for many uses (especially if there are convenient key bindings for
 > moving to adjacent tabs) -- I'd _love_ to have a "Gnus" tab, and a "Gdb"
 > tab!
 > 
 > However that system would seem to essentially require making a tab to be
 > an explicit user action, somewhat heavyweight.

I don't agree, there seems to a direct correspondence with creating a new
frame:

C-x 7 C-f	find-file-other-tab
C-x 7 C-o	display-buffer-other-tab
C-x 7 .		find-tag-other-tab
C-x 7 0		delete-tab
C-x 7 1		delete-other-tabs
C-x 7 2		make-tab-command
C-x 7 b		switch-to-buffer-other-tab
C-x 7 d		dired-other-tab
C-x 7 f		find-file-other-tab
C-x 7 m		compose-mail-other-tab
C-x 7 o		other-tab
C-x 7 r		find-file-read-only-other-tab

in additions to actions that could be associated with mouse clicks.

 > In many other systems, on the other hand, tabs are more lightweight, and
 > essentially represent different buffers; making a new "buffer" (in some
 > other app) automatically creates a new tab, so the user can easily see
 > what buffers/files he's created, and move among them.
 > 
 > I suspect this latter style of usage is what most people mean when they
 > say they wish Emacs supported tabs, and they might be disappointed to
 > see some other meaning of the term.

I don't know what people would expect but I think a new tab should only
be created when explicitly requested.  Also for toolkits for which Emacs
doesn't support tabs the *-tab commands could revert to *frame commands

-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  1:50               ` Nick Roberts
@ 2008-01-27  1:58                 ` Miles Bader
  2008-01-27  2:10                   ` Nick Roberts
  0 siblings, 1 reply; 66+ messages in thread
From: Miles Bader @ 2008-01-27  1:58 UTC (permalink / raw)
  To: Nick Roberts; +Cc: Chong Yidong, rms, monnier, emacs-devel

Nick Roberts <nickrob@snap.net.nz> writes:
>  > That would be easy to implement, and I agree it would be insanely great
>  > for many uses (especially if there are convenient key bindings for
>  > moving to adjacent tabs) -- I'd _love_ to have a "Gnus" tab, and a "Gdb"
>  > tab!
>  > 
>  > However that system would seem to essentially require making a tab to be
>  > an explicit user action, somewhat heavyweight.
>
> I don't agree, there seems to a direct correspondence with creating a new
> frame:

Er, but creating a new frame is an explicit user action, and somewhat
heavyweight...

-Miles

-- 
My books focus on timeless truths.  -- Donald Knuth

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  1:58                 ` Miles Bader
@ 2008-01-27  2:10                   ` Nick Roberts
  0 siblings, 0 replies; 66+ messages in thread
From: Nick Roberts @ 2008-01-27  2:10 UTC (permalink / raw)
  To: Miles Bader; +Cc: Chong Yidong, emacs-devel, rms, monnier

 > > I don't agree, there seems to a direct correspondence with creating a new
 > > frame:
 > 
 > Er, but creating a new frame is an explicit user action, and somewhat
 > heavyweight...

I'm not sure what you mean by heavyweight but it sounds negative.  If you just
mean the user must do something like press some keys or click the mouse then
that's true for most of Emacs.  If he would prefer a more passive experience
he really needs to find another activity like watching television.

-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  0:12   ` Nick Roberts
@ 2008-01-27  4:07     ` Eli Zaretskii
  2008-01-27  4:48       ` Nick Roberts
  0 siblings, 1 reply; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-27  4:07 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

> From: Nick Roberts <nickrob@snap.net.nz>
> Date: Sun, 27 Jan 2008 13:12:47 +1300
> Cc: emacs-devel@gnu.org
> 
>  > > On help-gnu-emacs, Per Nordlöw has asked about showing the threads view by
>  > > default in gdb-ui.  The problem is trying to fit so many windows in a
>  > > single frame.
>  > 
>  > For that specific problem, you could put each thread's info in a
>  > separate set of GUD buffers, and have a gdb-ui command to switch them
>  > all in lockstep.
> 
> I thought lockstep referred to stepping all threads together.  

Do I have to apologize that English is not my first language?

> Anyway, I am thinking of using a separate multi-window frame for each thread
> with indirect buffers for the source

Multiple frames would be a nuisance in gdb-ui, since many users (at
least many that I witnessed) make Emacs full-screen when they use
gdb-ui, because otherwise it's hard to see enough stuff in each one of
the 6 windows.  That is why I suggested to reuse the same windows for
the other threads.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  0:45         ` Richard Stallman
@ 2008-01-27  4:09           ` Eli Zaretskii
  2008-01-27 16:13             ` T. V. Raman
  2008-01-27 20:59             ` Stefan Monnier
  2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
  1 sibling, 2 replies; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-27  4:09 UTC (permalink / raw)
  To: rms; +Cc: nickrob, miles, monnier, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Date: Sat, 26 Jan 2008 19:45:31 -0500
> Cc: nickrob@snap.net.nz, emacs-devel@gnu.org, miles@gnu.org
> 
> The main reason we have frames on ttys is to reduce the difference
> between handling of ttys and handling of graphics displays.  People
> normally don't use multiple frames on ttys, and that is ok, people
> can continue not to use them.

FWIW, I do use them on a tty, for several reasons.  One is to organize
my work: one frame for editing code, another for Info, etc.  Another
reason for several frames is when I read mail: one frame is used for
Rmail buffer, another for the *mail* buffer where I reply.

> But getting rid of them would just mean trouble.

I would certainly object.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  4:07     ` Eli Zaretskii
@ 2008-01-27  4:48       ` Nick Roberts
  2008-01-27  8:05         ` Is there any document about Emacs implementation (C source code)? brianjiang
  2008-01-27 17:18         ` Tabbed buffers Eli Zaretskii
  0 siblings, 2 replies; 66+ messages in thread
From: Nick Roberts @ 2008-01-27  4:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

 > >  > For that specific problem, you could put each thread's info in a
 > >  > separate set of GUD buffers, and have a gdb-ui command to switch them
 > >  > all in lockstep.
 > > 
 > > I thought lockstep referred to stepping all threads together.  
 > 
 > Do I have to apologize that English is not my first language?

I didn't follow what you were saying as lockstep has a special meaning when
debugging multi-threaded programs - that's all.  I now think/see you are just
saying replace all the windows for one thread with those for another.

 > > Anyway, I am thinking of using a separate multi-window frame for each
 > > thread with indirect buffers for the source
 > 
 > Multiple frames would be a nuisance in gdb-ui, since many users (at
 > least many that I witnessed) make Emacs full-screen when they use
 > gdb-ui, because otherwise it's hard to see enough stuff in each one of
 > the 6 windows.  That is why I suggested to reuse the same windows for
 > the other threads.

Do you think then that tabbed buffers, as Richard proposes, might provide a
solution, with one tab per thread and multiple windows per tab.

-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Is there any document about Emacs implementation (C source code)?
  2008-01-27  4:48       ` Nick Roberts
@ 2008-01-27  8:05         ` brianjiang
  2008-01-27  9:40           ` dhruva
  2008-01-27 17:18         ` Tabbed buffers Eli Zaretskii
  1 sibling, 1 reply; 66+ messages in thread
From: brianjiang @ 2008-01-27  8:05 UTC (permalink / raw)
  To: emacs-devel

Hi,

I'd like to do some studying of Emacs C source code? I wonder if there
are any existing introduction documents about the Emacs internal
implementation?

Thanks,
Brian

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Is there any document about Emacs implementation (C source code)?
  2008-01-27  8:05         ` Is there any document about Emacs implementation (C source code)? brianjiang
@ 2008-01-27  9:40           ` dhruva
  2008-01-27 20:32             ` Stephen J. Turnbull
  0 siblings, 1 reply; 66+ messages in thread
From: dhruva @ 2008-01-27  9:40 UTC (permalink / raw)
  To: brianjiang, emacs-devel

Yes, the source code. I go through the same problem everytime i muster
enough courage to implement something in emacs.
A book on crafting an editor has lot of references to emacs but does
not give you the guts of emacs.
There is however an Xemacs internals which might have a lot in common
to emacs, not sure though (written by Ben Wing)

-dky

On 1/27/08, brianjiang@gdnt.com.cn <brianjiang@gdnt.com.cn> wrote:
> Hi,
>
> I'd like to do some studying of Emacs C source code? I wonder if there
> are any existing introduction documents about the Emacs internal
> implementation?
>
> Thanks,
> Brian
>
>
> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-devel
>

-- 
Sent from Gmail for mobile | mobile.google.com

Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  1:41               ` Stefan Monnier
@ 2008-01-27 16:04                 ` Richard Stallman
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Stallman @ 2008-01-27 16:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: cyd, emacs-devel, nickrob, miles

    > combination of settings could make everything work nicely in that case,
    > e.g., having the tab title default to the [first/only?] buffer name, and
    > configuring emacs to always create new tabs instead of new windows...?

    That's pretty much what I was suggesting: introduce a pop-up-tabs
    variable between pop-up-windows and pop-up-frames.

Maybe there should be two kinds of tabs:

* Ordinary tabs.  If you are in one of these, the "other window"
operations work as now, staying in the same tab.

* Specified tabs.  These are created by programs such as GUD, and set
up in precise window configurations by them.

If you are in a specified tab, and you visit a buffer in "another
window", `display-buffer' creates a new ordinary tab, switches to it,
and displays the buffer there.

The user command to make a tab should make an ordinary tab.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  4:09           ` Eli Zaretskii
@ 2008-01-27 16:13             ` T. V. Raman
  2008-01-27 20:59               ` Stefan Monnier
  2008-01-27 20:59             ` Stefan Monnier
  1 sibling, 1 reply; 66+ messages in thread
From: T. V. Raman @ 2008-01-27 16:13 UTC (permalink / raw)
  To: eliz; +Cc: nickrob, emacs-devel, rms, monnier, miles

1+ on that. Also with multitty now integrated, it's nice to be
able to open a frame on a tty that is talking to an emacs running
under X or more importantly the other way around, i.e. run emacs
under screen on a tty and then use emacsclient from X to open a frame.

>>>>> "Eli" == Eli Zaretskii <eliz@gnu.org> writes:
    >> From: Richard Stallman <rms@gnu.org> Date: Sat, 26 Jan
    >> 2008 19:45:31 -0500 Cc: nickrob@snap.net.nz,
    >> emacs-devel@gnu.org, miles@gnu.org
    >> 
    >> The main reason we have frames on ttys is to reduce the
    >> difference between handling of ttys and handling of
    >> graphics displays.  People normally don't use multiple
    >> frames on ttys, and that is ok, people can continue not to
    >> use them.
    Eli> 
    Eli> FWIW, I do use them on a tty, for several reasons.  One
    Eli> is to organize my work: one frame for editing code,
    Eli> another for Info, etc.  Another reason for several
    Eli> frames is when I read mail: one frame is used for Rmail
    Eli> buffer, another for the *mail* buffer where I reply.
    Eli> 
    >> But getting rid of them would just mean trouble.
    Eli> 
    Eli> I would certainly object.
    Eli> 
    Eli> 
    Eli> _______________________________________________
    Eli> Emacs-devel mailing list Emacs-devel@gnu.org
    Eli> http://lists.gnu.org/mailman/listinfo/emacs-devel

-- 
Best Regards,
--raman

      
Email:  raman@users.sf.net
WWW:    http://emacspeak.sf.net/raman/
AIM:    emacspeak       GTalk: tv.raman.tv@gmail.com
PGP:    http://emacspeak.sf.net/raman/raman-almaden.asc
Google: tv+raman 
IRC:    irc://irc.freenode.net/#emacs

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  4:48       ` Nick Roberts
  2008-01-27  8:05         ` Is there any document about Emacs implementation (C source code)? brianjiang
@ 2008-01-27 17:18         ` Eli Zaretskii
  1 sibling, 0 replies; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-27 17:18 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

> From: Nick Roberts <nickrob@snap.net.nz>
> Date: Sun, 27 Jan 2008 17:48:32 +1300
> Cc: emacs-devel@gnu.org
> 
> Do you think then that tabbed buffers, as Richard proposes, might provide a
> solution, with one tab per thread and multiple windows per tab.

Yes, probably.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27  0:45         ` Richard Stallman
  2008-01-27  4:09           ` Eli Zaretskii
@ 2008-01-27 19:55           ` Alan Mackenzie
  2008-01-27 20:52             ` Eli Zaretskii
                               ` (2 more replies)
  1 sibling, 3 replies; 66+ messages in thread
From: Alan Mackenzie @ 2008-01-27 19:55 UTC (permalink / raw)
  To: Richard Stallman, Stefan Monnier; +Cc: nickrob, miles, emacs-devel

'Evening, Richard and Stefan!

On Sat, Jan 26, 2008 at 07:45:31PM -0500, Richard Stallman wrote:

[Stefan:]
>     For what it's worth, I think that if we introduce this notion of
>     tab, we should change ttys to use tabs rather than frames since
>     tty frames behave much more like tabs.  Of course multiple ttys
>     would each get its own frame.

Er, what does a C-i look like on a TTY?  Why are we using this word
"tab" to denote something other than the <tab> key or ASCII 0x09?
Haven't we got enough confusion already with "windows" (emacs) and
"windows" (X) aka "frames"?

I'm not that familiar with the concept of "tabs", but I guess the word
came by analogy from the ~1 inch wide bit of card protruding from the
top of a cardboard index card.  Such would not be displayed on a TTY (or
would it?), so the term "tab" would be doubly unfortunate.

Again, why the word "tab"?  The display stratagem seems redundant -
we've already got frames and windows - so, would it not be a better idea
to have @def{frame sets}, a collection of frames displayed in the same
place, any one of which can be selected by its tab?  Perhaps we could
call this a "glazing" instead, analogous to "double glazing" and "triple
glazing".  This more appropriate word would fit TTYs better.  :-)

Seriously, though, aren't GUI screens cluttered enough already, without
introducing yet another space-taker-upper, even if it could be switched
off?  (Don't forget the ruckus that the unswitchoffable fringe caused
when Emacs 21 was released in 2001.)

> Tabs should be supported on ttys, but we should not get rid of the
> current frame support on ttys.  The main reason we have frames on ttys
> is to reduce the difference between handling of ttys and handling of
> graphics displays.  People normally don't use multiple frames on ttys,

Says who?  I very rarely have fewer than 4 or 5 frames open in my TTY
Emacs.

Actually, you may be right.  The mechanism for switching frames (C-x 5
o, repeated ad nauseam till you finally reach the frame you're looking
for) is so broken as to be unusable, at least for me.  So most TTY users
probably don't bother.  I've solved the problem by making the function
key <F1> switch to frame F1, and so on, not being that bothered about
2-column, and so on.  Maybe the so-far unused bindings C-x <F1>, etc.,
could be used for these in a standard Emacs.

> and that is ok, people can continue not to use them.  But getting rid
> of them would just mean trouble.

Too damn right it would!  I'd start screaming!

-- 
Alan Mackenzie (Nuremberg, Germany).

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Is there any document about Emacs implementation (C source code)?
  2008-01-27  9:40           ` dhruva
@ 2008-01-27 20:32             ` Stephen J. Turnbull
  2008-01-27 20:57               ` Eli Zaretskii
  0 siblings, 1 reply; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-27 20:32 UTC (permalink / raw)
  To: dhruva; +Cc: brianjiang, emacs-devel

dhruva writes:
 > Yes, the source code. I go through the same problem everytime i muster
 > enough courage to implement something in emacs.
 > A book on crafting an editor has lot of references to emacs but does
 > not give you the guts of emacs.
 > There is however an Xemacs internals which might have a lot in common
 > to emacs, not sure though (written by Ben Wing)

http://www.xemacs.org/Documentation/21.5/html/internals.html

There are many things that are done differently in XEmacs from Emacs.
However important things like the DEFUN macro are very similar.
Also, I believe that although the implementations are different, the
overview of things like the read-eval-print/read-eval-redisplay loop
will be useful to any new Emacs developer.

 > 
 > -dky
 > 
 > On 1/27/08, brianjiang@gdnt.com.cn <brianjiang@gdnt.com.cn> wrote:
 > > Hi,
 > >
 > > I'd like to do some studying of Emacs C source code? I wonder if there
 > > are any existing introduction documents about the Emacs internal
 > > implementation?
 > >
 > > Thanks,
 > > Brian
 > >
 > >
 > > _______________________________________________
 > > Emacs-devel mailing list
 > > Emacs-devel@gnu.org
 > > http://lists.gnu.org/mailman/listinfo/emacs-devel
 > >
 > 
 > -- 
 > Sent from Gmail for mobile | mobile.google.com
 > 
 > Contents reflect my personal views only!
 > 
 > 
 > _______________________________________________
 > Emacs-devel mailing list
 > Emacs-devel@gnu.org
 > http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
@ 2008-01-27 20:52             ` Eli Zaretskii
  2008-01-27 21:33               ` Alan Mackenzie
  2008-02-01  3:32               ` T. V. Raman
  2008-01-27 21:13             ` Stefan Monnier
  2008-01-28  7:17             ` Richard Stallman
  2 siblings, 2 replies; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-27 20:52 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

> Date: Sun, 27 Jan 2008 19:55:38 +0000
> From: Alan Mackenzie <acm@muc.de>
> Cc: nickrob@snap.net.nz, miles@gnu.org, emacs-devel@gnu.org
> 
> Actually, you may be right.  The mechanism for switching frames (C-x 5
> o, repeated ad nauseam till you finally reach the frame you're looking
> for) is so broken as to be unusable, at least for me.

A solution has been in existence for that problem for a very long
time: give your frame a name with "M-x set-frame-name RET FOO RET",
then select it with "M-x select-frame-by-name RET FOO RET".  Puff!
problem gone.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Is there any document about Emacs implementation (C source code)?
  2008-01-27 20:32             ` Stephen J. Turnbull
@ 2008-01-27 20:57               ` Eli Zaretskii
  0 siblings, 0 replies; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-27 20:57 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: brianjiang, emacs-devel

> From: "Stephen J. Turnbull" <stephen@xemacs.org>
> Date: Mon, 28 Jan 2008 05:32:11 +0900
> Cc: brianjiang@gdnt.com.cn, emacs-devel@gnu.org
> 
> There are many things that are done differently in XEmacs from Emacs.
> However important things like the DEFUN macro are very similar.

DEFUN is explained in the Emacs's ELisp manual as well (see the node
"Writing Emacs Primitives").

The rest of the "GNU Emacs Internals" appendix describes the internals
of several Emacs objects, and a few other things, but leaves out quite
a few important mechanisms, such as the display engine.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27  4:09           ` Eli Zaretskii
  2008-01-27 16:13             ` T. V. Raman
@ 2008-01-27 20:59             ` Stefan Monnier
  2008-01-27 23:31               ` Robert J. Chassell
                                 ` (2 more replies)
  1 sibling, 3 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-27 20:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: nickrob, miles, rms, emacs-devel

>> But getting rid of them would just mean trouble.
> I would certainly object.

Richard was talking about a suggestion of mine, which was not to remove
the frame functionality on ttys.  How can people even expect me to
suggest throwing away such a feature?

All I was pointing out was that if we introduce frame-level tabs, then
it might make sense to treat the current "multiple-frames on a single tty"
as tabs rather than as frames.  So we may want to refine the notion of
tty frames so that each tty gets exactly 1 frame, and it can then
multiplex several tabs on that frame: the end result is the same
featureset as before, but in a way that more closely matches the
semantics of frames&tabs under GUIs (where only one of the tabs of
a frame can be displayed at a time, just like frames on a single tty).


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27 16:13             ` T. V. Raman
@ 2008-01-27 20:59               ` Stefan Monnier
  0 siblings, 0 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-27 20:59 UTC (permalink / raw)
  To: raman; +Cc: eliz, miles, nickrob, rms, emacs-devel

> 1+ on that. Also with multitty now integrated, it's nice to be
> able to open a frame on a tty that is talking to an emacs running
> under X or more importantly the other way around, i.e. run emacs
> under screen on a tty and then use emacsclient from X to open a frame.

Nobody has ever talked about removing such features.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
  2008-01-27 20:52             ` Eli Zaretskii
@ 2008-01-27 21:13             ` Stefan Monnier
  2008-01-27 21:50               ` Alan Mackenzie
  2008-01-28  7:17             ` Richard Stallman
  2 siblings, 1 reply; 66+ messages in thread
From: Stefan Monnier @ 2008-01-27 21:13 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: nickrob, emacs-devel, Richard Stallman, miles

>> and that is ok, people can continue not to use them.  But getting rid
>> of them would just mean trouble.
> Too damn right it would!  I'd start screaming!

Hello?  It's me!
Do you really think I'd suggest to plainly throw away tty frames?
Seriously?


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 20:52             ` Eli Zaretskii
@ 2008-01-27 21:33               ` Alan Mackenzie
  2008-01-28  4:15                 ` Eli Zaretskii
  2008-02-01  3:32               ` T. V. Raman
  1 sibling, 1 reply; 66+ messages in thread
From: Alan Mackenzie @ 2008-01-27 21:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Hi, Eli!

On Sun, Jan 27, 2008 at 10:52:19PM +0200, Eli Zaretskii wrote:
> > Date: Sun, 27 Jan 2008 19:55:38 +0000
> > From: Alan Mackenzie <acm@muc.de>

> > The mechanism for switching frames (C-x 5 o, repeated ad nauseam till
> > you finally reach the frame you're looking for) is so broken as to be
> > unusable, at least for me.

> A solution has been in existence for that problem for a very long time:
> give your frame a name with "M-x set-frame-name RET FOO RET", then
> select it with "M-x select-frame-by-name RET FOO RET".  Puff!  problem
> gone.

Hmm.  I'm not imaginative enough with names.  ;-)  Having to keep coming
up with names for new frames (probably, by putting the question in
after-make-frame-functions) would be intolerably annoying.

The names F1, F2, .... are good enough for me, and even match the names
of the keys used to switch to them.  :-)  Trouble is, these names don't
seem to be used on GUI Emacs (which I have to use at work).  So there,
I've enhanced my mode line to display the "Fn".

Obviously, select-frame-by-name would need a binding if you were using it
all the time.  select-frame-by-number would be quite handy too, but even
that would be too slow for me, even assuming a numeric prefix argument
and a single-key binding.

-- 
Alan Mackenzie (Nuremberg, Germany).

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 21:13             ` Stefan Monnier
@ 2008-01-27 21:50               ` Alan Mackenzie
  2008-01-28  2:03                 ` Stefan Monnier
  0 siblings, 1 reply; 66+ messages in thread
From: Alan Mackenzie @ 2008-01-27 21:50 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: nickrob, miles, Richard Stallman, emacs-devel

'Evening, Stefan!

On Sun, Jan 27, 2008 at 04:13:29PM -0500, Stefan Monnier wrote:
> >> and that is ok, people can continue not to use them.  But getting rid
> >> of them would just mean trouble.
> > Too damn right it would!  I'd start screaming!

> Hello?  It's me!
> Do you really think I'd suggest to plainly throw away tty frames?
> Seriously?

No, of course not, not you!  It was actually Richard who brought the
issue up, but he wouldn't get rid of them either.

People sometimes express the opinion that TTYs have been superseded by
GUIs, sometimes they express it forcefully, and sometimes offensively
(though this hasn't happened on this thread).  It doesn't hurt,
sometimes, to remind people that this is not the case.

>         Stefan

-- 
Alan Mackenzie (Nuremnberg, Germany).

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27 20:59             ` Stefan Monnier
@ 2008-01-27 23:31               ` Robert J. Chassell
  2008-01-28  2:08                 ` Stefan Monnier
  2008-01-28  7:17               ` Richard Stallman
  2008-02-01  3:50               ` T. V. Raman
  2 siblings, 1 reply; 66+ messages in thread
From: Robert J. Chassell @ 2008-01-27 23:31 UTC (permalink / raw)
  To: emacs-devel

    where only one of the tabs of a frame can be displayed at a time, just
    like frames on a single tty).

In a tty, using W3M mode, which works in but is not part of GNU Emacs,
I am able to view multiple windows, each with one lightweight tab
buffer visible in it.  I am not limited to one window per frame.

Why do differently with anything that displays a buffer, even one that
is part of a heavyweight tab set that uses two lines, one for the
frames and one for the buffers in the current frame?

Today's GNU Emacs CVS snapshot, Sun, 2008 Jan 27  11:02 UTC
GNU Emacs 23.0.50.48 (i686-pc-linux-gnu, GTK+ Version 2.12.1)

-- 
    Robert J. Chassell                          GnuPG Key ID: 004B4AC8
    bob@rattlesnake.com                         bob@gnu.org
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 21:50               ` Alan Mackenzie
@ 2008-01-28  2:03                 ` Stefan Monnier
  0 siblings, 0 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-28  2:03 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: nickrob, miles, Richard Stallman, emacs-devel

Hi Alan,

> People sometimes express the opinion that TTYs have been superseded by
> GUIs, sometimes they express it forcefully, and sometimes offensively
> (though this hasn't happened on this thread).  It doesn't hurt,
> sometimes, to remind people that this is not the case.

Don't worry: the seriousness with which the multi-tty effort has been
taken is proof that tty support is in no way "on the way out".


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27 23:31               ` Robert J. Chassell
@ 2008-01-28  2:08                 ` Stefan Monnier
  0 siblings, 0 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-28  2:08 UTC (permalink / raw)
  To: bob; +Cc: emacs-devel

>     where only one of the tabs of a frame can be displayed at a time, just
>     like frames on a single tty).

> In a tty, using W3M mode, which works in but is not part of GNU Emacs,
> I am able to view multiple windows, each with one lightweight tab
> buffer visible in it.  I am not limited to one window per frame.

I was talking about frame-level tabs, not window-level tabs.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 21:33               ` Alan Mackenzie
@ 2008-01-28  4:15                 ` Eli Zaretskii
  0 siblings, 0 replies; 66+ messages in thread
From: Eli Zaretskii @ 2008-01-28  4:15 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

> Date: Sun, 27 Jan 2008 21:33:15 +0000
> Cc: emacs-devel@gnu.org
> From: Alan Mackenzie <acm@muc.de>
> 
> > A solution has been in existence for that problem for a very long time:
> > give your frame a name with "M-x set-frame-name RET FOO RET", then
> > select it with "M-x select-frame-by-name RET FOO RET".  Puff!  problem
> > gone.
> 
> Hmm.  I'm not imaginative enough with names.  ;-)  Having to keep coming
> up with names for new frames (probably, by putting the question in
> after-make-frame-functions) would be intolerably annoying.
> 
> The names F1, F2, .... are good enough for me

You don't _have_ to invent names if you have no trouble remembering
which one of them holds what.  select-frame-by-name is happy with the
Fn names as well.

I usually name the frames by what I'm doing there: "Mail" for reading
mail, "Foo" for some project Foo I'm working on, etc.  But that's me.

> Obviously, select-frame-by-name would need a binding if you were using it
> all the time.

Me, I don't need any binding: command history is good enough in that I
never have to type the command's name more than once.  But if you need
a binding, by all means do it.

> select-frame-by-number would be quite handy too

It would only save you one keystroke (2 vs F2 with selection by name),
and would be unreliable, since a frame can be given any name, not just
Fn.

> but even that would be too slow for me, even assuming a numeric
> prefix argument and a single-key binding.

Look, this subthread started with your complaint about the need to
step through all the frames with "C-x 5 o" repeated ad nauseam.
Surely, what I suggested is faster than that!

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
  2008-01-27 20:52             ` Eli Zaretskii
  2008-01-27 21:13             ` Stefan Monnier
@ 2008-01-28  7:17             ` Richard Stallman
  2008-01-28 15:42               ` David De La Harpe Golden
  2 siblings, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-28  7:17 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: nickrob, miles, monnier, emacs-devel

    Again, why the word "tab"?

Because that's the word they are generally called, in regard to
browsers for instance, and what most computer users will know.

				The display stratagem seems redundant -
    we've already got frames and windows - so, would it not be a better idea
    to have @def{frame sets}, a collection of frames displayed in the same
    place, any one of which can be selected by its tab?

That's not what a tab should do.  Tabs should operate within a frame.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27 20:59             ` Stefan Monnier
  2008-01-27 23:31               ` Robert J. Chassell
@ 2008-01-28  7:17               ` Richard Stallman
  2008-01-28  8:31                 ` Stephen J. Turnbull
  2008-02-01  3:50               ` T. V. Raman
  2 siblings, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-28  7:17 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: eliz, miles, nickrob, emacs-devel

    All I was pointing out was that if we introduce frame-level tabs, then
    it might make sense to treat the current "multiple-frames on a single tty"
    as tabs rather than as frames.

That seems like an unnecessary complication with no benefit.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28  7:17               ` Richard Stallman
@ 2008-01-28  8:31                 ` Stephen J. Turnbull
  2008-01-28 15:17                   ` Stefan Monnier
  2008-01-28 21:32                   ` Richard Stallman
  0 siblings, 2 replies; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-28  8:31 UTC (permalink / raw)
  To: rms; +Cc: nickrob, eliz, emacs-devel, Stefan Monnier, miles

Richard Stallman writes:

 >     All I was pointing out was that if we introduce frame-level
 >     tabs, then it might make sense to treat the current
 >     "multiple-frames on a single tty" as tabs rather than as
 >     frames.
 > 
 > That seems like an unnecessary complication with no benefit.

The benefit is that the tabs provide a visual cue (which many users
will have experience with) of what alternatives are available via
`next-tab' or `pop-to-tab'.

I don't think it is a good idea to think of tabs per se as associated
with any given content class.  They are a UI component, like any other
widget such as toolbar or radio button box (each of which is very
similar to a tab and could be used to simulate a tab control).

I think Alan's idea of a frameset (possibly implemented as Stefan
describes, but this area is conceptually hairy since a frame is the
biggest object Emacs deals with so tabs have to be *in* the frame,
while from the users' point of view it *acts like* multiple frames) is
probably the best default use of tabs.  Users will understand it
immediately.  Some will hate it for stealing precious screen real
estate, so there must be a way to turn it off.  But users new to Emacs
or to multitty will find it a convenient way to learn about that
facility.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28  8:31                 ` Stephen J. Turnbull
@ 2008-01-28 15:17                   ` Stefan Monnier
  2008-01-28 17:22                     ` Stephen J. Turnbull
  2008-01-28 21:32                     ` Richard Stallman
  2008-01-28 21:32                   ` Richard Stallman
  1 sibling, 2 replies; 66+ messages in thread
From: Stefan Monnier @ 2008-01-28 15:17 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: nickrob, eliz, emacs-devel, rms, miles

>> All I was pointing out was that if we introduce frame-level tabs,
>> then it might make sense to treat the current "multiple-frames on
>> a single tty" as tabs rather than as frames.
>> 
>> That seems like an unnecessary complication with no benefit.

> The benefit is that the tabs provide a visual cue (which many users
> will have experience with) of what alternatives are available via
> `next-tab' or `pop-to-tab'.

Actually, I was not even thinking of adding a "tabs line" to the
tty display.  I was talking about the elisp-level.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-28  7:17             ` Richard Stallman
@ 2008-01-28 15:42               ` David De La Harpe Golden
  2008-01-28 21:32                 ` Richard Stallman
  0 siblings, 1 reply; 66+ messages in thread
From: David De La Harpe Golden @ 2008-01-28 15:42 UTC (permalink / raw)
  To: emacs-devel

On 28/01/2008, Richard Stallman <rms@gnu.org> wrote:
>     Again, why the word "tab"?
>
> Because that's the word they are generally called, in regard to
> browsers for instance, and what most computer users will know.
>

Heh. Maybe should rename [emacs] frames to windows and [emacs] windows
to panes, too. :-)

>> The display stratagem seems redundant  - we've already got frames
>> and windows - so, would it not be a better idea  to have @def{frame
>> sets}, a collection of frames displayed in the same place, any one of
>> which can be selected by its tab?
>
> That's not what a tab should do.  Tabs should operate within a frame.
>

[using emacs terminology]:

(i) I think by "a collection of frames in the same place" was meant
tabs switching between frame contents i.e. sets of windows?  They'd be
in the one "physical" frame, tabs would select different window
configurations i.e. "virtual" frames.  That sounds a bit like
latter-day-IDE "views" being tabbed.
Of course, winner-mode already exists. Maybe emacs just needs to
expose general tab bar widgets that winner-mode could then use...

(ii) IIRC clicking XEmacs "buffer-tabs"  widgets in its "gutters"
switches between the buffers in the current window of the current
frame though:
http://www.xemacs.org/Documentation/21.5/html/xemacs_4.html#SEC16

While the (i) might be useful I think (ii) is probably what
people would expect  tabs to do if implemented in GNU Emacs
(especially since it's what XEmacs already does...).  Would rapidly
become unwieldy for large buffer counts though.  Then again, the menu
and toolbar are totally unwieldy for large command counts and probably
rapidly get turned off by many advanced emacs users, just as the
buffer-tabs would.

(You _could_ have both (i) and (ii), really.  Would probably look
quite cluttered  though. Of course maybe the GUI clutter of an IDE
with [nonemacs terminology] a zillion tabbed panes holding tabbed
panes of tabbed panes (and let's not forget the customary tabbed panes
that are too big to fit in the enclosing pane and thus induce
horizontal and vertical scrollbars - bleurgh) is what people really
/miss/ in emacs :-) )

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 15:17                   ` Stefan Monnier
@ 2008-01-28 17:22                     ` Stephen J. Turnbull
  2008-01-28 18:18                       ` Stefan Monnier
  2008-01-28 21:32                     ` Richard Stallman
  1 sibling, 1 reply; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-28 17:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: nickrob, miles, eliz, rms, emacs-devel

Stefan Monnier writes:

 > Actually, I was not even thinking of adding a "tabs line" to the
 > tty display.  I was talking about the elisp-level.

That doesn't make any sense to me.  What you're talking about then is
a (Emacs) window configuration.  Tabs are a UI component.

It would make sense to have tabs available as a UI to switch window
configurations in a frame, but tabs could also be used to switch
buffers in a window, to page through a long list (as with library
catalog cards if you're old enough to remember them), etc.  All of
these could be implemented as a separate display container structure
(presumably frame > tab > window > buffer), but I really don't think
the extra complexity would buy you anything more than the current
frame > window > buffer scheme.  And (possibly) it would be more
restrictive than a tabs as UI scheme, where the tabs could be attached
to various display container widgets (although I suppose Emacs, like
XEmacs, doesn't really take advantage of widgets very much).

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 17:22                     ` Stephen J. Turnbull
@ 2008-01-28 18:18                       ` Stefan Monnier
  2008-01-28 19:18                         ` Stephen J. Turnbull
  0 siblings, 1 reply; 66+ messages in thread
From: Stefan Monnier @ 2008-01-28 18:18 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: nickrob, miles, eliz, rms, emacs-devel

>> Actually, I was not even thinking of adding a "tabs line" to the
>> tty display.  I was talking about the elisp-level.

> That doesn't make any sense to me.  What you're talking about then is
> a (Emacs) window configuration.  Tabs are a UI component.

This is a completely theoretical discussion.

So take a few thousand steps back and look at (single)tty frames, X11
frames, and frame-level tabs.  Do tty frames look more like X11 frames
or like frame-level tabs?

To me they look like frame-level tabs: only one can be displayed at
a time, you can't "move" them, you can "resize" them, they're all
displayed at the same place, ...

That's all there is to it really.  That's all I was saying.

What we should do with this depends on way too many details to even
start talking about it before there's any resemblance of code to support
tabs somewhere.


        Stefan

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 18:18                       ` Stefan Monnier
@ 2008-01-28 19:18                         ` Stephen J. Turnbull
  2008-01-28 21:30                           ` Nick Roberts
  0 siblings, 1 reply; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-28 19:18 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: nickrob, emacs-devel, eliz, rms, miles

Stefan Monnier writes:

 > What we should do with this depends on way too many details to even
 > start talking about it before there's any resemblance of code to support
 > tabs somewhere.

I gather XEmacs is "nowhere". ;-)  But if you decide you'd like to hear
the thoughts of somebody who has used and maintained tab control widgets
in Emacs, just let me know.  I think I know "somewhere" I can find one.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 19:18                         ` Stephen J. Turnbull
@ 2008-01-28 21:30                           ` Nick Roberts
  2008-01-29  6:53                             ` Stephen J. Turnbull
  0 siblings, 1 reply; 66+ messages in thread
From: Nick Roberts @ 2008-01-28 21:30 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: emacs-devel

 > I gather XEmacs is "nowhere". ;-)  But if you decide you'd like to hear
 > the thoughts of somebody who has used and maintained tab control widgets
 > in Emacs, just let me know.  I think I know "somewhere" I can find one.

Does XEmacs have tabbed buffers in a tty?  I can't get them to appear.  In
fact their functionality seems very limited in an X window and even the
manual says that they are experimental.  The only way I've found to create
a second tab is by clicking on a link in a help buffer.  Can you please say
what functions are available to manipulate them?

-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-28 15:42               ` David De La Harpe Golden
@ 2008-01-28 21:32                 ` Richard Stallman
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Stallman @ 2008-01-28 21:32 UTC (permalink / raw)
  To: David De La Harpe Golden; +Cc: emacs-devel

    > Because that's the word they are generally called, in regard to
    > browsers for instance, and what most computer users will know.

    Heh. Maybe should rename [emacs] frames to windows and [emacs] windows
    to panes, too. :-)

That might be good if it were not for the painful incompatibility that
would mean.

Since we have no tabs, now, we have no existing name for them.
There is no obstacle to using the generally known name.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 15:17                   ` Stefan Monnier
  2008-01-28 17:22                     ` Stephen J. Turnbull
@ 2008-01-28 21:32                     ` Richard Stallman
  2008-01-28 23:05                       ` Bastien Guerry
  1 sibling, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-28 21:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: stephen, miles, eliz, nickrob, emacs-devel

    > The benefit is that the tabs provide a visual cue (which many users
    > will have experience with) of what alternatives are available via
    > `next-tab' or `pop-to-tab'.

    Actually, I was not even thinking of adding a "tabs line" to the
    tty display.  I was talking about the elisp-level.

The whole point of a tabs feature is to have the tabs line, isn't it?

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28  8:31                 ` Stephen J. Turnbull
  2008-01-28 15:17                   ` Stefan Monnier
@ 2008-01-28 21:32                   ` Richard Stallman
  2008-01-29  7:10                     ` Stephen J. Turnbull
  1 sibling, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-28 21:32 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: nickrob, eliz, emacs-devel, monnier, miles

     >     All I was pointing out was that if we introduce frame-level
     >     tabs, then it might make sense to treat the current
     >     "multiple-frames on a single tty" as tabs rather than as
     >     frames.
     > 
     > That seems like an unnecessary complication with no benefit.

    The benefit is that the tabs provide a visual cue (which many users
    will have experience with) of what alternatives are available via
    `next-tab' or `pop-to-tab'.

That benefit comes from having the feature of tabs.
I think it is a good idea to add that feature.

But you are talking about something else: to treat the current
"multiple-frames on a single tty" as tabs rather than as frames.  That
has nothing to do with the benefits tabs provide, and I don't see how
it would provide any benefit.  It would just create an unnecessary
loss of parallelism between the tty case and the graphical display
case, right?

Perhaps you should state your proposal more concretely and precisely.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 21:32                     ` Richard Stallman
@ 2008-01-28 23:05                       ` Bastien Guerry
  2008-01-30  6:16                         ` Richard Stallman
  0 siblings, 1 reply; 66+ messages in thread
From: Bastien Guerry @ 2008-01-28 23:05 UTC (permalink / raw)
  To: rms; +Cc: nickrob, emacs-devel, Stefan Monnier, stephen, eliz, miles

Richard Stallman <rms@gnu.org> writes:

>     > The benefit is that the tabs provide a visual cue (which many users
>     > will have experience with) of what alternatives are available via
>     > `next-tab' or `pop-to-tab'.
>
>     Actually, I was not even thinking of adding a "tabs line" to the
>     tty display.  I was talking about the elisp-level.
>
> The whole point of a tabs feature is to have the tabs line, isn't it?

I use tabs without using the tab line, which consumes to much space.

I use tabs as provided by elscreen:

  http://www.morishima.net/~naoto/software/elscreen/

And I set `elscreen-display-tab' to make tabs invisible.

I can still switch from one tab to another: in this case, a tab is
really just a window configuration, but switching from one window
configuration to another one without having to store them is quite
handy.  

-- 
Bastien

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 21:30                           ` Nick Roberts
@ 2008-01-29  6:53                             ` Stephen J. Turnbull
  2008-01-29  7:19                               ` Nick Roberts
  0 siblings, 1 reply; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-29  6:53 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

Nick Roberts writes:

 > Does XEmacs have tabbed buffers in a tty?  I can't get them to
 > appear.

No.  We have no GUI features in TTYs, no menus, no scrollbars, no
dialogs, no toolbars, no images.  Nobody has ever asked for them,
either, not even for compatibility with Emacs.

 > In fact their functionality seems very limited in an X window and
 > even the manual says that they are experimental.  The only way I've
 > found to create a second tab is by clicking on a link in a help
 > buffer.

To see what they do, try C-x C-f *.c in emacs/src/ (or maybe for
sanity's sake in lib-src).  The default configuration takes buffer
list and applies the filter "keep buffers whose major mode is the same
as the current mode", then truncates that list to at most ten tabs.

C-h a buffers-tab will tell you a list of functions and variables used
to implement the default configuration.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 21:32                   ` Richard Stallman
@ 2008-01-29  7:10                     ` Stephen J. Turnbull
  2008-01-30  6:16                       ` Richard Stallman
  0 siblings, 1 reply; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-29  7:10 UTC (permalink / raw)
  To: rms; +Cc: nickrob, miles, eliz, monnier, emacs-devel

Richard Stallman writes:

 > But you are talking about something else:

Wrong "you".  Stefan is the guy who proposed the analogy of tty frames
to tabs.

I'm simply proposing that a tab control widget would be a useful
addition.  Specifically it allows one-click switching of the entire
content of a rectangular area, under control of a per-tabset Lisp
callback which takes the particular tab as an argument.  This could be
implemented as a GUI window (where available) or as a stripped-down
Emacs frame.  XEmacs instead allows a general callback which could
actually do anything, but by default uses switch-to-buffer.

My feeling is that tabs could be a useful alternative to the buffers
menu if attached to an Emacs window, but I have no experience with
that (XEmacs doesn't support that, at least, I don't know how to make
it happen).

What XEmacs does by default is attach tabs to each Emacs frame as an
always-visible alternative to the buffers menu, containing a
configurable selection of buffers.  The default filter collects all
the buffers in the same major mode as the buffer in the selected
window, but it's easy to use any other predicate, such as all buffers
visiting files in the same directory, all buffers with the same
name-sans-extension, etc.

If a frame contains multiple windows, the buffers tab refers to the
buffer in the selected window and other buffers in the same mode.
I find this implementation mildly awkward, rarely useful, and am
always amazed at how pleased newbies are to have this feature. ;-)
It's quite popular, actually.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-29  6:53                             ` Stephen J. Turnbull
@ 2008-01-29  7:19                               ` Nick Roberts
  2008-01-29  8:08                                 ` Stephen J. Turnbull
  0 siblings, 1 reply; 66+ messages in thread
From: Nick Roberts @ 2008-01-29  7:19 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: emacs-devel

 > No.  We have no GUI features in TTYs, no menus, no scrollbars, no
 > dialogs, no toolbars, no images.  Nobody has ever asked for them,
 > either, not even for compatibility with Emacs.

AFAIK Emacs only has a menu-bar in a tty.

 >  > In fact their functionality seems very limited in an X window and
 >  > even the manual says that they are experimental.  The only way I've
 >  > found to create a second tab is by clicking on a link in a help
 >  > buffer.
 > 
 > To see what they do, try C-x C-f *.c in emacs/src/ (or maybe for
 > sanity's sake in lib-src).  The default configuration takes buffer
 > list and applies the filter "keep buffers whose major mode is the same
 > as the current mode", then truncates that list to at most ten tabs.

If I do C-x C-f *.c in XEmacs I only get one empty buffer called *.c
(21.4 (patch 19) "Constant Variable" XEmacs Lucid)

 > C-h a buffers-tab will tell you a list of functions and variables used
 > to implement the default configuration.

There appear to be no functions that put a file/display a buffer in a new tab,
delete a tab etc.

Also, unlike Eclipse there is just one gutter per frame, which appears to
be shared by all the buffers in that frame, just displaying the tabs for
the one selected.  When a tab is selected it moves to the left, not just to
the front.  They don't appear to be part of a toolkit but built from one.
Now that toolkits like GTK provide tabs as widgets, I presume they might
be easier to add to Emacs.



-- 
Nick                                           http://www.inet.net.nz/~nickrob

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-29  7:19                               ` Nick Roberts
@ 2008-01-29  8:08                                 ` Stephen J. Turnbull
  0 siblings, 0 replies; 66+ messages in thread
From: Stephen J. Turnbull @ 2008-01-29  8:08 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-devel

Nick Roberts writes:

 > If I do C-x C-f *.c in XEmacs I only get one empty buffer called *.c
 > (21.4 (patch 19) "Constant Variable" XEmacs Lucid)

Oh.  I guess globbing in C-x C-f was added in the 21.5 series.  Sorry.
Then do it by hand.  Then do some Makefiles and the like.  Notice what
tabs appear according to the current buffer.

This behavior is highly configurable; filter-on-mode is just the
default (and only built-in) behavior.

 >  > C-h a buffers-tab will tell you a list of functions and variables used
 >  > to implement the default configuration.
 > 
 > There appear to be no functions that put a file/display a buffer in
 > a new tab, delete a tab etc.

Nope.  That's not how they're used.  That could be done, but it wasnt.

 > Also, unlike Eclipse there is just one gutter per frame, which
 > appears to be shared by all the buffers in that frame, just
 > displaying the tabs for the one selected.

In the default configuration, yes.

 > When a tab is selected it moves to the left, not just to the front.

Actually, that should not happen if you use the GUI (ie, click on the
tab).  (Or maybe that too is a bug fixed in 21.5.)  That is an
artifact of the underlying implementation which recomputes the tabs
each time the buffer displayed changes via switch-to-buffer.

 > They don't appear to be part of a toolkit but built from one.  Now
 > that toolkits like GTK provide tabs as widgets, I presume they
 > might be easier to add to Emacs.

That depends on whether you insist that they be cross-platform or not.
Native GTK widgets and native Windose widgets (not that they deserve
the name, as I understand it) require quite different kinds of TLC,
which conflict is an unending source of bugs if you try to provide a
flexible implementation with Lisp callbacks that works on both
platforms.  At least, that is our experience.

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-29  7:10                     ` Stephen J. Turnbull
@ 2008-01-30  6:16                       ` Richard Stallman
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Stallman @ 2008-01-30  6:16 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: nickrob, emacs-devel, eliz, monnier, miles

     > But you are talking about something else:

    Wrong "you".  Stefan is the guy who proposed the analogy of tty frames
    to tabs.

Ok.  In any case, that is the proposal I was criticizing.

    I'm simply proposing that a tab control widget would be a useful
    addition.  Specifically it allows one-click switching of the entire
    content of a rectangular area, under control of a per-tabset Lisp
    callback which takes the particular tab as an argument.

It sounds good to me.  It is easy except for the GUI part.

    What XEmacs does by default is attach tabs to each Emacs frame as an
    always-visible alternative to the buffers menu, containing a
    configurable selection of buffers.

I think tabs should operate at frame level
and each tab should be a window configuration.




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-28 23:05                       ` Bastien Guerry
@ 2008-01-30  6:16                         ` Richard Stallman
  2008-01-30  7:53                           ` Bastien Guerry
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-01-30  6:16 UTC (permalink / raw)
  To: Bastien Guerry; +Cc: nickrob, emacs-devel, monnier, stephen, eliz, miles

    I can still switch from one tab to another: in this case, a tab is
    really just a window configuration, but switching from one window
    configuration to another one without having to store them is quite
    handy.  

It sounds like, in your usage, this is just a way
to save and name window configurations.  Is that right?




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-30  6:16                         ` Richard Stallman
@ 2008-01-30  7:53                           ` Bastien Guerry
  0 siblings, 0 replies; 66+ messages in thread
From: Bastien Guerry @ 2008-01-30  7:53 UTC (permalink / raw)
  To: rms; +Cc: nickrob, emacs-devel, monnier, stephen, eliz, miles

Richard Stallman <rms@gnu.org> writes:

>     I can still switch from one tab to another: in this case, a tab is
>     really just a window configuration, but switching from one window
>     configuration to another one without having to store them is quite
>     handy.  
>
> It sounds like, in your usage, this is just a way
> to save and name window configurations.  Is that right?

Right but not complete.  

I use elscreen mainly to *cycle* through tabs (i.e. to cycle through
window configurations) and to open a new tab when needed.

It seems to me that, in this discussion, we should really talk about
"workspaces" - not "tabs".  Or at least we could disambiguate these and
use "tab" for the visual UI feature and "workspace" for the underlying
window configuration (and the properties we would like to attach to it.)

I use elscreen to easily *cycle* through workspaces and to easily
*create* new ones.

Having "workspaces" (or whatever you want to call them) would be very
useful for letting variables be local to them.  For example I use this:

  (make-variable-buffer-local 'search-ring)

but this would make more sense in a workspace rather than in a buffer.

Or see the function `erc-iswitchb': it restricts the list of buffers to
the one that are used by ERC.  I've implemented something like this for
Org as well.  If you use ERC in a dedicated workspace, then the notion
of "ERC buffers" is really an instance of the more general notion of
"This workspace buffers."

-- 
Bastien




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers]
  2008-01-27 20:52             ` Eli Zaretskii
  2008-01-27 21:33               ` Alan Mackenzie
@ 2008-02-01  3:32               ` T. V. Raman
  1 sibling, 0 replies; 66+ messages in thread
From: T. V. Raman @ 2008-02-01  3:32 UTC (permalink / raw)
  To: eliz; +Cc: acm, emacs-devel

and I can vouch for this, it  works well.
I use it all  the time

>>>>> "Eli" == Eli Zaretskii <eliz@gnu.org> writes:
    >> Date: Sun, 27 Jan 2008 19:55:38 +0000 From: Alan Mackenzie
    >> <acm@muc.de> Cc: nickrob@snap.net.nz, miles@gnu.org,
    >> emacs-devel@gnu.org
    >> 
    >> Actually, you may be right.  The mechanism for switching
    >> frames (C-x 5 o, repeated ad nauseam till you finally
    >> reach the frame you're looking for) is so broken as to be
    >> unusable, at least for me.
    Eli> 
    Eli> A solution has been in existence for that problem for a
    Eli> very long time: give your frame a name with "M-x
    Eli> set-frame-name RET FOO RET", then select it with "M-x
    Eli> select-frame-by-name RET FOO RET".  Puff!  problem gone.
    Eli> 
    Eli> 
    Eli> _______________________________________________
    Eli> Emacs-devel mailing list Emacs-devel@gnu.org
    Eli> http://lists.gnu.org/mailman/listinfo/emacs-devel

-- 
Best Regards,
--raman

      
Email:  raman@users.sf.net
WWW:    http://emacspeak.sf.net/raman/
AIM:    emacspeak       GTalk: tv.raman.tv@gmail.com
PGP:    http://emacspeak.sf.net/raman/raman-almaden.asc
Google: tv+raman 
IRC:    irc://irc.freenode.net/#emacs




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-01-27 20:59             ` Stefan Monnier
  2008-01-27 23:31               ` Robert J. Chassell
  2008-01-28  7:17               ` Richard Stallman
@ 2008-02-01  3:50               ` T. V. Raman
  2008-02-01 18:26                 ` Richard Stallman
  2 siblings, 1 reply; 66+ messages in thread
From: T. V. Raman @ 2008-02-01  3:50 UTC (permalink / raw)
  To: monnier; +Cc: eliz, emacs-devel, nickrob, rms, miles


Doing this on Linux would also have the nice side-effect of
allowing tty users to place  each frameset on a different virtual
console, something which would make it  easier to logically
separate out frames.

>>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> writes:
    >>> But getting rid of them would just mean trouble.
    >> I would certainly object.
    Stefan> 
    Stefan> Richard was talking about a suggestion of mine, which
    Stefan> was not to remove the frame functionality on ttys.
    Stefan> How can people even expect me to suggest throwing
    Stefan> away such a feature?
    Stefan> 
    Stefan> All I was pointing out was that if we introduce
    Stefan> frame-level tabs, then it might make sense to treat
    Stefan> the current "multiple-frames on a single tty" as tabs
    Stefan> rather than as frames.  So we may want to refine the
    Stefan> notion of tty frames so that each tty gets exactly 1
    Stefan> frame, and it can then multiplex several tabs on that
    Stefan> frame: the end result is the same featureset as
    Stefan> before, but in a way that more closely matches the
    Stefan> semantics of frames&tabs under GUIs (where only one
    Stefan> of the tabs of a frame can be displayed at a time,
    Stefan> just like frames on a single tty).
    Stefan> 
    Stefan> 
    Stefan>         Stefan
    Stefan> 
    Stefan> 
    Stefan> _______________________________________________
    Stefan> Emacs-devel mailing list Emacs-devel@gnu.org
    Stefan> http://lists.gnu.org/mailman/listinfo/emacs-devel

-- 
Best Regards,
--raman

      
Email:  raman@users.sf.net
WWW:    http://emacspeak.sf.net/raman/
AIM:    emacspeak       GTalk: tv.raman.tv@gmail.com
PGP:    http://emacspeak.sf.net/raman/raman-almaden.asc
Google: tv+raman 
IRC:    irc://irc.freenode.net/#emacs




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-02-01  3:50               ` T. V. Raman
@ 2008-02-01 18:26                 ` Richard Stallman
  2008-02-03  2:06                   ` T. V. Raman
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Stallman @ 2008-02-01 18:26 UTC (permalink / raw)
  To: raman; +Cc: nickrob, eliz, miles, monnier, emacs-devel

    Doing this on Linux would also have the nice side-effect of
    allowing tty users to place  each frameset on a different virtual
    console, something which would make it  easier to logically
    separate out frames.

I don't follow that.




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-02-01 18:26                 ` Richard Stallman
@ 2008-02-03  2:06                   ` T. V. Raman
  2008-02-03 16:18                     ` Richard Stallman
  0 siblings, 1 reply; 66+ messages in thread
From: T. V. Raman @ 2008-02-03  2:06 UTC (permalink / raw)
  To: rms; +Cc: raman, nickrob, emacs-devel, monnier, eliz, miles



>>>>> "Richard" == Richard Stallman <rms@gnu.org> writes:
    Richard>     Doing this on Linux would also have the nice
    Richard> side-effect of allowing tty users to place each
    Richard> frameset on a different virtual console, something
    Richard> which would make it easier to logically separate out
    Richard> frames.
    Richard> 
    Richard> I don't follow that.

I run exclusively on the console, ie no X.
I hve lots of buffers open, and prefer to organize them in
frames, with  ech frame holding related buffers.

If I could place each frame on a separate virtual console where
I'm already logged in,
then I could switch among those frames by hitting alt-f<n>, and
then use emacs' buffer switching commands in that frame to manage
the  orde rin which buffers are cycled through in that particular
frame.

At present I move among frames by naming them first; but if I
forget to move to the named frame first, then I end up with
buffers that I'd ideally leave in one frame getting accessed in another.

-- 
Best Regards,
--raman

      
Email:  raman@users.sf.net
WWW:    http://emacspeak.sf.net/raman/
AIM:    emacspeak       GTalk: tv.raman.tv@gmail.com
PGP:    http://emacspeak.sf.net/raman/raman-almaden.asc
Google: tv+raman 
IRC:    irc://irc.freenode.net/#emacs




^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: Tabbed buffers
  2008-02-03  2:06                   ` T. V. Raman
@ 2008-02-03 16:18                     ` Richard Stallman
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Stallman @ 2008-02-03 16:18 UTC (permalink / raw)
  To: raman; +Cc: raman, nickrob, emacs-devel, monnier, eliz, miles

    If I could place each frame on a separate virtual console where
    I'm already logged in,
    then I could switch among those frames by hitting alt-f<n>, and

It should be possible to set this up using the current trunk version
of Emacs, since it can open multiple ttys.  You'll have to do a certain
amount of work to make it run, but with luck you don't have to change
the C code, only the Lisp.

I would guess that you need to set up /etc/inittab so that the other
ttys have nothing running on them.  That way Emacs will be able to
open them and use them.




^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2008-02-03 16:18 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-25 21:57 Tabbed buffers Nick Roberts
2008-01-25 22:40 ` Miles Bader
2008-01-25 23:41   ` Nick Roberts
2008-01-26  0:07     ` Miles Bader
2008-01-26  2:47       ` Stefan Monnier
2008-01-26  5:03         ` Miles Bader
2008-01-26  7:24           ` Thomas Lord
2008-01-26 19:07           ` Stefan Monnier
2008-01-26 14:38         ` Chong Yidong
2008-01-27  0:44           ` Richard Stallman
2008-01-27  1:21             ` Miles Bader
2008-01-27  1:41               ` Stefan Monnier
2008-01-27 16:04                 ` Richard Stallman
2008-01-27  1:50               ` Nick Roberts
2008-01-27  1:58                 ` Miles Bader
2008-01-27  2:10                   ` Nick Roberts
2008-01-27  0:45         ` Richard Stallman
2008-01-27  4:09           ` Eli Zaretskii
2008-01-27 16:13             ` T. V. Raman
2008-01-27 20:59               ` Stefan Monnier
2008-01-27 20:59             ` Stefan Monnier
2008-01-27 23:31               ` Robert J. Chassell
2008-01-28  2:08                 ` Stefan Monnier
2008-01-28  7:17               ` Richard Stallman
2008-01-28  8:31                 ` Stephen J. Turnbull
2008-01-28 15:17                   ` Stefan Monnier
2008-01-28 17:22                     ` Stephen J. Turnbull
2008-01-28 18:18                       ` Stefan Monnier
2008-01-28 19:18                         ` Stephen J. Turnbull
2008-01-28 21:30                           ` Nick Roberts
2008-01-29  6:53                             ` Stephen J. Turnbull
2008-01-29  7:19                               ` Nick Roberts
2008-01-29  8:08                                 ` Stephen J. Turnbull
2008-01-28 21:32                     ` Richard Stallman
2008-01-28 23:05                       ` Bastien Guerry
2008-01-30  6:16                         ` Richard Stallman
2008-01-30  7:53                           ` Bastien Guerry
2008-01-28 21:32                   ` Richard Stallman
2008-01-29  7:10                     ` Stephen J. Turnbull
2008-01-30  6:16                       ` Richard Stallman
2008-02-01  3:50               ` T. V. Raman
2008-02-01 18:26                 ` Richard Stallman
2008-02-03  2:06                   ` T. V. Raman
2008-02-03 16:18                     ` Richard Stallman
2008-01-27 19:55           ` Using several frames on TTYs, switching them, terminology: [Is also: Tabbed buffers] Alan Mackenzie
2008-01-27 20:52             ` Eli Zaretskii
2008-01-27 21:33               ` Alan Mackenzie
2008-01-28  4:15                 ` Eli Zaretskii
2008-02-01  3:32               ` T. V. Raman
2008-01-27 21:13             ` Stefan Monnier
2008-01-27 21:50               ` Alan Mackenzie
2008-01-28  2:03                 ` Stefan Monnier
2008-01-28  7:17             ` Richard Stallman
2008-01-28 15:42               ` David De La Harpe Golden
2008-01-28 21:32                 ` Richard Stallman
2008-01-26  9:14   ` Tabbed buffers Eli Zaretskii
2008-01-26 11:36     ` Robert J. Chassell
2008-01-26  9:10 ` Eli Zaretskii
2008-01-27  0:12   ` Nick Roberts
2008-01-27  4:07     ` Eli Zaretskii
2008-01-27  4:48       ` Nick Roberts
2008-01-27  8:05         ` Is there any document about Emacs implementation (C source code)? brianjiang
2008-01-27  9:40           ` dhruva
2008-01-27 20:32             ` Stephen J. Turnbull
2008-01-27 20:57               ` Eli Zaretskii
2008-01-27 17:18         ` Tabbed buffers Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).