[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xterm: Changes to 'upstream-unstable'



 INSTALL              |   23 +-
 KOI8RXTerm.ad        |   20 ++
 MANIFEST             |    6 
 Makefile.in          |   33 ++-
 VTparse.def          |    6 
 XTerm.ad             |    4 
 button.c             |   39 +++-
 charproc.c           |  116 ++++++++----
 configure            |  169 ++++++++++++------
 configure.in         |   23 +-
 ctlseqs.ms           |   25 +-
 ctlseqs.txt          |   16 +
 doublechr.c          |  139 +++++++++------
 fontutils.c          |   84 +++------
 fontutils.h          |   11 -
 gen-pc-fkeys.pl      |   50 +++--
 input.c              |   64 +++++-
 koi8rxterm           |   84 +++++++++
 koi8rxterm.man       |   97 ++++++++++
 main.c               |   15 -
 main.h               |    6 
 menu.c               |  255 +++++++++++++++++++++------
 menu.h               |    6 
 misc.c               |  108 ++++++++++-
 os2main.c            |   15 -
 ptyx.h               |  123 +++++++------
 resize.c             |   14 -
 screen.c             |  172 +++++++++++-------
 termcap              |   26 +-
 terminfo             |  321 ++++++++++++++++++++++++++++++++--
 trace.c              |   32 ++-
 trace.h              |   11 -
 util.c               |  468 +++++++++++++++++++++++++++++++++++----------------
 uxterm               |   12 -
 uxterm.desktop       |    4 
 uxterm.man           |   91 +++++++++
 version.h            |    4 
 vttests/tcapquery.pl |   98 ++++++++--
 xterm.desktop        |    4 
 xterm.h              |   29 ++-
 xterm.log.html       |  119 ++++++++++++
 xterm.man            |  110 +++++++++++
 xtermcap.c           |  288 ++++++++++++++++++-------------
 xtermcap.h           |   13 +
 xtermcfg.hin         |    3 
 45 files changed, 2498 insertions(+), 858 deletions(-)

New commits:
commit ddd58d3dddabcdc86ed00c39dfd716fae1a3eeba
Author: Julien Cristau <jcristau@debian.org>
Date:   Wed Jan 2 19:58:27 2008 +0100

    Import xterm-230.

diff --git a/INSTALL b/INSTALL
index 70c89c8..c1a550f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,4 @@
--- $XTermId: INSTALL,v 1.115 2007/06/17 13:44:39 tom Exp $
--- $XFree86: xc/programs/xterm/INSTALL,v 3.42 2006/02/13 01:14:57 dickey Exp $
+-- $XTermId: INSTALL,v 1.117 2007/12/12 01:30:43 tom Exp $
 -------------------------------------------------------------------------------
 -- Copyright 1997-2006,2007 by Thomas E. Dickey
 --
@@ -228,6 +227,10 @@ The options (in alphabetic order):
 	match the parent's.  In particular, it addresses a problem where the
 	terminal size is not defined in the stty settings.
 
+  --disable-rectangles    disable VT420 rectangle support
+
+	Do not compile-in code to support VT420 rectangle control-sequences.
+
   --disable-regex         disable regular-expression selections
 
 	Do not compile-in code to support the "regex" option for multiple
@@ -267,6 +270,12 @@ The options (in alphabetic order):
 
   	Do not compile-in code to support Sun-style function keys.
 
+  --disable-tcap-fkeys    disable termcap function-keys
+
+	Compile-in code to support feature which allows xterm to use the
+	function-key definitions from the termcap/terminfo entry which it used
+	to set the $TERM variable on startup.
+
   --disable-tek4014       disable tek4014 emulation
 
   	Do not compile-in code to support Tektronix 4014 emulation.
@@ -406,10 +415,6 @@ The options (in alphabetic order):
 
 	(See --enable-paste64, which fits xterm's protocol better).
 
-  --enable-rectangles     enable VT420 rectangle support
-
-	Compile-in code to support VT420 rectangle control-sequences.
-
   --enable-sco-fkeys      enable support for SCO-style function keys
 
   	Compile-in code to support SCO-style function keys.
@@ -418,12 +423,6 @@ The options (in alphabetic order):
 
   	Compile-in code to support Sun-style function keys.
 
-  --enable-tcap-fkeys     enable termcap function-keys
-
-	Compile-in code to support experimental feature which directs xterm
-	to use the function-key definitions from the termcap/terminfo entry
-	which it used to set the $TERM variable on startup.
-
   --enable-tcap-query     enable termcap query/report
 
 	Compile-in code to support experimental DCS '+' control sequence, which
diff --git a/KOI8RXTerm.ad b/KOI8RXTerm.ad
new file mode 100644
index 0000000..aa21f26
--- /dev/null
+++ b/KOI8RXTerm.ad
@@ -0,0 +1,20 @@
+! $XTermId: KOI8RXTerm.ad,v 1.2 2007/12/30 15:49:14 tom Exp $
+
+! This is based on the UXTerm app-defaults file.
+
+! Use
+!	xterm -class KOI8RXTerm
+! to set resources for KOI8-R mode with corresponding fonts.
+
+#include "XTerm-color"
+
+*fontMenu.Label:  KOI8-R Fonts
+*VT100*allowC1Printable:	true
+
+! Use Cyrillic instead of Latin fonts.
+*VT100.font:	-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-koi8-r
+*VT100.font2:	-misc-fixed-medium-r-normal--8-80-75-75-c-50-koi8-r
+*VT100.font3:	-misc-fixed-medium-r-normal--14-130-75-75-c-70-koi8-r
+*VT100.font4:	-misc-fixed-medium-r-normal--13-120-75-75-c-80-koi8-r
+*VT100.font5:	-misc-fixed-medium-r-normal--18-120-100-100-c-90-koi8-r
+*VT100.font6:	-misc-fixed-medium-r-normal--20-200-75-75-c-100-koi8-r
diff --git a/MANIFEST b/MANIFEST
index ba5965c..d6339d4 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-229, version xterm-229
+MANIFEST for xterm-229o, version xterm-230
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
@@ -8,6 +8,7 @@ MANIFEST                        this file
 AAA_README_VMS.txt              note for VMS port of 'xterm'
 INSTALL                         configure script: options and related install instructions
 Imakefile                       imake template for Makefile
+KOI8RXTerm.ad                   resources for koi8rxterm
 Makefile.in                     configure script template for Makefile
 README                          overview & caveats for 'xterm'
 README.i18n                     i18n readme:
@@ -49,6 +50,8 @@ input.c                         VT100 key-symbol and function-key translation
 install.sh                      configure script: fallback install script
 keysym2ucs.c                    lookup-table for UTF-8 to keysyms
 keysym2ucs.h                    interface of keysym2ucs.c
+koi8rxterm                      KOI-8 wrapper from Debian (originally me)
+koi8rxterm.man                  manpage for koi8rxterm
 link_axp.com                    build-script for VMS port of xterm
 main.c                          main program of 'xterm'
 main.h                          default definitions for 'xterm'
@@ -81,6 +84,7 @@ trace.h                         interface of trace.c
 util.c                          miscellaneous utility functions for 'xterm'
 uxterm                          wrapper script to make unicode-xterm
 uxterm.desktop                  sample desktop file for uxterm
+uxterm.man                      manpage for uxterm, from Debian
 version.h                       version of xterm
 vms.c                           VMS version of xterm's spawn(), etc.
 vms.h                           system headers and definitions for vms.c
diff --git a/Makefile.in b/Makefile.in
index 1d174bb..ff90a4a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,4 @@
-## $XTermId: Makefile.in,v 1.148 2007/06/16 18:47:51 tom Exp $
-##
-## $XFree86: xc/programs/xterm/Makefile.in,v 3.56 2006/06/19 00:36:50 dickey Exp $ ##
+## $XTermId: Makefile.in,v 1.154 2007/12/30 16:39:48 tom Exp $
 ##
 ## Copyright 2002-2006,2007 by Thomas E. Dickey
 ##
@@ -162,13 +160,15 @@ resize$x : $(OBJS2)
 
 charproc$o : main.h @CHARPROC_DEPS@
 ################################################################################
-actual_xterm  = `echo xterm|    sed '$(transform)'`
-actual_resize = `echo resize|   sed '$(transform)'`
-actual_uxterm = `echo uxterm|   sed '$(transform)'`
+actual_xterm  = `echo xterm|        sed '$(transform)'`
+actual_resize = `echo resize|       sed '$(transform)'`
+actual_uxterm = `echo uxterm|       sed '$(transform)'`
+actual_k8term = `echo koi8rxterm|   sed '$(transform)'`
 
 binary_xterm  = $(actual_xterm)$x
 binary_resize = $(actual_resize)$x
 binary_uxterm = $(actual_uxterm)
+binary_k8term = $(actual_k8term)
 
 install \
 install-bin \
@@ -185,6 +185,15 @@ install-full :: xterm$x resize$x $(BINDIR)
 		else \
 			$(INSTALL_SCRIPT) -m  755 $(srcdir)/uxterm $(BINDIR)/$(binary_uxterm); \
 		fi'
+	@$(SHELL) -c 'echo "... installing $(BINDIR)/$(binary_k8term)"; \
+		if test "$(binary_xterm)" != "xterm"; then \
+			name="$(binary_xterm)"; \
+			sed -e "s,=xterm,=$$name," $(srcdir)/koi8rxterm >k8term.tmp; \
+			$(INSTALL_SCRIPT) -m  755 k8term.tmp $(BINDIR)/$(binary_k8term); \
+			rm -f k8term.tmp; \
+		else \
+			$(INSTALL_SCRIPT) -m  755 $(srcdir)/koi8rxterm $(BINDIR)/$(binary_k8term); \
+		fi'
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(BINDIR) && rm -f @XTERM_SYMLINK@ ; fi"
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(BINDIR) && $(LN_S) $(binary_xterm) @XTERM_SYMLINK@ ; fi"
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(BINDIR) && echo '... created symbolic link:' && ls -l $(binary_xterm) @XTERM_SYMLINK@ ; fi"
@@ -194,6 +203,8 @@ install-man \
 install-full :: $(MANDIR)
 	$(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/xterm.man    $(MANDIR)/$(actual_xterm).$(manext)  $(appsdir)
 	$(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/resize.man   $(MANDIR)/$(actual_resize).$(manext) $(appsdir)
+	$(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/uxterm.man   $(MANDIR)/$(actual_uxterm).$(manext) $(appsdir)
+	$(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/koi8rxterm.man   $(MANDIR)/$(actual_k8term).$(manext) $(appsdir)
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(MANDIR) && rm -f @XTERM_SYMLINK@.$(manext) ; fi"
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(MANDIR) && $(LN_S) $(actual_xterm).$(manext) @XTERM_SYMLINK@.$(manext) ; fi"
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(MANDIR) && echo '... created symbolic link:' && ls -l $(actual_xterm).$(manext) @XTERM_SYMLINK@.$(manext) ; fi"
@@ -246,6 +257,7 @@ uninstall-full ::
 	-$(RM) $(BINDIR)/$(binary_xterm)
 	-$(RM) $(BINDIR)/$(binary_resize)
 	-$(RM) $(BINDIR)/$(binary_uxterm)
+	-$(RM) $(BINDIR)/$(binary_k8term)
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(BINDIR) && rm -f @XTERM_SYMLINK@; fi"
 
 uninstall \
@@ -253,6 +265,8 @@ uninstall-man \
 uninstall-full ::
 	-$(RM) $(MANDIR)/$(actual_xterm).$(manext)
 	-$(RM) $(MANDIR)/$(actual_resize).$(manext)
+	-$(RM) $(MANDIR)/$(actual_uxterm).$(manext)
+	-$(RM) $(MANDIR)/$(actual_k8term).$(manext)
 	@-$(SHELL) -c "if test @XTERM_SYMLINK@ != NONE ; then cd $(MANDIR) && rm -f @XTERM_SYMLINK@.$(manext); fi"
 
 @no_appsdir@uninstall \
@@ -266,8 +280,8 @@ uninstall-full ::
 @no_icondir@uninstall-icon \
 @no_icondir@uninstall-full ::
 @no_icondir@	-$(RM) $(ICONDIR)/xterm-color_32x32.xpm
-@no_icondir@	-$(RM) $(ICONDIR)/xterm_48x48.xpm
-@no_icondir@	-$(RM) $(ICONDIR)/xterm-color_32x32.xpm
+@no_icondir@	-$(RM) $(ICONDIR)/xterm_32x32.xpm
+@no_icondir@	-$(RM) $(ICONDIR)/xterm-color_48x48.xpm
 @no_icondir@	-$(RM) $(ICONDIR)/xterm_48x48.xpm
 ################################################################################
 # Desktop-utils does not provide an uninstall, and is not uniformly available.
@@ -295,6 +309,9 @@ realclean : distclean
 maintainer-clean : realclean
 	-$(RM) 256colres.h 88colres.h
 ################################################################################
+terminfo.out : terminfo		; tic -a -I -1 terminfo >$@
+termcap.out : termcap		; tic -a -C -U termcap >$@
+################################################################################
 ctlseqs.html : ctlseqs.ms
 ctlseqs.pdf : ctlseqs.ps
 ctlseqs.ps : ctlseqs.ms
diff --git a/VTparse.def b/VTparse.def
index 85bd578..be2c1cd 100644
--- a/VTparse.def
+++ b/VTparse.def
@@ -1,11 +1,11 @@
-# $XTermId: VTparse.def,v 1.29 2006/07/31 22:17:10 tom Exp $
+# $XTermId: VTparse.def,v 1.30 2007/12/04 21:14:30 tom Exp $
+#
+# vile:txtmode rs=lf
 #
 # List of symbols that need to be defined for VTparse.h.  If you need to
 # change any of the CASE_ macros, make the change here and rerun the command
 # shown in VTparse.h.
 #
-# $XFree86: xc/programs/xterm/VTparse.def,v 3.18 2006/02/13 01:14:58 dickey Exp $
-#
 
 CASE_GROUND_STATE
 CASE_IGNORE
diff --git a/XTerm.ad b/XTerm.ad
index fdb6992..d914402 100644
--- a/XTerm.ad
+++ b/XTerm.ad
@@ -1,5 +1,4 @@
-! $XTermId: XTerm.ad,v 1.83 2007/03/18 22:41:40 tom Exp $
-! $XFree86: xc/programs/xterm/XTerm.ad,v 3.37 2006/04/10 00:34:36 dickey Exp $
+! $XTermId: XTerm.ad,v 1.85 2007/11/26 18:42:37 tom Exp $
 
 *saveLines: 1024
 
@@ -51,6 +50,7 @@
 *vtMenu*scrollkey*Label:  Scroll to Bottom on Key Press
 *vtMenu*scrollttyoutput*Label:  Scroll to Bottom on Tty Output
 *vtMenu*allow132*Label: Allow 80/132 Column Switching
+*vtMenu*keepSelection*Label: Keep Selection
 *vtMenu*selectToClipboard*Label: Select to Clipboard
 *vtMenu*cursesemul*Label:  Enable Curses Emulation
 *vtMenu*visualbell*Label:  Enable Visual Bell
diff --git a/button.c b/button.c
index 2ff5fd6..63a0e33 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.277 2007/07/22 20:37:11 tom Exp $ */
+/* $XTermId: button.c,v 1.281 2007/12/31 21:11:05 tom Exp $ */
 
 /*
  * Copyright 1999-2006,2007 by Thomas E. Dickey
@@ -1041,7 +1041,7 @@ struct _SelectionList {
 static unsigned
 DECtoASCII(unsigned ch)
 {
-    if (ch < 32) {
+    if (xtermIsDecGraphic(ch)) {
 	ch = "###########+++++##-##++++|######"[ch];
 	/*    01234567890123456789012345678901 */
     }
@@ -1079,7 +1079,7 @@ UTF8toLatin1(Char * s, unsigned len, unsigned long *result)
 		*q++ = value;
 	    } else {
 		unsigned eqv = ucs2dec(value);
-		if (eqv < 32) {
+		if (xtermIsDecGraphic(eqv)) {
 		    *q++ = DECtoASCII(eqv);
 		} else {
 		    eqv = AsciiEquivs(value);
@@ -1198,9 +1198,9 @@ MapSelections(XtermWidget xw, String * params, Cardinal num_params)
 	    }
 	}
 	if (map) {
-	    String mapTo = (xw->screen.selectToClipboard
-			    ? "CLIPBOARD"
-			    : "PRIMARY");
+	    const char *mapTo = (xw->screen.selectToClipboard
+				 ? "CLIPBOARD"
+				 : "PRIMARY");
 
 	    UnmapSelections(xw);
 	    if ((result = TypeMallocN(String, num_params + 1)) != 0) {
@@ -2466,11 +2466,13 @@ make_indexed_text(TScreen * screen, int row, unsigned length, int *indexed)
 		/* some internal points may not be drawn */
 		if (data == 0)
 		    data = ' ';
-#if OPT_WIDE_CHARS
-		next = convertToUTF8(last, data);
-#else
-		*next++ = CharOf(data);
-#endif
+
+		if_WIDE_OR_NARROW(screen, {
+		    next = convertToUTF8(last, data);
+		}
+		, {
+		    *next++ = CharOf(data);
+		});
 
 		if_OPT_WIDE_CHARS(screen, {
 		    int off;
@@ -3448,6 +3450,21 @@ DisownSelection(XtermWidget xw)
     }
 }
 
+void
+UnhiliteSelection(XtermWidget xw)
+{
+    TScreen *screen = &(xw->screen);
+
+    if (ScrnHaveSelection(screen)) {
+	CELL first = screen->startH;
+	CELL last = screen->endH;
+
+	screen->startH = zeroCELL;
+	screen->endH = zeroCELL;
+	ReHiliteText(xw, &first, &last);
+    }
+}
+
 /* returns number of chars in line from scol to ecol out */
 /* ARGSUSED */
 static int
diff --git a/charproc.c b/charproc.c
index 4c3da05..b101404 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,6 +1,4 @@
-/* $XTermId: charproc.c,v 1.810 2007/07/17 21:09:48 tom Exp $ */
-
-/* $XFree86: xc/programs/xterm/charproc.c,v 3.185 2006/06/20 00:42:38 dickey Exp $ */
+/* $XTermId: charproc.c,v 1.824 2007/12/31 21:03:26 tom Exp $ */
 
 /*
 
@@ -259,6 +257,7 @@ static XtActionsRec actionsList[] = {
     { "bell",			HandleBell },
     { "clear-saved-lines",	HandleClearSavedLines },
     { "create-menu",		HandleCreateMenu },
+    { "delete-is-del",		HandleDeleteIsDEL },
     { "dired-button",		DiredButton },
     { "hard-reset",		HandleHardReset },
     { "ignore",			HandleIgnore },
@@ -273,7 +272,6 @@ static XtActionsRec actionsList[] = {
     { "print-redir",		HandlePrintControlMode },
     { "quit",			HandleQuit },
     { "redraw",			HandleRedraw },
-    { "delete-is-del",		HandleDeleteIsDEL },
     { "scroll-back",		HandleScrollBack },
     { "scroll-forw",		HandleScrollForward },
     { "secure",			HandleSecure },
@@ -296,6 +294,7 @@ static XtActionsRec actionsList[] = {
     { "set-bellIsUrgent",	HandleBellIsUrgent },
     { "set-cursesemul",		HandleCursesEmul },
     { "set-jumpscroll",		HandleJumpscroll },
+    { "set-keep-selection",	HandleKeepSelection },
     { "set-marginbell",		HandleMarginBell },
     { "set-old-function-keys",	HandleOldFunctionKeys },
     { "set-pop-on-bell",	HandleSetPopOnBell },
@@ -421,6 +420,7 @@ static XtResource resources[] =
     Bres(XtNhpLowerleftBugCompat, XtCHpLowerleftBugCompat, screen.hp_ll_bc, False),
     Bres(XtNi18nSelections, XtCI18nSelections, screen.i18nSelections, True),
     Bres(XtNjumpScroll, XtCJumpScroll, screen.jumpscroll, True),
+    Bres(XtNkeepSelection, XtCKeepSelection, screen.keepSelection, False),
     Bres(XtNloginShell, XtCLoginShell, misc.login_shell, False),
     Bres(XtNmarginBell, XtCMarginBell, screen.marginbell, False),
     Bres(XtNmetaSendsEscape, XtCMetaSendsEscape, screen.meta_sends_esc, False),
@@ -430,6 +430,7 @@ static XtResource resources[] =
     Bres(XtNprinterAutoClose, XtCPrinterAutoClose, screen.printer_autoclose, False),
     Bres(XtNprinterExtent, XtCPrinterExtent, screen.printer_extent, False),
     Bres(XtNprinterFormFeed, XtCPrinterFormFeed, screen.printer_formfeed, False),
+    Bres(XtNquietGrab, XtCQuietGrab, screen.quiet_grab, False),
     Bres(XtNreverseVideo, XtCReverseVideo, misc.re_verse, False),
     Bres(XtNreverseWrap, XtCReverseWrap, misc.reverseWrap, False),
     Bres(XtNscrollBar, XtCScrollBar, misc.scrollbar, False),
@@ -543,6 +544,7 @@ static XtResource resources[] =
     Tres(XtNhighlightColor, XtCHighlightColor, HIGHLIGHT_BG, XtDefaultForeground),
     Tres(XtNhighlightTextColor, XtCHighlightTextColor, HIGHLIGHT_FG, XtDefaultBackground),
     Bres(XtNhighlightReverse, XtCHighlightReverse, screen.hilite_reverse, True),
+    Bres(XtNhighlightColorMode, XtCHighlightColorMode, screen.hilite_color, Maybe),
 #endif				/* OPT_HIGHLIGHT_COLOR */
 
 #if OPT_INPUT_METHOD
@@ -1040,12 +1042,12 @@ set_max_row(TScreen * screen, int rows)
 
 #if OPT_MOD_FKEYS
 static void
-set_mod_fkeys(XtermWidget xw, int which, int what)
+set_mod_fkeys(XtermWidget xw, int which, int what, Bool enabled)
 {
 #define SET_MOD_FKEYS(field) \
-    xw->keyboard.modify_now.field = (what == DEFAULT) \
+    xw->keyboard.modify_now.field = ((what == DEFAULT) && enabled) \
 				     ? xw->keyboard.modify_1st.field \
-				     : param[1]; \
+				     : what; \
     TRACE(("set modify_now.%s to %d\n", #field, \
 	   xw->keyboard.modify_now.field));
 
@@ -1196,7 +1198,8 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 	 * codes at 0x242, but no zero-width characters until past 0x300.
 	 */
 	if (c >= 0x300 && screen->wide_chars
-	    && my_wcwidth((int) c) == 0) {
+	    && my_wcwidth((int) c) == 0
+	    && !isWideControl(c)) {
 	    int prev, precomposed;
 
 	    WriteNow();
@@ -1204,15 +1207,10 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 	    prev = XTERM_CELL(screen->last_written_row,
 			      screen->last_written_col);
 	    precomposed = do_precomposition(prev, (int) c);
-#ifdef DEBUG
-	    if (debug) {
-		fprintf(stderr,
-			"do_precomposition (U+%04X [%d], U+%04X [%d]) -> U+%04X [%d]\n",
-			prev, my_wcwidth(prev), (int) c, my_wcwidth((int)
-								    c),
-			precomposed, my_wcwidth(precomposed));
-	    }
-#endif
+	    TRACE(("do_precomposition (U+%04X [%d], U+%04X [%d]) -> U+%04X [%d]\n",
+		   prev, my_wcwidth(prev),
+		   (int) c, my_wcwidth((int) c),
+		   precomposed, my_wcwidth(precomposed)));
 
 	    /* substitute combined character with precomposed character
 	     * only if it does not change the width of the base character
@@ -2274,7 +2272,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 	    set_tb_margins(screen, 0, screen->max_row);
 	    CursorSet(screen, 0, 0, xw->flags);
 	    xtermParseRect(xw, 0, 0, &myRect);
-	    ScrnFillRectangle(xw, &myRect, 'E', 0);
+	    ScrnFillRectangle(xw, &myRect, 'E', 0, False);
 	    sp->parsestate = sp->groundtable;
 	    break;
 
@@ -2643,7 +2641,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 	case CASE_DECERA:
 	    TRACE(("CASE_DECERA - Erase rectangular area\n"));
 	    xtermParseRect(xw, nparam, param, &myRect);
-	    ScrnFillRectangle(xw, &myRect, ' ', 0);
+	    ScrnFillRectangle(xw, &myRect, ' ', 0, True);
 	    sp->parsestate = sp->groundtable;
 	    break;
 
@@ -2653,7 +2651,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 		&& ((param[0] >= 32 && param[0] <= 126)
 		    || (param[0] >= 160 && param[0] <= 255))) {
 		xtermParseRect(xw, nparam - 1, param + 1, &myRect);
-		ScrnFillRectangle(xw, &myRect, param[0], xw->flags);
+		ScrnFillRectangle(xw, &myRect, param[0], xw->flags, True);
 	    }
 	    sp->parsestate = sp->groundtable;
 	    break;
@@ -2826,15 +2824,19 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 	case CASE_SET_MOD_FKEYS:
 	    TRACE(("CASE_SET_MOD_FKEYS\n"));
 	    if (nparam >= 1) {
-		set_mod_fkeys(xw, param[0], nparam > 1 ? param[1] : DEFAULT);
+		set_mod_fkeys(xw, param[0], nparam > 1 ? param[1] : DEFAULT, True);
 	    } else {
 		for (row = 1; row <= 5; ++row)
-		    set_mod_fkeys(xw, row, DEFAULT);
+		    set_mod_fkeys(xw, row, DEFAULT, True);
 	    }
 	    break;
 	case CASE_SET_MOD_FKEYS0:
 	    TRACE(("CASE_SET_MOD_FKEYS0\n"));
-	    xw->keyboard.modify_now.function_keys = -1;
+	    if (nparam >= 1 && param[0] != DEFAULT) {
+		set_mod_fkeys(xw, param[0], -1, False);
+	    } else {
+		xw->keyboard.modify_now.function_keys = -1;
+	    }
 	    break;
 #endif
 
@@ -3710,8 +3712,16 @@ ansi_modes(XtermWidget xw,
 #define set_bool_mode(flag) \
 	flag = (IsSM()) ? ON : OFF
 
-#define set_mousemode(mode) \
-	screen->send_mouse_pos = IsSM() ? mode : MOUSE_OFF
+static void
+really_set_mousemode(XtermWidget xw,
+		     Bool enabled,
+		     unsigned mode)
+{
+    xw->screen.send_mouse_pos = enabled ? mode : MOUSE_OFF;
+    xtermShowPointer(xw, enabled);
+}
+
+#define set_mousemode(mode) really_set_mousemode(xw, IsSM(), mode)
 
 #if OPT_READLINE
 #define set_mouseflag(f)		\
@@ -3990,6 +4000,11 @@ dpmodes(XtermWidget xw,
 		    CursorRestore(xw);
 	    }
 	    break;
+#if OPT_TCAP_FKEYS
+	case 1050:
+	    set_keyboard_type(xw, keyboardIsTermcap, IsSM());
+	    break;
+#endif
 #if OPT_SUN_FUNC_KEYS
 	case 1051:
 	    set_keyboard_type(xw, keyboardIsSun, IsSM());
@@ -5063,12 +5078,12 @@ fill_Tres(XtermWidget target, XtermWidget source, int offset)
 
     if (name == 0) {
 	target->screen.Tcolors[offset].value = target->dft_foreground;
-    } else if (!x_strcasecmp(name, XtDefaultForeground)) {
+    } else if (isDefaultForeground(name)) {
 	target->screen.Tcolors[offset].value =
 	    ((offset == TEXT_FG || offset == TEXT_BG)
 	     ? target->dft_foreground
 	     : target->screen.Tcolors[TEXT_FG].value);
-    } else if (!x_strcasecmp(name, XtDefaultBackground)) {
+    } else if (isDefaultBackground(name)) {
 	target->screen.Tcolors[offset].value =
 	    ((offset == TEXT_FG || offset == TEXT_BG)
 	     ? target->dft_background
@@ -5257,6 +5272,12 @@ VTInitialize(Widget wrequest,
 	     ArgList args GCC_UNUSED,
 	     Cardinal *num_args GCC_UNUSED)
 {
+#define Kolor(name) wnew->screen.name.resource
+#define TxtFg(name) !x_strcasecmp(Kolor(Tcolors[TEXT_FG]), Kolor(name))
+#define TxtBg(name) !x_strcasecmp(Kolor(Tcolors[TEXT_BG]), Kolor(name))
+#define DftFg(name) isDefaultForeground(Kolor(name))
+#define DftBg(name) isDefaultBackground(Kolor(name))
+
     XtermWidget request = (XtermWidget) wrequest;
     XtermWidget wnew = (XtermWidget) new_arg;
     Widget my_parent = SHELL_OF(wnew);
@@ -5376,7 +5397,6 @@ VTInitialize(Widget wrequest,
     init_Ires(screen.scrolllines);
     init_Bres(screen.scrollttyoutput);
     init_Bres(screen.scrollkey);
-    init_Bres(screen.selectToClipboard);
 
     init_Sres(screen.term_id);
     for (s = request->screen.term_id; *s; s++) {
@@ -5425,13 +5445,17 @@ VTInitialize(Widget wrequest,
     init_Ires(screen.multiClickTime);
     init_Ires(screen.bellSuppressTime);
     init_Sres(screen.charClass);
+
+    init_Bres(screen.always_highlight);
+    init_Bres(screen.brokenSelections);
     init_Bres(screen.cutNewline);
     init_Bres(screen.cutToBeginningOfLine);
     init_Bres(screen.highlight_selection);
-    init_Bres(screen.trim_selection);
     init_Bres(screen.i18nSelections);
-    init_Bres(screen.brokenSelections);
-    init_Bres(screen.always_highlight);
+    init_Bres(screen.keepSelection);
+    init_Bres(screen.selectToClipboard);
+    init_Bres(screen.trim_selection);
+
     wnew->screen.pointer_cursor = request->screen.pointer_cursor;
 
     init_Sres(screen.answer_back);
@@ -5464,6 +5488,8 @@ VTInitialize(Widget wrequest,
     wnew->screen.allowTitleOps = wnew->screen.allowTitleOp0;
     wnew->screen.allowWindowOps = wnew->screen.allowWindowOp0;
 
+    init_Bres(screen.quiet_grab);
+
 #ifndef NO_ACTIVE_ICON
     wnew->screen.fnt_icon = request->screen.fnt_icon;
     init_Bres(misc.active_icon);
@@ -5553,10 +5579,10 @@ VTInitialize(Widget wrequest,
 #if OPT_COLOR_RES
 	TRACE(("Acolors[%d] = %s\n", i, wnew->screen.Acolors[i].resource));
 	wnew->screen.Acolors[i].mode = False;
-	if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultForeground)) {
+	if (DftFg(Acolors[i])) {
 	    wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_FG);
 	    wnew->screen.Acolors[i].mode = True;
-	} else if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultBackground)) {
+	} else if (DftBg(Acolors[i])) {
 	    wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_BG);
 	    wnew->screen.Acolors[i].mode = True;
 	} else {
@@ -5641,6 +5667,26 @@ VTInitialize(Widget wrequest,
     init_Tres(HIGHLIGHT_BG);
     init_Tres(HIGHLIGHT_FG);
     init_Bres(screen.hilite_reverse);
+    init_Bres(screen.hilite_color);
+    if (wnew->screen.hilite_color == Maybe) {
+	wnew->screen.hilite_color = False;
+#if OPT_COLOR_RES
+	/*
+	 * If the highlight text/background are both set, and if they are
+	 * not equal to either the text/background or background/text, then
+	 * set the highlightColorMode automatically.
+	 */
+	if (!DftFg(Tcolors[HIGHLIGHT_BG])
+	    && !DftBg(Tcolors[HIGHLIGHT_FG])
+	    && !TxtFg(Tcolors[HIGHLIGHT_BG])
+	    && !TxtBg(Tcolors[HIGHLIGHT_FG])
+	    && !TxtBg(Tcolors[HIGHLIGHT_BG])
+	    && !TxtFg(Tcolors[HIGHLIGHT_FG])) {
+	    TRACE(("...setting hilite_color automatically\n"));
+	    wnew->screen.hilite_color = True;
+	}
+#endif
+    }
 #endif
 
 #if OPT_TEK4014
@@ -7438,7 +7484,7 @@ DoSetSelectedFont(Widget w,
 	    }
 	}
 
-	if (len > 0 && (val = malloc(len + 1)) != 0) {
+	if (len > 0 && (val = TypeMallocN(char, len + 1)) != 0) {
 	    memcpy(val, value, len);
 	    val[len] = '\0';
 	    used = x_strtrim(val);
@@ -7477,7 +7523,7 @@ DoSetSelectedFont(Widget w,
 }
 
 void
-FindFontSelection(XtermWidget xw, char *atom_name, Bool justprobe)
+FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
 {
     static AtomPtr *atoms;
     static int atomCount = 0;
diff --git a/configure b/configure
index 0b4c86c..6c3d984 100755
--- a/configure
+++ b/configure
@@ -743,7 +743,7 @@ Optional Features:
   --disable-rightbar      disable right-scrollbar support
   --disable-samename      disable check for redundant name-change
   --disable-session-mgt   disable support for session management
-  --enable-tcap-fkeys     compile-in termcap function-keys support
+  --enable-tcap-fkeys     disable termcap function-keys support
   --enable-tcap-query     compile-in termcap-query support
   --disable-tek4014       disable tek4014 emulation
   --enable-toolbar        compile-in toolbar for pulldown menus
@@ -753,7 +753,7 @@ Optional Features:
   --enable-wide-chars     enable wide-character support
   --enable-dabbrev        enable dynamic-abbreviation support
   --enable-dec-locator    enable DECterm Locator support
-  --enable-rectangles     enable VT420 rectangle support
+  --disable-rectangles    disable VT420 rectangle support
   --disable-ziconbeep     disable -ziconbeep option
 Testing/development Options:
   --enable-trace          test: set to enable debugging traces
@@ -11333,15 +11333,15 @@ echo $ECHO_N "checking if you want to use termcap function-keys... $ECHO_C" >&6
 # Check whether --enable-tcap-fkeys or --disable-tcap-fkeys was given.
 if test "${enable_tcap_fkeys+set}" = set; then
   enableval="$enable_tcap_fkeys"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    enable_tcap_fkeys=yes
-  else
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
     enable_tcap_fkeys=no
+  else
+    enable_tcap_fkeys=yes
   fi
 else
-  enableval=no
-  enable_tcap_fkeys=no
+  enableval=yes
+  enable_tcap_fkeys=yes
 
 fi;
 echo "$as_me:11347: result: $enable_tcap_fkeys" >&5
@@ -11707,15 +11707,15 @@ echo $ECHO_N "checking if you want VT420 rectangle support... $ECHO_C" >&6
 # Check whether --enable-rectangles or --disable-rectangles was given.
 if test "${enable_rectangles+set}" = set; then
   enableval="$enable_rectangles"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    enable_rectangles=yes
-  else
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
     enable_rectangles=no
+  else
+    enable_rectangles=yes
   fi
 else
-  enableval=no
-  enable_rectangles=no
+  enableval=yes
+  enable_rectangles=yes
 
 fi;
 echo "$as_me:11721: result: $enable_rectangles" >&5
@@ -11871,8 +11871,77 @@ EOF
 	EXTRAOBJS="$EXTRAOBJS testxmc.o"
 fi
 
+for ac_func in tigetstr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:11877: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 11883 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11914: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:11917: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:11920: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:11923: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:11933: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
 if test -n "$GCC" ; then
-echo "$as_me:11875: checking if you want to turn on gcc warnings" >&5
+echo "$as_me:11944: checking if you want to turn on gcc warnings" >&5
 echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
 
 # Check whether --enable-warnings or --disable-warnings was given.
@@ -11889,7 +11958,7 @@ else
   with_warnings=no
 
 fi;
-echo "$as_me:11892: result: $with_warnings" >&5
+echo "$as_me:11961: result: $with_warnings" >&5
 echo "${ECHO_T}$with_warnings" >&6
 if test "$with_warnings" = yes
 then
@@ -11912,10 +11981,10 @@ cat > conftest.i <<EOF
 EOF
 if test "$GCC" = yes
 then
-	{ echo "$as_me:11915: checking for $CC __attribute__ directives..." >&5
+	{ echo "$as_me:11984: checking for $CC __attribute__ directives..." >&5
 echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
 cat > conftest.$ac_ext <<EOF
-#line 11918 "configure"
+#line 11987 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -11953,12 +12022,12 @@ EOF
 EOF
 			;;
 		esac
-		if { (eval echo "$as_me:11956: \"$ac_compile\"") >&5
+		if { (eval echo "$as_me:12025: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11959: \$? = $ac_status" >&5
+  echo "$as_me:12028: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-			test -n "$verbose" && echo "$as_me:11961: result: ... $cf_attribute" >&5
+			test -n "$verbose" && echo "$as_me:12030: result: ... $cf_attribute" >&5
 echo "${ECHO_T}... $cf_attribute" >&6
 			cat conftest.h >>confdefs.h
 		fi
@@ -11971,11 +12040,11 @@ fi
 
 GCC_VERSION=none
 if test "$GCC" = yes ; then
-	echo "$as_me:11974: checking version of $CC" >&5
+	echo "$as_me:12043: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
 	GCC_VERSION="`${CC} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
 	test -z "$GCC_VERSION" && GCC_VERSION=unknown
-	echo "$as_me:11978: result: $GCC_VERSION" >&5
+	echo "$as_me:12047: result: $GCC_VERSION" >&5
 echo "${ECHO_T}$GCC_VERSION" >&6
 fi
 
@@ -11984,12 +12053,12 @@ INTEL_COMPILER=no
 if test "$GCC" = yes ; then
 	case $host_os in
 	linux*|gnu*)
-		echo "$as_me:11987: checking if this is really Intel C compiler" >&5
+		echo "$as_me:12056: checking if this is really Intel C compiler" >&5
 echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
 		cf_save_CFLAGS="$CFLAGS"
 		CFLAGS="$CFLAGS -no-gcc"
 		cat >conftest.$ac_ext <<_ACEOF
-#line 11992 "configure"
+#line 12061 "configure"
 #include "confdefs.h"
 
 int
@@ -12006,16 +12075,16 @@ make an error
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12009: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12078: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12012: \$? = $ac_status" >&5
+  echo "$as_me:12081: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:12015: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12084: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12018: \$? = $ac_status" >&5
+  echo "$as_me:12087: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   INTEL_COMPILER=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
@@ -12026,14 +12095,14 @@ cat conftest.$ac_ext >&5
 fi
 rm -f conftest.$ac_objext conftest.$ac_ext
 		CFLAGS="$cf_save_CFLAGS"
-		echo "$as_me:12029: result: $INTEL_COMPILER" >&5
+		echo "$as_me:12098: result: $INTEL_COMPILER" >&5
 echo "${ECHO_T}$INTEL_COMPILER" >&6
 		;;
 	esac
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 12036 "configure"
+#line 12105 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
 
@@ -12051,7 +12120,7 @@ then
 # remark #981: operands are evaluated in unspecified order
 # warning #269: invalid format string conversion
 
-	{ echo "$as_me:12054: checking for $CC warning options..." >&5
+	{ echo "$as_me:12123: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
 	cf_save_CFLAGS="$CFLAGS"
 	EXTRA_CFLAGS="-Wall"
@@ -12068,12 +12137,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
 		wd981
 	do
 		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-		if { (eval echo "$as_me:12071: \"$ac_compile\"") >&5
+		if { (eval echo "$as_me:12140: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12074: \$? = $ac_status" >&5
+  echo "$as_me:12143: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-			test -n "$verbose" && echo "$as_me:12076: result: ... -$cf_opt" >&5
+			test -n "$verbose" && echo "$as_me:12145: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
 			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
 		fi
@@ -12082,7 +12151,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
 
 elif test "$GCC" = yes
 then
-	{ echo "$as_me:12085: checking for $CC warning options..." >&5
+	{ echo "$as_me:12154: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
 	cf_save_CFLAGS="$CFLAGS"
 	EXTRA_CFLAGS="-W -Wall"
@@ -12102,12 +12171,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
 		Wundef $cf_warn_CONST Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum
 	do
 		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-		if { (eval echo "$as_me:12105: \"$ac_compile\"") >&5
+		if { (eval echo "$as_me:12174: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12108: \$? = $ac_status" >&5
+  echo "$as_me:12177: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-			test -n "$verbose" && echo "$as_me:12110: result: ... -$cf_opt" >&5
+			test -n "$verbose" && echo "$as_me:12179: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
 			case $cf_opt in #(vi
 			Wcast-qual) #(vi
@@ -12248,7 +12317,7 @@ DEFS=-DHAVE_CONFIG_H


Reply to: