* doc/emacs/frames.texi (Tab Bars): New node.
scroll bar Emacs currently supports.)
@item menu-bar
The mouse was in the menu bar.
+@item tab-bar
+The mouse was in a tab bar.
+@item tab-line
+The mouse was in a tab line.
@item header-line
The mouse was in a header line.
@ignore
for mouse-sensitive portions of text on header lines. This is a
separate face because the @code{header-line} face might be customized
in a way that does not interact well with @code{highlight}.
+@item tab-line
+@cindex @code{tab-line} face
+Similar to @code{mode-line} for a window's tab line, which appears
+at the top of a window with tabs representing window buffers.
@item vertical-border
@cindex @code{vertical-border} face
This face is used for the vertical divider between windows on text
@xref{Scroll Bars}.
@item tool-bar
This face determines the color of tool bar icons. @xref{Tool Bars}.
+@item tab-bar
+This face determines the color of tab bar icons. @xref{Tab Bars}.
@item menu
@cindex menu bar appearance
@cindex @code{menu} face, no effect if customized
* Drag and Drop:: Using drag and drop to open files and insert text.
* Menu Bars:: Enabling and disabling the menu bar.
* Tool Bars:: Enabling and disabling the tool bar.
+* Tab Bars:: Enabling and disabling the tab bar.
* Dialog Boxes:: Controlling use of dialog boxes.
* Tooltips:: Displaying information at the current mouse position.
* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
* Drag and Drop:: Using drag and drop to open files and insert text.
* Menu Bars:: Enabling and disabling the menu bar.
* Tool Bars:: Enabling and disabling the tool bar.
+* Tab Bars:: Enabling and disabling the tab bar.
* Dialog Boxes:: Controlling use of dialog boxes.
* Tooltips:: Displaying information at the current mouse position.
* Mouse Avoidance:: Preventing the mouse pointer from obscuring text.
tool bar is hidden when the frame is put into fullscreen, but can be
displayed by moving the mouse pointer to the top of the screen.
+@node Tab Bars
+@section Tab Bars
+@cindex Tab Bar mode
+@cindex mode, Tab Bar
+@cindex tabs, tabbar
+
+ On graphical displays and on text terminals, Emacs puts a @dfn{tab bar}
+at the top of each frame, just below the menu bar. This is a row of
+tabs which you can click on with the mouse to switch window configurations.
+
+ Each tab on the tab bar represents a named persistent window
+configuration. Its name is composed from the names of buffers
+visible in windows of the window configuration. Clicking on the
+tab name switches the current window configuration to the previously
+used configuration of windows and buffers.
+
+ If you are using the desktop library to save and restore your
+sessions, the tabs from the tab bar are recorded in the desktop file,
+together with their associated window configurations.
+
+@findex tab-bar-mode
+@vindex tab-bar-mode
+ To toggle the use of tab bars, type @kbd{M-x tab-bar-mode}. This
+command applies to all frames, including frames yet to be created. To
+control the use of tab bars at startup, customize the variable
+@code{tab-bar-mode}.
+
+@vindex tab-bar-new-tab-choice
+@cindex Tab Bar new tab
+ By default, Emacs follows the same behavior as when creating frames,
+to start a new tab with the current buffer, i.e. the buffer
+that was current before calling the command that adds a new tab.
+To start a new tab with other buffers, customize the variable
+@code{tab-bar-new-tab-choice}.
+
@node Dialog Boxes
@section Using Dialog Boxes
@cindex dialog boxes
@key{TAB} is the tab character. In Emacs it is typically used for
indentation or completion.
+@item Tab Bar
+The tab bar is a row of tabs at the top of an Emacs frame.
+Clicking on one of these tabs switches named persistent window
+configurations. @xref{Tab Bars}.
+
+@item Tab Line
+The tab line is a line of tabs at the top of an Emacs window.
+Clicking on one of these tabs switches window buffers.
+
@anchor{Glossary---Tags Table}
@item Tags Table
A tags table is a file that serves as an index to the function
but the tool bar is only displayed on graphical terminals. @xref{Tool
Bars}.
+@item
+Tab Bar mode gives each frame a tab bar. @xref{Tab Bars}.
+
+@item
+Tab Line mode gives each window a tab line.
+
@item
Transient Mark mode highlights the region, and makes many Emacs
commands operate on the region when the mark is active. It is enabled
@var{position} slot of a click event, you should typically use the
functions documented in @ref{Accessing Mouse}. The explicit format of
the list depends on where the click occurred. For clicks in the text
-area, mode line, header line, or in the fringe or marginal areas, the
+area, mode line, header line, tab line, or in the fringe or marginal areas, the
mouse position list has the form
@example
The buffer position of the character clicked on in the text area; or,
if the click was outside the text area, the window area where it
occurred. It is one of the symbols @code{mode-line},
-@code{header-line}, @code{vertical-line}, @code{left-margin},
+@code{header-line}, @code{tab-line}, @code{vertical-line}, @code{left-margin},
@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
In one special case, @var{pos-or-area} is a list containing a symbol
The relative pixel coordinates of the click. For clicks in the text
area of a window, the coordinate origin @code{(0 . 0)} is taken to be
the top left corner of the text area. @xref{Window Sizes}. For
-clicks in a mode line or header line, the coordinate origin is the top
+clicks in a mode line, header line or tab line, the coordinate origin is the top
left corner of the window itself. For fringes, margins, and the
vertical border, @var{x} does not have meaningful data. For fringes
and margins, @var{y} is relative to the bottom edge of the header
@item @var{text-pos}
For clicks on a marginal area or on a fringe, this is the buffer
position of the first visible character in the corresponding line in
-the window. For clicks on the mode line or the header line, this is
+the window. For clicks on the mode line, the header line or the tab line, this is
@code{nil}. For other events, it is the buffer position closest to
the click.
under the @var{x}, @var{y} position. If @var{x} lies beyond the last
column of actual text on its line, @var{col} is reported by adding
fictional extra columns that have the default character width. Row 0
-is taken to be the header line if the window has one, or the topmost
+is taken to be the header line if the window has one, or Row 1
+if the window also has the tab line, or the topmost
row of the text area otherwise. Column 0 is taken to be the leftmost
column of the text area for clicks on a window text area, or the
leftmost mode line or header line column for clicks there. For clicks
Note that @var{row} is counted from the top of the text area. If the
window given by @var{position} possesses a header line (@pxref{Header
-Lines}), it is @emph{not} included in the @var{row} count.
+Lines}) or a tab line, they are @emph{not} included in the @var{row} count.
@end defun
@defun posn-actual-col-row position
miscellaneous window events so that they never appear in a key sequence
with any other events.
+@cindex @code{tab-line} prefix key
@cindex @code{header-line} prefix key
@cindex @code{mode-line} prefix key
@cindex @code{vertical-line} prefix key
@cindex @code{horizontal-scroll-bar} prefix key
@cindex @code{vertical-scroll-bar} prefix key
@cindex @code{menu-bar} prefix key
+@cindex @code{tab-bar} prefix key
@cindex mouse events, in special parts of frame
When mouse events occur in special parts of a window, such as a mode
line or a scroll bar, the event type shows nothing special---it is the
button and modifier keys. The information about the window part is kept
elsewhere in the event---in the coordinates. But
@code{read-key-sequence} translates this information into imaginary
-prefix keys, all of which are symbols: @code{header-line},
-@code{horizontal-scroll-bar}, @code{menu-bar}, @code{mode-line},
+prefix keys, all of which are symbols: @code{tab-line}, @code{header-line},
+@code{horizontal-scroll-bar}, @code{menu-bar}, @code{tab-bar}, @code{mode-line},
@code{vertical-line}, and @code{vertical-scroll-bar}. You can define
meanings for mouse clicks in special window parts by defining key
sequences using these imaginary prefix keys.
applies the @code{mode-line} face. For the mode line of a
non-selected window, Emacs applies the @code{mode-line-inactive} face.
For a header line, Emacs applies the @code{header-line} face.
+For a tab line, Emacs applies the @code{tab-line} face.
@item
If the text comes from an overlay string via @code{before-string} or
@item header-line
The coordinates are in the header line of @var{window}.
+@item tab-line
+The coordinates are in the tab line of @var{window}.
+
@item right-divider
The coordinates are in the divider separating @var{window} from a
window on the right.
contents of the header line on other windows showing this buffer are not
affected.
+@item tab-line-format
+@vindex tab-line-format@r{, a window parameter}
+This parameter replaces the value of the buffer-local variable
+@code{tab-line-format} (@pxref{Mode Line Basics}) of this window's
+buffer whenever this window is displayed. The symbol @code{none} means
+to suppress display of a tab line for this window. Display and
+contents of the tab line on other windows showing this buffer are not
+affected.
+
@item min-margins
@vindex min-margins@r{, a window parameter}
The value of this parameter is a cons cell whose @sc{car} and
Also it's possible to switch named persistent window configurations
without having graphical access to the tab-bar, even on a tty
or when 'tab-bar-mode' is disabled, with these commands:
-'list-tabs' displays a list of named window configurations for switching;
-'make-tab' creates a new window configuration;
-'delete-tab' deletes the current window configuration;
-'switch-to-tab' switches to the window configuration by its name;
-'previous-tab' switches to the previous window configuration;
-'next-tab' switches to the next window configuration.
+'tab-new' creates a new window configuration;
+'tab-delete' deletes the current window configuration;
+'tab-select' switches to the window configuration by its name;
+'tab-previous' switches to the previous window configuration;
+'tab-next' switches to the next window configuration;
+'tab-list' displays a list of named window configurations for switching.
** 'global-tab-line-mode' enables the tab-line above each window to
switch buffers in it to previous/next buffers. Selecting a previous
\f
;;; Non-graphical access to frame-local tabs (named window configurations)
-(defun tab-make ()
+(defun tab-new ()
"Create a new named window configuration without having to click a tab."
(interactive)
(tab-bar-new-tab)
(defalias 'tab-select 'tab-bar-select-tab)
(defalias 'tab-previous 'tab-bar-switch-to-prev-tab)
(defalias 'tab-next 'tab-bar-switch-to-next-tab)
+(defalias 'tab-list 'tab-bar-list)
(defun tab-bar-list ()
"Display a list of named window configurations.