]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/tabs.1
ncurses 6.5 - patch 20240504
[ncurses.git] / man / tabs.1
index a13fd24099c38b9c448ab726ca4ee8c773dbd926..059bc1ec66fcf7fdbbca52895bb0ae547eaf479f 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2023 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,8 +27,8 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tabs.1,v 1.50 2023/11/25 14:32:36 tom Exp $
-.TH @TABS@ 1 2023-11-25 "ncurses 6.4" "User commands"
+.\" $Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp $
+.TH @TABS@ 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
 .ie \n(.g \{\
 .ds `` \(lq
 .ds '' \(rq
@@ -86,7 +86,7 @@ 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
+.SS "General Options"
 .TP 5
 .BI \-T "name"
 Tell \fB@TABS@\fP which terminal type to use.
@@ -104,12 +104,13 @@ 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 ncurses which was used in this program, and exits.
+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
+.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.).
@@ -118,7 +119,7 @@ Tabs are repeated up to the right margin of the screen.
 Use \*(``\fB\-0\fP\*('' to clear all tabs.
 .PP
 Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval.
-.SS Explicit Lists
+.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,
@@ -143,7 +144,7 @@ tabs 1,+5,+5,+5,+5
 .RE
 .PP
 which is equivalent to the 1,6,11,16,21 example.
-.SS Predefined Tab-Stops
+.SS "Predefined Tab Stops"
 POSIX defines several predefined lists of tab stops.
 .TP 5
 .B \-a
@@ -191,105 +192,164 @@ UNIVAC 1100 Assembler
 .br
 1,12,20,44
 .SS Margins
-A few terminals provide the capability for changing their left/right margins.
-The @TABS@ program has an option to use this feature:
+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,
-@TABS@ uses this, and adjusts the available width for tab-stops.
+\fB@TABS@\fP uses this,
+and adjusts the available tab stop widths.
 .bP
 If the terminal does not provide the margin capabilities,
-@TABS@ imitates the effect, putting the tab stops at the appropriate
-place on each line.
-The terminal's left-margin is not modified.
+\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 \fImargin\fP parameter is omitted, the default is 10.
-Use \fB+m0\fP to reset the left margin,
-i.e., to the left edge of the terminal's display.
-Before setting a left-margin,
-@TABS@ resets the margin to reduce problems which might arise
-on moving the cursor before the current left-margin.
+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,
-@TABS@ may reset the right-margin.
+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
-\fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (POSIX.1-2008)
-describes a \fBtabs\fP utility.
-However
+IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008)
+describes a
+.B tabs
+utility.
+However,
 .bP
-This standard describes a \fB+m\fP option, to set a terminal's left-margin.
+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
-\fBsmgl\fP (\fBset_left_margin\fP) or
-\fBsmglp\fP (\fBset_left_margin_parm\fP)
-capability needed to support the feature.
+.B \%set_left_margin
+.RB ( smgl )
+or
+.B \%set_left_margin_parm
+.RB \%( smglp )
+capabilities needed to support the feature.
 .bP
 There is no counterpart in X/Open Curses Issue 7 for this utility,
 unlike \fB@TPUT@\fP(1).
 .PP
-The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided
-by other implementations.
-.PP
-A \fBtabs\fP utility appeared in PWB/Unix 1.0 (1977).
-There was a reduced version of the \fBtabs\fP utility
-in Unix 7th edition and in 3BSD (1979).
-The latter supported a single \*(``\-n\*('' option
-(to cause the first tab stop to be set on the left margin).
-That option is not documented by POSIX.
+The
+.B \-d
+(debug) and
+.B \-n
+(no-op) options are
+.I \%ncurses
+extensions not provided by other implementations.
+.SH HISTORY
+A
+.B 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 a \*(``\-n\*('' option to set the first tab stop at the
+left margin.
+That option is not specified by POSIX.
 .PP
-The PWB/Unix \fBtabs\fP utility, which was included in System III (1980),
-used built-in tables rather than the terminal database,
+The PWB/Unix
+.B tabs
+utility returned in System III (1980),
+and used built-in tables
 to support a half-dozen hardcopy terminal (printer) types.
-It also had built-in logic to support the left-margin,
+It also had logic to support setting the left margin,
 as well as a feature for copying the tab settings from a file.
 .PP
-Later versions of Unix, e.g., SVr4,
+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 kept the tables to support the printers.
-In an earlier development effort,
-the tab-stop initialization provided by \fBtset\fP (1982)
-and incorporated into \fBtput\fP uses the terminal database,
+but retained the tables to support the printers.
+By this time,
+System\ V
+.B tput
+had incorporated the tab stop initialization feature of BSD's
+.B tset
+from 1982,
+but employed the
+.I \%term\%info
+database to do so.
 .PP
-The \fB+m\fP option was documented
-in the Base Specifications Issue 5 (Unix98, 1997),
-and omitted in Issue 6 (Unix03, 2004) without documenting the rationale,
+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
-\fI\*(``and optionally adjusts the margin\*(''\fP remains,
+\*(``and optionally adjusts the margin\*('' remains,
 overlooked in the removal.
-The documented \fBtabs\fP utility in Issues 6 and later has no mechanism
-for setting margins.
-The \fB+m\fP option in this implementation differs from the feature
-in SVr4 by using terminal capabilities rather than built-in tables.
+The
+.B tabs
+utility documented in Issues 6 and later has no mechanism for setting
+margins.
+The
+.B +m
+option in
+.I \%ncurses
+\fB\%@TABS@\fP differs from the SVr4 feature by using terminal
+capabilities rather than built-in tables.
 .PP
-POSIX documents no limits on the number of tab stops.
-Documentation for other implementations states that there is a limit on the
-number of tab stops
-(e.g., 20 in PWB/Unix's \fBtabs\fP utility).
-While some terminals may not accept an arbitrary number
-of tab stops, this implementation will attempt to set tab stops up to the
-right margin of the screen, if the given list happens to be that long.
+POSIX documents no limit on the number of tab stops.
+Other implementations impose one;
+the limit is 20 in PWB/Unix's
+.B tabs
+utility.
+While some terminals may not accept an arbitrary number of tab stops,
+.I \%ncurses
+\fB\%@TABS@\fP attempts to set tab stops up to the right margin if the
+list thereof is sufficiently long.
 .PP
-The \fIRationale\fP section of the POSIX documentation goes into some
-detail about the ways the committee considered redesigning the
-\fBtabs\fP and \fBtput\fP utilities,
-without proposing an improved solution.
-It comments that
-.RS 5
+The \*(``Rationale\*('' section of the Issue 6
+.B tabs
+reference page
+.\" https://pubs.opengroup.org/onlinepubs/009604499/utilities/tabs.html
+details how the committee considered redesigning the
+.B tabs
+and
+.B tput
+utilities,
+without settling on an improved solution.
+It claims that
 .PP
-no known historical version of tabs supports the capability of setting
-arbitrary tab stops.
+.RS 4
+\*(``no known historical version of
+.I tabs
+supports the capability of setting arbitrary tab stops.\*(''
 .RE
 .PP
-However, the \fIExplicit Lists\fP described in this manual page
-were implemented in PWB/Unix.
-Those provide the capability of setting abitrary tab stops.
+The feature described in subsection \*(``Explicit Lists\*('' above was
+implemented in PWB/Unix,
+.\" see URL above
+and permitted the setting of abitrary tab stops nevertheless.
 .SH SEE ALSO
 \fB\%@INFOCMP@\fP(1M),
 \fB\%@TSET@\fP(1),