xterm: Changes to 'upstream-unstable'
INSTALL | 71
MANIFEST | 3
Makefile.in | 4
NEWS | 149 +
VTPrsTbl.c | 12
aclocal.m4 | 107 +
button.c | 14
charproc.c | 251 ++-
charsets.c | 50
config.guess | 101 -
config.sub | 46
configure | 3884 +++++++++++++++++++++++++----------------------
configure.in | 87 -
ctlseqs.ms | 109 -
ctlseqs.txt | 268 +--
data.c | 11
data.h | 4
error.h | 30
fontutils.c | 414 ++++-
fontutils.h | 3
graphics_regis.c | 27
html.c | 38
linedata.c | 95 -
main.c | 328 +--
menu.c | 45
misc.c | 318 ++-
package/debian/changelog | 6
package/debian/copyright | 24
package/debian/rules | 3
package/debian/watch | 2
package/freebsd/Makefile | 8
package/xterm.spec | 9
print.c | 69
ptyx.h | 145 +
resize.man | 7
screen.c | 22
scrollbar.c | 34
svg.c | 41
termcap | 11
terminfo | 108 +
trace.c | 29
trace.h | 8
util.c | 99 -
version.h | 6
vttests/query-status.pl | 18
xcharmouse.h | 3
xstrings.c | 4
xterm.h | 38
xterm.log.html | 243 ++
xterm.man | 564 ++++--
xtermcfg.hin | 5
51 files changed, 4961 insertions(+), 3014 deletions(-)
New commits:
commit 3349eff7f9c4b029ffd0d46ed750d6391fe20a61
Author: Sven Joachim <svenjoac@gmx.de>
Date: Sun Dec 31 09:14:42 2017 +0100
Imported Upstream version 331
diff --git a/INSTALL b/INSTALL
index 188bac3..0a768b2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
--- $XTermId: INSTALL,v 1.163 2017/05/30 08:32:35 tom Exp $
+-- $XTermId: INSTALL,v 1.176 2017/12/25 12:48:26 tom Exp $
-------------------------------------------------------------------------------
-- Copyright 1997-2016,2017 by Thomas E. Dickey
--
@@ -49,6 +49,16 @@ the sense of the default behavior.
The options (in alphabetic order):
+ --disable-256-color disable 256-color support
+
+ Do not compile-in code that interprets SGR 38 and 48 for 256-colors.
+ If this feature is disabled, the 88-color feature will be used.
+
+ --disable-88-color disable 88-color support
+
+ Do not compile-in code that interprets SGR 38 and 48 for 88-colors.
+ The 256-color option overrides this.
+
--disable-16-color disable 16-color support
Do not compile-in code to recognize aixterm-style control sequences
@@ -137,6 +147,11 @@ The options (in alphabetic order):
Note: If desktop-utils is not found they will not be installed anyway.
+ --disable-direct-color disable direct color support
+
+ Do not compile-in code that interprets SGR 38 and 48 for direct colors.
+ This feature extends the 256-color feature.
+
--disable-doublechars disable support for double-size chars
Do not compile-in code that supports font-manipulation needed to
@@ -156,7 +171,7 @@ The options (in alphabetic order):
--disable-freetype disable freetype library-support
- Do not use freetype libraries if they are found. Normally they will
+ Do not use freetype libraries if they are found. Normally they will
be used automatically.
--disable-full-tgetent disable check for termcap library
@@ -285,6 +300,10 @@ The options (in alphabetic order):
Do not compile-in code that suppresses redundant updates to the
titlebar when the text has not changed.
+ --disable-screen-dumps disable XHTML and SVG screen dumps
+
+ Do not compile-in code that provides XHTML and SVG screen dumps.
+
--disable-selection-ops disable selection operations
Do not compile-in code to support the actions which allow users
@@ -345,7 +364,7 @@ The options (in alphabetic order):
ISO 6429 defines a few more which historically have found little use.
Some people find these amusing.
- This is normally enabled.
+ This is normally enabled. The direct-colors feature relies upon it.
--disable-wide-chars disable wide-character support
@@ -365,14 +384,6 @@ The options (in alphabetic order):
This uses less memory, but is less complete. However, most languages
are covered by the 16-bit encoding.
- --enable-256-color enable 256-color support
-
- Compile-in code that interprets SGR 38 and 48 for 256-colors.
-
- --enable-88-color enable 88-color support
-
- Compile-in code that interprets SGR 38 and 48 for 88-colors.
-
--enable-alt-sends-esc set default altSendsEscape resource (default: no)
This sets the default resource value, which is shown in the manpage.
@@ -522,10 +533,6 @@ The options (in alphabetic order):
Compile-in code to support experimental sixel-graphics
- --enable-sun-fkeys enable support for Sun-style function keys
-
- Compile-in code to support Sun-style function keys.
-
--enable-toolbar enable pulldown menus on toolbar
Compile-in code that builds a toolbar with pulldown menus. The
@@ -613,9 +620,10 @@ The options (in alphabetic order):
Check for and link with dbmalloc.
- --with-desktop-category=XXX one or more desktop catgories or auto
+ --with-desktop-category=XXX one or more desktop categories or auto
This is a list of names. The configure script maps blanks and commas
- to semicolons (";") which are used by the desktop utils as a separator.
+ to semicolons (";") which are used by the desktop utilities as a
+ separator.
The default value "auto" tells the configure script to look
at existing ".desktop" files for xterm and common terminal
@@ -625,7 +633,7 @@ The options (in alphabetic order):
--with-freetype-config configure script to use for FreeType
- Use a specific option value to tell the configure script to try
+ Use a specific option value to tell the configure script to try
just one of the variations:
"pkg*", e.g., pkg-config or pkgconfig uses whatever pkg-config
@@ -703,14 +711,18 @@ The options (in alphabetic order):
--with-man2html[=XXX] use XXX rather than groff
Specify an alternative program to use for converting manpages and
- control sequences document to html. If the option is given, its
- default value is "man2html", otherwise it is "groff" with groff's
- special options. The "man2html" script reads formatted nroff output
- from its standard input, and writes html to its standard output. Other
- input/output conventions are not currently supported.
+ control sequences document to html. The default value for the option
+ is "man2html". If the "man2html" script is not found, then "groff" is
+ used with groff's special options.
+
+ The "man2html" script reads formatted nroff output from its standard
+ input, and writes html to its standard output. Other input/output
+ conventions are not currently supported.
See
http://invisible-island.net/scripts
+ http://invisible-island.net/scripts/man2html.html
+
for an up-to-date version of "man2html".
--with-neXtaw link with neXT Athena library
@@ -733,9 +745,18 @@ The options (in alphabetic order):
directed to other variations (such as nxterm) which do not
support the background-color erase capability.
+ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)
+
+ Specify directory in which to install ".xpm" files.
+
--with-pcre use PCRE for regular-expressions
- If regular expressions are not disable (--disable-regex), use PCRE
+ If regular expressions are not disabled (--disable-regex), use PCRE
+ rather than the POSIX regular expressions.
+
+ --with-pcre2 use PCRE2 for regular-expressions
+
+ If regular expressions are not disabled (--disable-regex), use PCRE2
rather than the POSIX regular expressions.
--with-pkg-config{=path} enable/disable use of pkg-config
@@ -794,7 +815,7 @@ The options (in alphabetic order):
--with-xpm=DIR use Xpm library for colored icon, may specify path
- Use Xpm library to show colored icon in window decoration, e.g.,
+ Use Xpm library to show colored icon in window decoration, e.g.,
title area.
Use --without-xpm to suppress this feature.
diff --git a/MANIFEST b/MANIFEST
index d4d4430..cd7b264 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-330, version xterm-330
+MANIFEST for xterm-331, version xterm-331
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
@@ -202,3 +202,4 @@ vttests/resize.pl translated resize.sh to perl since it is easy to
vttests/resize.sh script to demonstrate resizing
vttests/tcapquery.pl script to test tcap-query option
vttests/title.sh test-script to show title of xterm in action
+vttests/true-color.pl test script for true color
diff --git a/Makefile.in b/Makefile.in
index 5b4f67f..3341d45 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-## $XTermId: Makefile.in,v 1.239 2017/01/14 00:15:11 tom Exp $
+## $XTermId: Makefile.in,v 1.240 2017/11/06 00:21:44 tom Exp $
# -----------------------------------------------------------------------------
# this file is part of xterm
#
@@ -513,7 +513,7 @@ uninstall-full ::
@desktop_utils@ done'
################################################################################
mostlyclean :
- -$(RM) *$o *.[is] XtermLog.* .pure core *~ *.bak *.BAK *.out *.tmp
+ -$(RM) *$o *.[is] XTerm[1-9]*.* Xterm.log.* XtermLog.* .pure core *~ *.bak *.BAK *.out *.tmp
clean : mostlyclean
-$(RM) $(PROGRAMS) builtin_icons.h *.cin *parse.hin
diff --git a/NEWS b/NEWS
index 7022694..d83323b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,38 +1,121 @@
The NEWS file was generated from xterm.log.html, which serves as the changelog
for xterm.
--------------------------------------------------------------------------------
- Patch #330 - 2017/06/20
+ Patch #331 - 2017/12/30
- * updates for ReGIS (Ross Combs):
- + remove redundant text command error check which broke T(B) and
- T(E).
- + retain the loading alphabet number across multiple “L”
- commands.
- + add S(T) delay handler.
- + fix some color handling error messages.
- + add stubbed-out macrograph handling.
- + use fragment_remaining() and fragment_consumed() instead of
- manually checking position / length in various places.
- + rename some local variables in string / extent / option
- parsing
- + wrap some long lines.
- + move macrograph command handling out of the top-level.
- * add a summary of the italic fonts loaded to -report-fonts option.
- * modify the font-lookup for italics to allow for “-i-” if no match
- is found with slant “-o-” (prompted by patch by Ben Wong).
- * change default values for mkSamplePass and mkSampleSize to reflect
- generally-improved locale support in various operating systems
- (FreeBSD #219800).
- * modify wcwidth.c to return -1 for non-Unicode values, and adjust a
- couple of blocks to better match assumptions about ambiguous-width
- characters in other implementations. Also modify wcwidth.c to
- support configurable soft-hyphen, so there is no drawback to using
- this version rather than a system wcwidth.
- * amend change made in patch #328 for cursor-visibility to handle
- case where an application is updating the reverse-video state
- (FreeBSD #219800).
- * update tables of combining and ambiguous-width characters in
- wcwidth.c based on Unicode 10.0.0.
- * build-fix for --enable-sixel-graphics without
- --enable-regis-graphics (reports by Sven Joachim, FreeBSD #219945).
+ * add workaround for improper grayscale adjustments made in FreeType
+ library, exposed by changes to rounding in 2.8.1, which shows up as
+ a gap in line-drawing characters (Debian #880407).
+ * improve a special case where a non-Unicode font's line-drawing
+ characters were not used, when specifying it via the utf8Fonts
+ resource, e.g.,
+
+ -fs 15 \
+ -xrm '*VT100.font:12x24' \
+ -xrm '*VT100.boldFont:12x24' \
+ -xrm '*VT100.utf8Fonts.font: 12x24' \
+ -xrm '*VT100.utf8Fonts.boldFont: 12x24' \
+
+ * replace constant 10msec delay for next X event with new resource
+ nextEventDelay, and reduce that to 1msec to accommodate faster
+ machines than used when -hold was implemented in 1999 (Debian
+ #877628).
+ * add scroll-to action, which simplifies binding a key to scroll to
+ the beginning or end of the saved-lines (Debian #880120).
+ * add building blocks for alternate screen and/or title-stack
+ features in the terminfo file.
+ * improve calculations for cell-data size.
+ * change configure script to enable XHTML/SVG screen dumps by
+ default.
+ * change configure script to enable 256-colors by default.
+ * update config.guess, config.sub
+ * change configure script option for --with-man2html to use improved
+ script by default.
+ * add case for private mode 1044 in DECRQM, to report the
+ keepClipboard resource setting and corresponding menu entry.
+ * fix an inconsistency between private mode 12 (the AT&T 610 cursor
+ blink) and DECSCUSR: the former relied on having the cursorBlink
+ resource set initially to enable the escape sequence, while the
+ latter does not.
+ * add private modes 13 and 14, as well as resource cursorBlinkXOR to
+ allow better control over the cursor-blinking state (discussion
+ with Bram Moolenaar).
+ * modify the html and svg screen dumps to support direct color
+ * modify media copy (screen-printing) to support the same SGR codes
+ as DECRQSS, including 88/256 indexed color as well as direct color.
+ * improve options-parsing for query-status.pl script.
+ * modify parsing of SGR direct-color control making color space
+ identitier optional. The corresponding DECRQSS reply always returns
+ an empty (default) field for the identifier.
+ * add wide-attributes to DECRQSS reply for SGR.
+ * add private mode 1046 to help with scripting applications.
+ * correct expression used for readline-flags in DECRQM; to test the
+ current flag rather than information stacked within the same
+ variable.
+ * correct typo in ctlseqs.ms reference to ISO-8613-6 (patch by Mike
+ Frysinger).
+ * fix lintian warning for test-package.
+ * fix typo in DECRQSS for SGR 48, which printed the foreground value
+ for colors past 15. Also use colon delimiter for codes 38/48 in
+ response (report by Paul LeoNerd Evans).
+ * improve workaround for Debian #542434 by using the font's maximum
+ width when no ISO-8859-1 glyphs are provided (Debian #879936).
+ * work around a special case of Xft's mismanagement of its cached
+ data by adding a check before the -report-fonts option to ensure
+ that it does not use an XftPattern which may have been freed during
+ a call to XftFontOpenPattern.
+ * improve manual page description of regex option for onXClicks
+ resources (report by Lukas Mai).
+ * add directColor resource.
+ * additional manpage macro cleanup (Brandon Robinson, Debian
+ #880551).
+ * add optional support for direct-colors (adapted from patch by
+ anonymous “Nibby Nebbulous”).
+ * improve legacy/NRC character set mapping (patch by Thomas Wolff):
+ + enable alternate NRC set designators for French and French
+ Canadian, ‘9’ and ‘f’ respectively, as documented in ctlseqs.
+ (‘9’ is documented for VT510, ‘f’ is a Kermit feature).
+ + correct the Unicode value in the DEC Technical table to show
+ capital delta.
+ + referring to
+
+ http://vt100.net/docs/vt220-rm/table2-3b.html
+ http://vt100.net/docs/vt320-uu/appendixe.html
+ add entries for the DEC Supplemental Graphics table to display
+ 0x28/0xa8 as ¤ and 0x5d/0xdd as Ÿ.
+ + referring to
+
+ http://www.vt100.net/charsets/technical.html
+ alter the Unicode values used for 0x2b through 0x2c to use
+ curly braces to work with the “middle” parts displayed with
+ 0x2f and 0x30.
+ + modify the VT220 “Supplemental” table, giving a hint that it
+ was probably meant to be “Supplemental Graphics” and is the
+ same as VT320's table.
+ * quiet a few font-warnings when a derived fontname cannot be opened,
+ overlooked in refactoring of font resources in patch #328
+ (initially reported on Cygwin mailing list, with followup).
+ * correct error response for DECRQSS broken in cleanup of Coverity
+ reports in patch #288 (reports by Bram Moolenaar and IWAMOTO
+ Kouichi).
+ * improve DECRPM responses by returning mode not recognized for modes
+ which may not be settable due to the selected decTerminalID
+ resource (report by IWAMOTO Kouichi).
+ * correct logic for print-immediate action, and enable corresponding
+ menu entry (patch by Lauri Tirkkonen).
+ * add configure option --with-pcre2 (patch by David Michael).
+ * fix a misspelled subsection title in ctlseqs.ms and add a note
+ regarding blink which was rendered as bold in X11R6. Blinking text
+ was implemented in Patch #60.
+ * fix typos in xterm.man (patches by Sven Joachim, Larry Hynes).
+ * fix typography in xterm.man (patch by Bjarni Ingi Gislason, Debian
+ #869248).
+ * fix typo in INSTALL (Larry Hynes).
+ * add xterm-direct terminal description based on changes introduced
+ in patch #277, and relying upon ncurses RGB extension.
+ * modify xterm-new terminal description to use ECMA-48 REP,
+ reflecting its use in xterm since patch #32 (1996).
+ * clarify comment in ctlseqs.ms regarding blink: it has been part of
+ xterm since patch #60 (1998).
+ * update ftp URLs in documentation.
diff --git a/VTPrsTbl.c b/VTPrsTbl.c
index f9868c4..3368320 100644
--- a/VTPrsTbl.c
+++ b/VTPrsTbl.c
@@ -1,7 +1,7 @@
-/* $XTermId: VTPrsTbl.c,v 1.81 2015/02/16 01:51:51 tom Exp $ */
+/* $XTermId: VTPrsTbl.c,v 1.82 2017/11/07 23:03:12 Thomas.Wolff Exp $ */
/*
- * Copyright 1999-2014,2015 by Thomas E. Dickey
+ * Copyright 1999-2015,2017 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -6000,7 +6000,7 @@ CASE_GSETS,
CASE_GSETS,
/* 8 9 : ; */
CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_GSETS,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* < = > ? */
@@ -6056,7 +6056,7 @@ CASE_GROUND_STATE,
/* d e f g */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_GSETS,
CASE_GROUND_STATE,
/* h i j k */
CASE_GROUND_STATE,
@@ -6160,7 +6160,7 @@ CASE_GSETS,
CASE_GSETS,
/* cedilla onesuperior masculine guillemotright */
CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_GSETS,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* onequarter onehalf threequarters questiondown */
@@ -6216,7 +6216,7 @@ CASE_GROUND_STATE,
/* adiaeresis aring ae ccedilla */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
-CASE_GROUND_STATE,
+CASE_GSETS,
CASE_GROUND_STATE,
/* egrave eacute ecircumflex ediaeresis */
CASE_GROUND_STATE,
diff --git a/aclocal.m4 b/aclocal.m4
index dc963b0..85d8fbe 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-dnl $XTermId: aclocal.m4,v 1.413 2017/05/02 23:45:28 tom Exp $
+dnl $XTermId: aclocal.m4,v 1.417 2017/12/24 22:48:59 tom Exp $
dnl
dnl ---------------------------------------------------------------------------
dnl
@@ -264,7 +264,7 @@ ifelse([$3],,[ :]dnl
])dnl
])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 7 updated: 2017/02/25 18:57:40
+dnl CF_CC_ENV_FLAGS version: 8 updated: 2017/09/23 08:50:24
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
dnl into CC. This will not help with broken scripts that wrap the compiler
@@ -288,7 +288,7 @@ case "$CC" in
AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
- cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr([$]0,1+length(prog))); }'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
CC="$cf_prog"
for cf_arg in $cf_flags
do
@@ -3597,9 +3597,13 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_MAN2HTML version: 5 updated: 2015/08/20 04:51:36
+dnl CF_WITH_MAN2HTML version: 6 updated: 2017/12/24 17:45:28
dnl ----------------
-dnl Check for man2html and groff. Optionally prefer man2html over groff.
+dnl Check for man2html and groff. Prefer man2html over groff, but use groff
+dnl as a fallback. See
+dnl
+dnl http://invisible-island.net/scripts/man2html.html
+dnl
dnl Generate a shell script which hides the differences between the two.
dnl
dnl We name that "man2html.tmp".
@@ -3608,11 +3612,35 @@ dnl The shell script can be removed later, e.g., using "make distclean".
AC_DEFUN([CF_WITH_MAN2HTML],[
AC_REQUIRE([CF_PROG_GROFF])
+case "x${with_man2html}" in
+(xno)
+ cf_man2html=no
+ ;;
+(x|xyes)
+ AC_PATH_PROG(cf_man2html,man2html,no)
+ case "x$cf_man2html" in
+ (x/*)
+ AC_MSG_CHECKING(for the modified Earl Hood script)
+ if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null )
+ then
+ cf_man2html_ok=yes
+ else
+ cf_man2html=no
+ cf_man2html_ok=no
+ fi
+ AC_MSG_RESULT($cf_man2html_ok)
+ ;;
+ (*)
+ cf_man2html=no
+ ;;
+ esac
+esac
+
AC_MSG_CHECKING(for program to convert manpage to html)
AC_ARG_WITH(man2html,
[ --with-man2html=XXX use XXX rather than groff],
[cf_man2html=$withval],
- [cf_man2html=$GROFF_PATH])
+ [cf_man2html=$cf_man2html])
cf_with_groff=no
@@ -3732,7 +3760,7 @@ AC_SUBST(MAN2HTML_PATH)
AC_SUBST(MAN2HTML_TEMP)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PCRE version: 11 updated: 2015/04/12 15:39:00
+dnl CF_WITH_PCRE version: 12 updated: 2017/07/29 22:57:34
dnl ------------
dnl Add PCRE (Perl-compatible regular expressions) to the build if it is
dnl available and the user requests it. Assume the application will otherwise
@@ -3754,21 +3782,58 @@ if test "$with_pcre" != no ; then
AC_CHECK_LIB(pcre,pcre_compile,,
AC_MSG_ERROR(Cannot find PCRE library))])
- AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library])
+ AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library])
- case $LIBS in
- (*pcreposix*)
- ;;
- (*)
- AC_CHECK_LIB(pcreposix,pcreposix_regcomp,
- [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h])
- CF_ADD_LIB(pcreposix)],
- [AC_CHECK_LIB(pcreposix,regcomp,[
- AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h])
- CF_ADD_LIB(pcreposix)],
- AC_MSG_ERROR(Cannot find PCRE POSIX library)]))
- ;;
- esac
+ case $LIBS in
+ (*pcreposix*)
+ ;;
+ (*)
+ AC_CHECK_LIB(pcreposix,pcreposix_regcomp,
+ [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h])
+ CF_ADD_LIB(pcreposix)],
+ [AC_CHECK_LIB(pcreposix,regcomp,[
+ AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h])
+ CF_ADD_LIB(pcreposix)],
+ AC_MSG_ERROR(Cannot find PCRE POSIX library)]))
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PCRE2 version: 1 updated: 2017/07/29 22:57:34
+dnl -------------
+dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
+dnl available and the user requests it. Assume the application will otherwise
+dnl use the POSIX interface.
+dnl
+dnl TODO allow $withval to specify package location
+AC_DEFUN([CF_WITH_PCRE2],
+[
+AC_REQUIRE([CF_PKG_CONFIG])
+
+AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions)
+AC_ARG_WITH(pcre2,
+ [ --with-pcre2 use PCRE2 for regular-expressions])
+test -z "$with_pcre2" && with_pcre2=no
+AC_MSG_RESULT($with_pcre2)
+
+if test "$with_pcre2" != no ; then
+ CF_TRY_PKG_CONFIG(libpcre2,,[
+ AC_CHECK_LIB(pcre2-8,pcre2_compile_8,,
+ AC_MSG_ERROR(Cannot find PCRE2 library))])
+
+ AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
+
+ case $LIBS in
+ (*pcre2-posix*)
+ ;;
+ (*)
+ AC_CHECK_LIB(pcre2-posix,regcomp,[
+ AC_DEFINE(HAVE_PCRE2POSIX_H,1,[Define to 1 if we should include pcre2posix.h])
+ CF_ADD_LIB(pcre2-posix)],
+ AC_MSG_ERROR(Cannot find PCRE2 POSIX library))
+ ;;
+ esac
fi
])dnl
dnl ---------------------------------------------------------------------------
diff --git a/button.c b/button.c
index 43ef7b0..ac1f742 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.524 2017/05/30 08:58:29 tom Exp $ */
+/* $XTermId: button.c,v 1.526 2017/12/01 00:47:35 tom Exp $ */
/*
* Copyright 1999-2016,2017 by Thomas E. Dickey
@@ -79,6 +79,9 @@ button.c Handles button events in the terminal emulator.
#include <xstrings.h>
#if OPT_SELECT_REGEX
+#ifdef HAVE_PCRE2POSIX_H
+#include <pcre2posix.h>
+#else
#ifdef HAVE_PCREPOSIX_H
#include <pcreposix.h>
#else /* POSIX regex.h */
@@ -86,6 +89,7 @@ button.c Handles button events in the terminal emulator.
#include <regex.h>
#endif
#endif
+#endif
#if OPT_WIDE_CHARS
#include <ctype.h>
@@ -5142,7 +5146,7 @@ formatVideoAttrs(XtermWidget xw, char *buffer, CELL *cell)
}
#if OPT_ISO_COLORS
if (attribs & FG_COLOR) {
- unsigned fg = extract_fg(xw, ld->color[cell->col], attribs);
+ Pixel fg = extract_fg(xw, ld->color[cell->col], attribs);
if (fg < 8) {
fg += 30;
} else if (fg < 16) {
@@ -5151,11 +5155,11 @@ formatVideoAttrs(XtermWidget xw, char *buffer, CELL *cell)
buffer += sprintf(buffer, "%s38;5", delim);
delim = ";";
}
- buffer += sprintf(buffer, "%s%u", delim, fg);
+ buffer += sprintf(buffer, "%s%lu", delim, fg);
delim = ";";
}
if (attribs & BG_COLOR) {
- unsigned bg = extract_bg(xw, ld->color[cell->col], attribs);
+ Pixel bg = extract_bg(xw, ld->color[cell->col], attribs);
if (bg < 8) {
bg += 40;
} else if (bg < 16) {
@@ -5164,7 +5168,7 @@ formatVideoAttrs(XtermWidget xw, char *buffer, CELL *cell)
buffer += sprintf(buffer, "%s48;5", delim);
delim = ";";
}
- (void) sprintf(buffer, "%s%u", delim, bg);
+ (void) sprintf(buffer, "%s%lu", delim, bg);
}
#endif
}
diff --git a/charproc.c b/charproc.c
index 31cd8bc..91c10b7 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1492 2017/06/19 08:34:54 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1517 2017/12/28 18:43:58 tom Exp $ */
/*
* Copyright 1999-2016,2017 by Thomas E. Dickey
@@ -168,12 +168,14 @@ static void restoremodes(XtermWidget /* xw */ );
static void savemodes(XtermWidget /* xw */ );
static void window_ops(XtermWidget /* xw */ );
-#define DoStartBlinking(s) ((s)->cursor_blink ^ (s)->cursor_blink_esc)
-
#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-#define UpdateCursorBlink(screen) SetCursorBlink(screen, screen->cursor_blink)
+#define SettableCursorBlink(screen) \
+ (((screen)->cursor_blink != cbAlways) && \
+ ((screen)->cursor_blink != cbNever))
+#define UpdateCursorBlink(screen) \
+ SetCursorBlink(screen, screen->cursor_blink)
static void SetCursorBlink(TScreen * /* screen */ ,
- Bool /* enable */ );
+ BlinkOps /* enable */ );
static void HandleBlinking(XtPointer /* closure */ ,
XtIntervalId * /* id */ );
static void StartBlinking(TScreen * /* screen */ );
@@ -260,6 +262,7 @@ static XtActionsRec actionsList[] = {
{ "redraw", HandleRedraw },
{ "scroll-back", HandleScrollBack },
{ "scroll-forw", HandleScrollForward },
+ { "scroll-to", HandleScrollTo },
{ "secure", HandleSecure },
{ "select-cursor-end", HandleKeyboardSelectEnd },
{ "select-cursor-extend", HandleKeyboardSelectExtend },
@@ -491,6 +494,7 @@ static XtResource xterm_resources[] =
Ires(XtNprinterControlMode, XtCPrinterControlMode,
SPS.printer_controlmode, 0),
Ires(XtNtitleModes, XtCTitleModes, screen.title_modes, DEF_TITLE_MODES),
+ Ires(XtNnextEventDelay, XtCNextEventDelay, screen.nextEventDelay, 1),
Ires(XtNvisualBellDelay, XtCVisualBellDelay, screen.visualBellDelay, 100),
Ires(XtNsaveLines, XtCSaveLines, screen.savelines, SAVELINES),
Ires(XtNscrollBarBorder, XtCScrollBarBorder, screen.scrollBarBorder, 1),
@@ -556,7 +560,8 @@ static XtResource xterm_resources[] =
#endif /* NO_ACTIVE_ICON */
#if OPT_BLINK_CURS
- Bres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink, False),
+ Bres(XtNcursorBlinkXOR, XtCCursorBlinkXOR, screen.cursor_blink_xor, True),
+ Sres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink_s, "false"),
#endif
Bres(XtNcursorUnderLine, XtCCursorUnderLine, screen.cursor_underline, False),
@@ -626,6 +631,9 @@ static XtResource xterm_resources[] =
#if OPT_WIDE_ATTRS
Bres(XtNcolorITMode, XtCColorAttrMode, screen.colorITMode, False),
#endif
+#if OPT_DIRECT_COLOR
+ Bres(XtNdirectColor, XtCDirectColor, screen.direct_color, True),
+#endif
COLOR_RES("0", screen.Acolors[COLOR_0], DFT_COLOR("black")),
COLOR_RES("1", screen.Acolors[COLOR_1], DFT_COLOR("red3")),
@@ -889,6 +897,7 @@ xtermAddInput(Widget w)
{ "string", HandleStringEvent },
{ "scroll-back", HandleScrollBack },
{ "scroll-forw", HandleScrollForward },
+ { "scroll-to", HandleScrollTo },
{ "select-cursor-end", HandleKeyboardSelectEnd },
{ "select-cursor-extend", HandleKeyboardSelectExtend },
{ "select-cursor-start", HandleKeyboardSelectStart },
@@ -990,7 +999,7 @@ SGR_Foreground(XtermWidget xw, int color)
} else {
UIntClr(xw->flags, FG_COLOR);
}
- fg = getXtermForeground(xw, xw->flags, color);
+ fg = getXtermFG(xw, xw->flags, color);
xw->cur_foreground = color;
setCgsFore(xw, WhichVWin(screen), gcNorm, fg);
@@ -1035,7 +1044,7 @@ SGR_Background(XtermWidget xw, int color)
} else {
UIntClr(xw->flags, BG_COLOR);
}
- bg = getXtermBackground(xw, xw->flags, color);
+ bg = getXtermBG(xw, xw->flags, color);
xw->cur_background = color;
setCgsBack(xw, WhichVWin(screen), gcNorm, bg);
@@ -1065,7 +1074,7 @@ setExtendedFG(XtermWidget xw)
*/
#if OPT_PC_COLORS /* XXXJTL should be settable at runtime (resource or OSC?) */
if (TScreenOf(xw)->boldColors
- && (!xw->sgr_extended)
+ && (!hasDirectFG(xw->flags))
&& (fg >= 0)
&& (fg < 8)
&& (xw->flags & BOLD))
@@ -1096,7 +1105,7 @@ static void
reset_SGR_Foreground(XtermWidget xw)
{
xw->sgr_foreground = -1;
- xw->sgr_extended = False;
+ clrDirectFG(xw->flags);
setExtendedFG(xw);
}
@@ -1104,6 +1113,7 @@ static void
reset_SGR_Background(XtermWidget xw)
{
xw->sgr_background = -1;
+ clrDirectBG(xw->flags);
setExtendedBG(xw);
}
@@ -1657,7 +1667,7 @@ param_has_subparams(int item)
if (parms.has_subparams) {
int n = subparam_index(item, 0);
if (n >= 0 && parms.is_sub[n]) {
- while (n++ < nparam && parms.is_sub[n - 1] < parms.is_sub[n]) {
+ while (++n < nparam && parms.is_sub[n - 1] < parms.is_sub[n]) {
result++;
}
}
@@ -1666,7 +1676,7 @@ param_has_subparams(int item)
return result;
}
-#if OPT_256_COLORS || OPT_88_COLORS || OPT_ISO_COLORS
+#if OPT_DIRECT_COLOR || OPT_256_COLORS || OPT_88_COLORS || OPT_ISO_COLORS
/*
* Given an index into the parameter array, return the corresponding parameter
* number (starting from zero).
@@ -1731,13 +1741,28 @@ get_subparam(int p, int s)
* This function accepts either format (per request by Paul Leonerd Evans).
* It also accepts
* CSI 38 : 5 : 1 m
- * according to Lars' original assumption.
+ * according to Lars' original assumption. While implementing that, I added
+ * support for Konsole's interpretation of "CSI 38 : 2" as a 24-bit RGB value.
+ * ISO-8613-6 documents that as "direct color".
*
- * By the way - all of the parameters are decimal integers.
+ * At the time in 2012, no one noticed (or commented) regarding ISO-8613-6's
+ * quirk in the description of direct color: it mentions a color space
+ * identifier parameter which should follow the "2" (as parameter 1). In the
+ * same section, ISO-8613-6 mentions a parameter 6 which can be ignored, as
+ * well as parameters 7 and 8. Like parameter 1, parameters 7 and 8 are not
+ * defined clearly in the standard, and a close reading indicates they are
+ * optional, saying they "may be used". This implementation ignores parameters
+ * 6 (and above), and provides for the color space identifier by checking the
+ * number of parameters:
+ * 3 after "2" (no color space identifier)
+ * 4 or more after "2" (color space identifier)
+ *
+ * By the way - all of the parameters are decimal integers, and missing
+ * parameters represent a default value. ISO-8613-6 is clear about that.
*/
#define extended_colors_limit(n) ((n) == 5 ? 1 : ((n) == 2 ? 3 : 0))
static Boolean
-parse_extended_colors(XtermWidget xw, int *colorp, int *itemp)
+parse_extended_colors(XtermWidget xw, int *colorp, int *itemp, Boolean *extended)
{
Boolean result = False;
int item = *itemp;
@@ -1761,7 +1786,7 @@ parse_extended_colors(XtermWidget xw, int *colorp, int *itemp)
need = extended_colors_limit(code);
next = item + have;
for (n = 0; n < need && n < 3; ++n) {
- values[n] = get_subparam(base, 2 + n);
+ values[n] = get_subparam(base, 2 + n + (have > 4));
}
} else if (++item < nparam) {
++base;
@@ -1772,7 +1797,7 @@ parse_extended_colors(XtermWidget xw, int *colorp, int *itemp)
need = extended_colors_limit(code);
next = base + have;
for (n = 0; n < need && n < 3; ++n) {
- values[n] = get_subparam(base, 1 + n);
+ values[n] = get_subparam(base, 1 + n + (have > 3));
}
} else {
/* accept CSI 38 ; 5 ; 1 m */
@@ -1787,13 +1812,24 @@ parse_extended_colors(XtermWidget xw, int *colorp, int *itemp)
}
item = next;
+ *extended = False;
switch (code) {
case 2:
/* direct color in rgb space */
if ((values[0] >= 0 && values[0] < 256) &&
(values[1] >= 0 && values[1] < 256) &&
(values[2] >= 0 && values[2] < 256)) {
- *colorp = xtermClosestColor(xw, values[0], values[1], values[2]);
+#if OPT_DIRECT_COLOR
+ if (TScreenOf(xw)->direct_color && xw->has_rgb) {
+ *colorp = getDirectColor(xw, values[0], values[1], values[2]);
+ result = True;
+ *extended = True;
+ } else
+#endif
+ {
+ *colorp = xtermClosestColor(xw, values[0], values[1], values[2]);
+ result = okIndexedColor(*colorp);
+ }
} else {
*colorp = -1;
}
@@ -1801,13 +1837,13 @@ parse_extended_colors(XtermWidget xw, int *colorp, int *itemp)
case 5:
/* indexed color */
*colorp = values[0];
+ result = okIndexedColor(*colorp);
break;
default:
*colorp = -1;
break;
}
- result = (*colorp >= 0 && *colorp < NUM_ANSI_COLORS);
TRACE(("...resulting color %d/%d %s\n",
*colorp, NUM_ANSI_COLORS,
result ? "OK" : "ERR"));
@@ -1929,6 +1965,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
int laststate;
int thischar = -1;
XTermRect myRect;
+ Boolean extended;
do {
#if OPT_WIDE_CHARS
@@ -3013,7 +3050,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case 37:
if_OPT_ISO_COLORS(screen, {
xw->sgr_foreground = (op - 30);
- xw->sgr_extended = False;
+ clrDirectFG(xw->flags);
setExtendedFG(xw);
});
break;
@@ -3022,9 +3059,10 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
* properly eat all the parameters for unsupported modes.
*/
if_OPT_ISO_COLORS(screen, {
- if (parse_extended_colors(xw, &value, &item)) {
+ if (parse_extended_colors(xw, &value, &item,
+ &extended)) {
xw->sgr_foreground = value;
- xw->sgr_extended = True;
+ setDirectFG(xw->flags, extended);
setExtendedFG(xw);
}
});
@@ -3051,13 +3089,16 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case 47:
if_OPT_ISO_COLORS(screen, {
xw->sgr_background = (op - 40);
+ clrDirectBG(xw->flags);
setExtendedBG(xw);
});
break;
case 48:
if_OPT_ISO_COLORS(screen, {
- if (parse_extended_colors(xw, &value, &item)) {
+ if (parse_extended_colors(xw, &value, &item,
+ &extended)) {
xw->sgr_background = value;
+ setDirectBG(xw->flags, extended);
setExtendedBG(xw);
}
});
@@ -3084,7 +3125,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case 97:
if_OPT_AIX_COLORS(screen, {
xw->sgr_foreground = (op - 90 + 8);
- xw->sgr_extended = False;
+ clrDirectFG(xw->flags);
setExtendedFG(xw);
});
break;
@@ -3111,6 +3152,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case 107:
if_OPT_AIX_COLORS(screen, {
xw->sgr_background = (op - 100 + 8);
+ clrDirectBG(xw->flags);
setExtendedBG(xw);
});
break;
@@ -3438,7 +3480,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
TRACE(("CASE_DECSCUSR\n"));
{
Boolean change = True;
- Boolean blinks = screen->cursor_blink_esc;
+ int blinks = screen->cursor_blink_esc;
HideCursor();
@@ -4132,13 +4174,13 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_RQM:
TRACE(("CASE_RQM\n"));
- do_rpm(xw, ParamPair(0));
Reply to: