ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
363 lines
10 KiB
Groff
363 lines
10 KiB
Groff
.\"***************************************************************************
|
|
.\" Copyright 2018-2024,2025 Thomas E. Dickey *
|
|
.\" Copyright 2008-2016,2017 Free Software Foundation, Inc. *
|
|
.\" *
|
|
.\" Permission is hereby granted, free of charge, to any person obtaining a *
|
|
.\" copy of this software and associated documentation files (the *
|
|
.\" "Software"), to deal in the Software without restriction, including *
|
|
.\" without limitation the rights to use, copy, modify, merge, publish, *
|
|
.\" distribute, distribute with modifications, sublicense, and/or sell *
|
|
.\" copies of the Software, and to permit persons to whom the Software is *
|
|
.\" furnished to do so, subject to the following conditions: *
|
|
.\" *
|
|
.\" The above copyright notice and this permission notice shall be included *
|
|
.\" in all copies or substantial portions of the Software. *
|
|
.\" *
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
.\" *
|
|
.\" Except as contained in this notice, the name(s) of the above copyright *
|
|
.\" holders shall not be used in advertising or otherwise to promote the *
|
|
.\" sale, use or other dealings in this Software without prior written *
|
|
.\" authorization. *
|
|
.\"***************************************************************************
|
|
.\"
|
|
.\" $Id: tabs.1,v 1.74 2025/08/16 19:11:47 tom Exp $
|
|
.TH @TABS@ 1 2025-08-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
|
|
.ie \n(.g \{\
|
|
.ds `` \(lq
|
|
.ds '' \(rq
|
|
.\}
|
|
.el \{\
|
|
.ie t .ds `` ``
|
|
.el .ds `` ""
|
|
.ie t .ds '' ''
|
|
.el .ds '' ""
|
|
.\}
|
|
.
|
|
.de bP
|
|
.ie n .IP \(bu 4
|
|
.el .IP \(bu 2
|
|
..
|
|
.
|
|
.SH NAME
|
|
\fB\%@TABS@\fP \-
|
|
set terminal tab stops
|
|
.SH SYNOPSIS
|
|
\fB@TABS@\fP [\fIoptions\fP] [\fItabstop-list\fP]
|
|
.SH DESCRIPTION
|
|
The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
|
|
This uses the terminfo \fBclear_all_tabs\fP and \fBset_tab\fP capabilities.
|
|
If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops.
|
|
The terminal should be configured to use hard tabs, e.g.,
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
stty tab0
|
|
.EE
|
|
.RE
|
|
.PP
|
|
Like \fB@CLEAR@\fP(1), \fB@TABS@\fP writes to the standard output.
|
|
You can redirect the standard output to a file (which prevents
|
|
\fB@TABS@\fP from actually changing the tabstops),
|
|
and later \fBcat\fP the file to the screen, setting tabstops at that point.
|
|
.PP
|
|
These are hardware tabs, which cannot be queried rapidly by applications
|
|
running in the terminal, if at all.
|
|
Curses and other full-screen applications may use hardware tabs
|
|
in optimizing their output to the terminal.
|
|
If the hardware tabstops differ from the information in the terminal
|
|
database, the result is unpredictable.
|
|
Before running curses programs,
|
|
you should either reset tab-stops to the standard interval
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
@TABS@ \-8
|
|
.EE
|
|
.RE
|
|
.PP
|
|
or use the \fB@RESET@\fP program,
|
|
since the normal initialization sequences do not ensure that tab-stops
|
|
are reset.
|
|
.SH OPTIONS
|
|
.SS "General Options"
|
|
.TP 5
|
|
.BI \-T "name"
|
|
Tell \fB@TABS@\fP which terminal type to use.
|
|
If this option is not given, \fB@TABS@\fP will use the \fB$TERM\fP
|
|
environment variable.
|
|
If that is not set, it will use the \fIansi+tabs\fP entry.
|
|
.TP 5
|
|
.B \-d
|
|
The debugging option shows a ruler line, followed by two data lines.
|
|
The first data line shows the expected tab-stops marked with asterisks.
|
|
The second data line shows the actual tab-stops, marked with asterisks.
|
|
.TP 5
|
|
.B \-n
|
|
This option tells \fB@TABS@\fP to check the options and run any debugging
|
|
option, but not to modify the terminal settings.
|
|
.TP
|
|
\fB\-V\fP
|
|
reports the version of \fI\%ncurses\fP which was used in this program,
|
|
and exits.
|
|
.PP
|
|
The \fB@TABS@\fP program processes a single list of tab stops.
|
|
The last option to be processed which defines a list is the one that
|
|
determines the list to be processed.
|
|
.SS "Implicit Lists"
|
|
Use a single number as an option,
|
|
e.g., \*(``\fB\-5\fP\*('' to set tabs at the given
|
|
interval (in this case 1, 6, 11, 16, 21, etc.).
|
|
Tabs are repeated up to the right margin of the screen.
|
|
.PP
|
|
Use \*(``\fB\-0\fP\*('' to clear all tabs.
|
|
.PP
|
|
Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval.
|
|
.SS "Explicit Lists"
|
|
An explicit list can be defined after the options
|
|
(this does not use a \*(``\-\*('').
|
|
The values in the list must be in increasing numeric order,
|
|
and greater than zero.
|
|
They are separated by a comma or a blank, for example,
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
.nf
|
|
@TABS@ 1,6,11,16,21
|
|
@TABS@ 1 6 11 16 21
|
|
.fi
|
|
.EE
|
|
.RE
|
|
.PP
|
|
Use a \*(``+\*('' to treat a number
|
|
as an increment relative to the previous value,
|
|
e.g.,
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
@TABS@ 1,+5,+5,+5,+5
|
|
.EE
|
|
.RE
|
|
.PP
|
|
which is equivalent to the 1,6,11,16,21 example.
|
|
.SS "Standard Tab Stops"
|
|
POSIX defines several lists of tab stops.
|
|
.TP 5
|
|
.B \-a
|
|
Assembler, IBM S/370, first format
|
|
.br
|
|
1,10,16,36,72
|
|
.TP 5
|
|
.B \-a2
|
|
Assembler, IBM S/370, second format
|
|
.br
|
|
1,10,16,40,72
|
|
.TP 5
|
|
.B \-c
|
|
COBOL, normal format
|
|
.br
|
|
1,8,12,16,20,55
|
|
.TP 5
|
|
.B \-c2
|
|
COBOL compact format
|
|
.br
|
|
1,6,10,14,49
|
|
.TP 5
|
|
.B \-c3
|
|
COBOL compact format extended
|
|
.br
|
|
1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67
|
|
.TP 5
|
|
.B \-f
|
|
FORTRAN
|
|
.br
|
|
1,7,11,15,19,23
|
|
.TP 5
|
|
.B \-p
|
|
PL/I
|
|
.br
|
|
1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
|
|
.TP 5
|
|
.B \-s
|
|
SNOBOL
|
|
.br
|
|
1,10,55
|
|
.TP 5
|
|
.B \-u
|
|
UNIVAC 1100 Assembler
|
|
.br
|
|
1,12,20,44
|
|
.SS Margins
|
|
A few terminals expose a means of changing their left and right margins.
|
|
\fB@TABS@\fP supports this feature with an option.
|
|
.TP 5
|
|
.BI +m \ margin
|
|
The effect depends on whether the terminal has the margin capabilities:
|
|
.RS
|
|
.bP
|
|
If the terminal provides the capability for setting the left margin,
|
|
\fB@TABS@\fP uses this,
|
|
and adjusts the available tab stop widths.
|
|
.bP
|
|
If the terminal does not provide the margin capabilities,
|
|
\fB@TABS@\fP imitates their effect,
|
|
putting tab stops at appropriate places on each line.
|
|
The terminal's left margin is not modified.
|
|
.RE
|
|
.IP
|
|
If the
|
|
.I margin
|
|
parameter is omitted,
|
|
the default is 10.
|
|
Use
|
|
.B +m0
|
|
to reset the left margin,
|
|
that is,
|
|
to make it the left edge of the terminal's display.
|
|
Before setting a left margin,
|
|
\fB@TABS@\fP resets the margin to reduce problems that might arise
|
|
from moving the cursor to the left of the current left margin.
|
|
.PP
|
|
When setting or resetting the left margin,
|
|
\fB@TABS@\fP may also reset the right margin.
|
|
.SH FILES
|
|
.TP
|
|
.I @DATADIR@/tabset
|
|
tab stop initialization database
|
|
.SH PORTABILITY
|
|
IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7
|
|
(POSIX.1-2008)
|
|
describes a
|
|
.I tabs
|
|
utility.
|
|
However,
|
|
.bP
|
|
this standard describes a
|
|
.B +m
|
|
option to set a terminal's left margin.
|
|
Very few of the entries in the terminal database provide the
|
|
.B \%set_left_margin
|
|
.RB ( smgl )
|
|
or
|
|
.B \%set_left_margin_parm
|
|
.RB \%( smglp )
|
|
capabilities needed to support the feature.
|
|
.bP
|
|
Unlike
|
|
.IR tput ,
|
|
.I tabs
|
|
has no specification in X/Open Curses Issue\ 7.
|
|
.PP
|
|
The
|
|
.B \-d
|
|
(debug) and
|
|
.B \-n
|
|
(no-op) options are
|
|
.I \%ncurses
|
|
extensions not provided by other implementations.
|
|
.SH HISTORY
|
|
A
|
|
.I tabs
|
|
utility appeared in PWB/Unix 1.0 (1977).
|
|
.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/sys/source/s2/\
|
|
.\" tabs.c
|
|
A reduced version shipped in Seventh Edition Unix
|
|
(early 1979)
|
|
.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/tabs.c
|
|
and in 3BSD
|
|
.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/\
|
|
.\" tabs.c
|
|
(later the same year);
|
|
it supported an option \*(``\-n\*('' to set the first tab stop at the
|
|
left margin.
|
|
That option is not specified by POSIX.
|
|
.PP
|
|
The PWB/Unix
|
|
.I tabs
|
|
utility returned in System III (1980),
|
|
and used built-in tables
|
|
to support a half-dozen hardcopy terminal (printer) types.
|
|
It also had logic to support setting the left margin,
|
|
as well as a feature for copying the tab settings from a file.
|
|
.PP
|
|
Versions of the program in later releases of AT&T Unix,
|
|
such as SVr4,
|
|
.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=SysVR4/cmd/tabs/tabs.c
|
|
added support for the terminal database,
|
|
but retained the tables to support the printers.
|
|
By this time,
|
|
System\ V
|
|
.I tput
|
|
had incorporated the tab stop initialization feature of BSD's
|
|
.I tset
|
|
from 1982,
|
|
but employed the
|
|
.I \%term\%info
|
|
database to do so.
|
|
.PP
|
|
The
|
|
.B +m
|
|
option was documented in the POSIX Base Specifications Issue\ 5
|
|
(Unix98, 1997),
|
|
then omitted in Issue\ 6
|
|
(Unix03, 2004)
|
|
without express motivation,
|
|
though an introductory comment
|
|
\*(``and optionally adjusts the margin\*('' remains,
|
|
overlooked in the removal.
|
|
The
|
|
.I tabs
|
|
utility documented in Issues 6 and later has no mechanism for setting
|
|
margins.
|
|
The
|
|
.B +m
|
|
option in
|
|
.IR \%ncurses 's
|
|
implementation
|
|
differs from the SVr4 feature by using terminal capabilities
|
|
rather than built-in tables.
|
|
.PP
|
|
POSIX documents no limit on the number of tab stops.
|
|
Other implementations impose one;
|
|
the limit is 20 in PWB/Unix's
|
|
.I tabs
|
|
utility.
|
|
While some terminals may not accept an arbitrary number of tab stops,
|
|
.I \%ncurses
|
|
attempts to set tab stops up to the right margin
|
|
if the list thereof is sufficiently long.
|
|
.PP
|
|
The \*(``Rationale\*('' section of the Issue\ 6
|
|
.I tabs
|
|
reference page
|
|
.\" https://pubs.opengroup.org/onlinepubs/009604499/utilities/tabs.html
|
|
details how the committee considered redesigning the
|
|
.I tabs
|
|
and
|
|
.I tput
|
|
utilities,
|
|
without settling on an improved solution.
|
|
It claims that
|
|
.PP
|
|
.RS 4
|
|
no known historical version of
|
|
.I tabs
|
|
supports the capability of setting arbitrary tab stops.
|
|
.RE
|
|
.PP
|
|
The feature described in subsection \*(``Explicit Lists\*('' above was
|
|
implemented in PWB/Unix,
|
|
.\" see URL above
|
|
and permitted the setting of arbitrary tab stops nevertheless.
|
|
.SH SEE ALSO
|
|
\fB\%@INFOCMP@\fP(1M),
|
|
\fB\%@TSET@\fP(1),
|
|
\fB\%curses\fP(3X),
|
|
\fB\%terminfo\fP(5)
|