]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/tabs.1
ncurses 6.4 - patch 20231028
[ncurses.git] / man / tabs.1
index eb7e659746dd686ca39b1f491f22c0c83851de13..f2ce065f3e195b718e821c0c5b277e20fa0eb11d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2019,2020 Thomas E. Dickey                                *
+.\" Copyright 2018-2021,2023 Thomas E. Dickey                                *
 .\" Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tabs.1,v 1.28 2020/12/19 21:50:22 tom Exp $
-.TH @TABS@ 1 ""
-.ds n 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: tabs.1,v 1.48 2023/10/14 19:29:06 tom Exp $
+.TH @TABS@ 1 2023-10-14 "ncurses 6.4" "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
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.
+.ds n 5
 .SH NAME
-\fB@TABS@\fR \- set tabs on a terminal
+\fB\%@TABS@\fP \-
+set terminal tab stops
 .SH SYNOPSIS
-\fB@TABS@\fR [\fIoptions\fR]] \fI[tabstop-list]\fR
+\fB@TABS@\fP [\fIoptions\fP]] \fI[tabstop-list]\fP
 .SH DESCRIPTION
-.PP
 The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
-This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities.
+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.,
-.NS
+.PP
+.RS 4
+.EX
 stty tab0
-.NE
+.EE
+.RE
 .PP
-Like \fB@CLEAR@\fR(1), \fB@TABS@\fR writes to the standard output.
+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@\fR from actually changing the tabstops),
+\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
@@ -79,9 +76,12 @@ 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
-.NS
-tabs -8
-.NE
+.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
@@ -104,7 +104,7 @@ The second data line shows the actual tab-stops, marked with asterisks.
 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\fR
+\fB\-V\fP
 reports the version of ncurses which was used in this program, and exits.
 .PP
 The \fB@TABS@\fP program processes a single list of tab stops.
@@ -125,51 +125,103 @@ An explicit list can be defined after the options
 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,
-.NS
+.PP
+.RS 4
+.EX
 tabs 1,6,11,16,21
-.br
 tabs 1 6 11 16 21
-.NE
+.EE
+.RE
 .PP
 Use a \*(``+\*('' to treat a number
 as an increment relative to the previous value,
 e.g.,
-.NS
+.PP
+.RS 4
+.EX
 tabs 1,+5,+5,+5,+5
-.NE
+.EE
+.RE
 .PP
 which is equivalent to the 1,6,11,16,21 example.
 .SS Predefined Tab-Stops
-X/Open defines several predefined lists of tab stops.
+POSIX defines several predefined 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
-.SH PORTABILITY
+.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:
+.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.
+.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.
+.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.
 .PP
+When setting or resetting the left-margin,
+@TABS@ may 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
@@ -181,7 +233,7 @@ Very few of the entries in the terminal database provide the
 capability needed to support the feature.
 .bP
 There is no counterpart in X/Open Curses Issue 7 for this utility,
-unlike \fB@TPUT@(1)\fP.
+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.
@@ -195,17 +247,28 @@ That option is not documented 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,
-to support a half-dozen terminal types.
+to support a half-dozen hardcopy terminal (printer) types.
 It also had built-in logic to support the left-margin,
 as well as a feature for copying the tab settings from a file.
 .PP
 Later versions of Unix, e.g., SVr4,
 added support for the terminal database,
-but kept the tables, as a fallback.
+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,
 .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,
+though an introductory comment
+\fI\*(``and optionally adjusts the margin\*(''\fP 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.
+.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
@@ -229,10 +292,7 @@ However, the \fIExplicit Lists\fP described in this manual page
 were implemented in PWB/Unix.
 Those provide the capability of setting abitrary tab stops.
 .SH SEE ALSO
-\fB@INFOCMP@\fR(1M),
-\fB@TSET@\fR(1),
-\fBcurses\fR(3X),
-\fBterminfo\fR(\*n).
-.PP
-This describes \fBncurses\fR
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TSET@\fP(1),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(\*n)