+ improve manual page description of TABSIZE.
+ add test/demo_tabs program.
./test/demo_menus.c
./test/demo_new_pair.c
./test/demo_panels.c
+./test/demo_tabs.c
./test/demo_termcap.c
./test/demo_terminfo.c
./test/ditto.c
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3272 2019/02/10 00:56:56 tom Exp $
+-- $Id: NEWS,v 1.3275 2019/02/16 23:45:57 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20190216
+ + improve manual page description of TABSIZE.
+ + add test/demo_tabs program.
+
20190209
+ add check in tic to provide warnings for mismatched number of
parameters in the documented user-capability extensions.
20000701 pre-release
+ change minor version to 1, i.e., ncurses 5.1
+ add experimental configure option --enable-colorfgbg to check for
- $COLORTERM variable as set by rxvt/aterm/Eterm.
+ $COLORFGBG variable as set by rxvt/aterm/Eterm.
+ add Eterm terminfo entry (Michael Jennings <mej@valinux.com>).
+ modify manlinks.sed to pick aliases from the SYNOPSIS section, and
several manpages so manlinks.sed can find aliases for creating
-5:0:10 6.1 20190209
+5:0:10 6.1 20190216
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1266 2019/02/09 15:12:47 tom Exp $
+# $Id: dist.mk,v 1.1267 2019/02/13 22:19:33 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 1
-NCURSES_PATCH = 20190209
+NCURSES_PATCH = 20190216
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addch.3x,v 1.46 2018/07/28 21:02:35 tom Exp @
+ * @Id: curs_addch.3x,v 1.47 2019/02/16 23:50:17 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
- The <STRONG>TABSIZE</STRONG> variable is implemented in some versions of curses, but is
- not part of X/Open curses.
+ The <STRONG>TABSIZE</STRONG> variable is implemented in SVr4 and other versions of
+ curses, but is not part of X/Open curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> for
+ more details).
If <EM>ch</EM> is a carriage return, the cursor is moved to the beginning of the
- current row of the window. This is true of other implementations, but
+ current row of the window. This is true of other implementations, but
is not documented.
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, <STRONG>curs_out-</STRONG>
<STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>.
- Comparable functions in the wide-character (ncursesw) library are
+ Comparable functions in the wide-character (ncursesw) library are
described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>.
<!--
****************************************************************************
- * Copyright (c) 2010-2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2018,2019 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_variables.3x,v 1.11 2018/07/28 22:37:10 tom Exp @
+ * @Id: curs_variables.3x,v 1.12 2019/02/16 23:43:23 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- ESCDELAY and TABSIZE are extensions, not provided in most other imple-
- mentations of curses.
+ <STRONG>TABSIZE</STRONG> is a feature of SVr4 curses which is not documented by X/Open
+ curses.
- ESCDELAY is an extension in AIX curses:
+ <STRONG>o</STRONG> In SVr4 curses, <STRONG>TABSIZE</STRONG> is initially set from the terminal descrip-
+ tion's <STRONG>init_tabs</STRONG> capability. After that, it can be altered by the
+ applications using SVr4 curses.
- <STRONG>o</STRONG> In AIX, the units for ESCDELAY are <EM>fifths</EM> of a millisecond.
+ SVr4 curses uses the current value of <STRONG>TABSIZE</STRONG> to compute the posi-
+ tion of tabstops for updating both the virtual screen with <STRONG>add-</STRONG>
+ <STRONG><A HREF="addch.3x.html">ch(3x)</A></STRONG> as well as the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>.
- <STRONG>o</STRONG> The default value for AIX's ESCDELAY is 0.1 seconds.
+ <STRONG>o</STRONG> This implementation uses the current value of <STRONG>TABSIZE</STRONG> only for up-
+ dating the virtual screen. It uses the terminal description's
+ <STRONG>init_tabs</STRONG> capability for computing tab stops on the physical
+ screen.
- <STRONG>o</STRONG> AIX also enforces a limit of 10,000 seconds for ESCDELAY; this im-
+ <STRONG>o</STRONG> Other implementations differ. For instance, NetBSD curses allows
+ <STRONG>TABSIZE</STRONG> to be set through an environment variable. This implemen-
+ tation does not.
+
+ <STRONG>ESCDELAY</STRONG> is an extension in AIX curses:
+
+ <STRONG>o</STRONG> In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of a millisecond.
+
+ <STRONG>o</STRONG> The default value for AIX's <STRONG>ESCDELAY</STRONG> is 0.1 seconds.
+
+ <STRONG>o</STRONG> AIX also enforces a limit of 10,000 seconds for <STRONG>ESCDELAY</STRONG>; this im-
plementation currently has no upper limit.
- This implementation has long used ESCDELAY with units of milliseconds,
- making it impossible to be completely compatible with AIX. Likewise,
- most users have either decided to override the value, or rely upon its
+ This implementation has long used <STRONG>ESCDELAY</STRONG> with units of milliseconds,
+ making it impossible to be completely compatible with AIX. Likewise,
+ most users have either decided to override the value, or rely upon its
default value.
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
https://invisible-island.net/ncurses/tctest.html
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed
descriptions of the entry points.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: ncurses.3x,v 1.140 2018/07/28 23:30:17 tom Exp @
+ * @Id: ncurses.3x,v 1.141 2019/02/16 15:07:20 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
method of updating character screens with reasonable optimization.
This implementation is "new curses" (ncurses) and is the approved
replacement for 4.4BSD classic curses, which has been discontinued.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
The <STRONG>ncurses</STRONG> library emulates the curses library of System V Release 4
UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI
use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
- use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<!--
****************************************************************************
- * Copyright (c) 2008-2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2018,2019 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tabs.1,v 1.19 2018/07/28 21:46:31 tom Exp @
+ * @Id: tabs.1,v 1.20 2019/02/16 23:56:38 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
ing the tabstops), and later <STRONG>cat</STRONG> the file to the screen, setting tab-
stops at that point.
+ These are hardware tabs, which cannot be queried rapidly by applica-
+ tions 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.
+
</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
<EM>Terminfo</EM> describes terminals by giving a set of capabilities which they
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences. This describes
- <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
<STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>ter-</STRONG>
<STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
<STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
<STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190121).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190216).
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addch.3x,v 1.46 2018/07/28 21:02:35 tom Exp $
+.\" $Id: curs_addch.3x,v 1.47 2019/02/16 23:50:17 tom Exp $
.TH curs_addch 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
call \fBwadd_wch\fP for characters which cannot be handled by \fBwaddch\fP.
.SS TABSIZE
.LP
-The \fBTABSIZE\fR variable is implemented in some versions of curses,
-but is not part of X/Open curses.
+The \fBTABSIZE\fR variable is implemented in SVr4 and other versions of curses,
+but is not part of X/Open curses
+(see \fBcurs_variables\fR(3X) for more details).
.LP
If \fIch\fR is a carriage return,
the cursor is moved to the beginning of the current row of the window.
.\"***************************************************************************
-.\" Copyright (c) 2010-2017,2018 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010-2018,2019 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_variables.3x,v 1.11 2018/07/28 22:37:10 tom Exp $
+.\" $Id: curs_variables.3x,v 1.12 2019/02/16 23:43:23 tom Exp $
.TH curs_variables 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
If \fBcurses\fP is configured to use separate curses/terminfo libraries,
most of these variables reside in the curses library.
.SH PORTABILITY
-ESCDELAY and TABSIZE are extensions,
-not provided in most other implementations of curses.
+\fBTABSIZE\fP is a feature of SVr4 curses
+which is not documented by X/Open curses.
+.bP
+In SVr4 curses, \fBTABSIZE\fP is initially set from the terminal description's
+\fBinit_tabs\fP capability.
+After that, it can be altered by the applications using SVr4 curses.
+.IP
+SVr4 curses uses the current value of \fBTABSIZE\fP to
+compute the position of tabstops for updating both
+the virtual screen with \fBaddch\fP(3X) as well as
+the physical screen with \fBmvcur\fP(3X).
+.bP
+This implementation uses the current value of \fBTABSIZE\fP only for
+updating the virtual screen.
+It uses the terminal description's \fBinit_tabs\fP capability for
+computing tab stops on the physical screen.
+.bP
+Other implementations differ.
+For instance, NetBSD curses allows \fBTABSIZE\fP to be set through
+an environment variable.
+This implementation does not.
.PP
-ESCDELAY is an extension in AIX curses:
+\fBESCDELAY\fP is an extension in AIX curses:
.bP
-In AIX, the units for ESCDELAY are \fIfifths\fP of a millisecond.
+In AIX, the units for \fBESCDELAY\fP are \fIfifths\fP of a millisecond.
.bP
-The default value for AIX's ESCDELAY is 0.1 seconds.
+The default value for AIX's \fBESCDELAY\fP is 0.1 seconds.
.bP
-AIX also enforces a limit of 10,000 seconds for ESCDELAY;
+AIX also enforces a limit of 10,000 seconds for \fBESCDELAY\fP;
this implementation currently has no upper limit.
.PP
-This implementation has long used ESCDELAY with units of milliseconds,
+This implementation has long used \fBESCDELAY\fP with units of milliseconds,
making it impossible to be completely compatible with AIX.
Likewise, most users have either decided to override the value,
or rely upon its default value.
-# $Id: manhtml.aliases,v 1.12 2017/04/22 14:07:02 tom Exp $
+# $Id: manhtml.aliases,v 1.13 2019/02/16 23:44:49 tom Exp $
#***************************************************************************
-# Copyright (c) 2013-2016,2017 Free Software Foundation, Inc. *
+# Copyright (c) 2013-2017,2019 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 *
keypad(3X) curs_inopts(3X)
longname(3X) curs_termattrs(3X)
meta(3X) curs_inopts(3X)
+mvcur(3X) curs_terminfo(3X)
newterm(3X) curs_initscr(3X)
refresh(3X) curs_refresh(3X)
reset_shell_mode(3X) curs_kernel(3X)
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: ncurses.3x,v 1.140 2018/07/28 23:30:17 tom Exp $
+.\" $Id: ncurses.3x,v 1.141 2019/02/16 15:07:20 tom Exp $
.hy 0
.TH ncurses 3X ""
.ie \n(.g .ds `` \(lq
use_env/\fBcurs_util\fR(3X)
use_extended_names/\fBcurs_extend\fR(3X)*
use_legacy_coding/\fBlegacy_coding\fR(3X)*
-use_tioctl/\fBcurs_util\fR(3X)
+use_tioctl/\fBcurs_util\fR(3X)*
vid_attr/\fBcurs_terminfo\fR(3X)
vid_puts/\fBcurs_terminfo\fR(3X)
vidattr/\fBcurs_terminfo\fR(3X)
.\"***************************************************************************
-.\" Copyright (c) 2008-2017,2018 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2018,2019 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tabs.1,v 1.19 2018/07/28 21:46:31 tom Exp $
+.\" $Id: tabs.1,v 1.20 2019/02/16 23:56:38 tom Exp $
.TH @TABS@ 1 ""
.ds n 5
.ie \n(.g .ds `` \(lq
You can redirect the standard output to a file (which prevents
\fB@TABS@\fR 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.
.SH OPTIONS
.SS General Options
.TP 5
/****************************************************************************
- * Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2019 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 *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_tracebits.c,v 1.26 2015/04/19 14:58:39 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.27 2019/02/16 22:12:08 tom Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
DATA(ONOCR),
DATA(ONLRET),
DATAX()
-#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET)
+#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET|OFLAGS_TABS)
}, cflags[] =
{
DATA(CLOCAL),
/****************************************************************************
- * Copyright (c) 2001-2016,2017 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2017,2019 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 *
#include <tic.h>
#include <ctype.h>
-MODULE_ID("$Id: visbuf.c,v 1.49 2017/10/21 23:34:20 tom Exp $")
+MODULE_ID("$Id: visbuf.c,v 1.50 2019/02/16 21:18:42 tom Exp $")
#define NUM_VISBUFS 4
} else if (c == '\b') {
*tp++ = '\\';
*tp++ = 'b';
+ } else if (c == '\t') {
+ *tp++ = '\\';
+ *tp++ = 't';
} else if (c == '\033') {
*tp++ = '\\';
*tp++ = 'e';
-ncurses6 (6.1+20190209) unstable; urgency=low
+ncurses6 (6.1+20190216) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Feb 2019 10:12:47 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 13 Feb 2019 17:19:33 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.1+20190209) unstable; urgency=low
+ncurses6 (6.1+20190216) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Feb 2019 10:12:47 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 13 Feb 2019 17:19:33 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.1+20190209) unstable; urgency=low
+ncurses6 (6.1+20190216) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Feb 2019 10:12:47 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 13 Feb 2019 17:19:33 -0500
ncurses6 (5.9-20120608) unstable; urgency=low
-; $Id: mingw-ncurses.nsi,v 1.313 2019/02/09 15:12:47 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.314 2019/02/13 22:19:33 tom Exp $\r
\r
; TODO add examples\r
; TODO bump ABI to 6\r
!define VERSION_MAJOR "6"\r
!define VERSION_MINOR "1"\r
!define VERSION_YYYY "2019"\r
-!define VERSION_MMDD "0209"\r
+!define VERSION_MMDD "0216"\r
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
\r
!define MY_ABI "5"\r
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.1
-Release: 20190209
+Release: 20190216
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.1
-Release: 20190209
+Release: 20190216
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.1
-Release: 20190209
+Release: 20190216
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
--- /dev/null
+/****************************************************************************
+ * Copyright (c) 2019 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. *
+ ****************************************************************************/
+
+/*
+ * Author: Thomas E. Dickey
+ *
+ * $Id: demo_tabs.c,v 1.2 2019/02/17 01:01:11 tom Exp $
+ *
+ * A simple demo of tabs in curses.
+ */
+#include "test.priv.h"
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: demo_tabs [options]",
+ "",
+ "Print a grid to test tab-stops with the curses interface",
+ "",
+ "Options:",
+ " -l COUNT total number of lines to show",
+ " -t NUM set TABSIZE variable to the given value",
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int tabstop;
+ int n, col, row, step;
+ int line_limit = -1;
+ int curses_stops = -1;
+
+ while ((n = getopt(argc, argv, "l:t:")) != -1) {
+ switch (n) {
+ case 'l':
+ line_limit = atoi(optarg);
+ break;
+ case 't':
+ curses_stops = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+
+ initscr();
+ noecho();
+ cbreak();
+ if (curses_stops > 0)
+ set_tabsize(curses_stops);
+ tabstop = tigetnum("it");
+ if (tabstop <= 0)
+ tabstop = 8;
+ for (row = 0; row < LINES; ++row) {
+ move(row, 0);
+ for (col = step = 0; col < COLS - 1; ++col) {
+ if (row == 0) {
+ chtype ch = '-';
+ if ((col % tabstop) == 0)
+ ch = '+';
+ addch(ch);
+ } else if (col + 1 < row) {
+ addch('*');
+ } else {
+ printw("%x", step);
+ col = (row + (tabstop * ++step));
+ col /= tabstop;
+ col *= tabstop;
+ col -= 1;
+ if ((col + tabstop) < COLS)
+ addch('\t');
+ refresh();
+ }
+ }
+ addch('\n');
+ if (line_limit > 0 && row >= line_limit)
+ break;
+ }
+ getch();
+ endwin();
+ ExitProgram(EXIT_SUCCESS);
+}
-# $Id: modules,v 1.69 2018/12/29 15:32:12 tom Exp $
+# $Id: modules,v 1.70 2019/02/16 19:35:47 tom Exp $
##############################################################################
-# Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 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"), #
demo_menus progs $(srcdir) $(HEADER_DEPS) ../include/menu.h
demo_new_pair progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
demo_panels progs $(srcdir) $(HEADER_DEPS) ../include/panel.h
+demo_tabs progs $(srcdir) $(HEADER_DEPS)
demo_termcap progs $(srcdir) $(HEADER_DEPS)
demo_terminfo progs $(srcdir) $(HEADER_DEPS)
ditto progs $(srcdir) $(HEADER_DEPS)
-# $Id: programs,v 1.43 2018/12/29 15:32:00 tom Exp $
+# $Id: programs,v 1.44 2019/02/16 21:38:16 tom Exp $
##############################################################################
-# Copyright (c) 2006-2017,2018 Free Software Foundation, Inc. #
+# Copyright (c) 2006-2018,2019 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"), #
demo_menus $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_menus
demo_new_pair $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_new_pair popup_msg
demo_panels $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_panels
+demo_tabs $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_tabs
demo_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_termcap
demo_terminfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_terminfo
ditto $(LDFLAGS_THREADS) $(LOCAL_LIBS) ditto
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: test.priv.h,v 1.177 2019/02/02 19:57:53 tom Exp $ */
+/* $Id: test.priv.h,v 1.178 2019/02/17 01:03:18 tom Exp $ */
#ifndef __TEST_PRIV_H
#define __TEST_PRIV_H 1
#define slk_clear() /* nothing */
#endif
+#if !NCURSES_EXT_FUNCS
+#define set_tabsize(n) TABSIZE = (n)
+#endif
+
#if HAVE_TPUTS_SP
#define USE_SP_FUNCS 1
#else