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

xterm: Changes to 'debian-unstable'



 INSTALL                  |   12 
 MANIFEST                 |    3 
 button.c                 |   52 
 charclass.c              |    4 
 charproc.c               |  181 ++
 configure                | 3245 +++++++++++++++++++++++------------------------
 configure.in             |   10 
 ctlseqs.ms               |   12 
 ctlseqs.txt              |    8 
 debian/changelog         |    7 
 debian/control           |    2 
 doublechr.c              |   29 
 fontutils.c              |  313 +++-
 fontutils.h              |   24 
 graphics.c               |    4 
 graphics_regis.c         |  139 +-
 main.c                   |    3 
 menu.c                   |    4 
 misc.c                   |   68 
 package/debian/changelog |    6 
 package/freebsd/Makefile |    2 
 package/xterm.spec       |    5 
 print.c                  |   20 
 ptydata.c                |   66 
 ptyx.h                   |   69 
 screen.c                 |   75 -
 scrollback.c             |   14 
 terminfo                 |    9 
 testxmc.c                |   10 
 util.c                   |  441 ++++--
 version.h                |    6 
 xterm.appdata.xml        |   24 
 xterm.h                  |   24 
 xterm.log.html           |   78 +
 xtermcfg.hin             |    5 
 35 files changed, 2868 insertions(+), 2106 deletions(-)

New commits:
commit c12cb41756a4d0b4315f3ea067f4862b3080c699
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Jun 3 09:37:38 2014 +0200

    Remove Cyril from Uploaders.

diff --git a/debian/changelog b/debian/changelog
index 75986ba..86397e5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 xterm (305-1) UNRELEASED; urgency=medium
 
   * New upstream release.
+  * Remove Cyril from Uploaders.
 
  -- Julien Cristau <jcristau@debian.org>  Tue, 03 Jun 2014 09:27:48 +0200
 
diff --git a/debian/control b/debian/control
index 6f0372e..da41d47 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: xterm
 Section: x11
 Priority: optional
 Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
-Uploaders: Cyril Brulebois <kibi@debian.org>, Sven Joachim <svenjoac@gmx.de>
+Uploaders: Sven Joachim <svenjoac@gmx.de>
 Standards-Version: 3.9.5
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-xorg/app/xterm.git
 Vcs-Git: git://anonscm.debian.org/pkg-xorg/app/xterm

commit 43aeab6d328b42d1f27d1cbb598ec8ab055a999f
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Jun 3 09:30:55 2014 +0200

    New upstream release.

diff --git a/debian/changelog b/debian/changelog
index deeec29..75986ba 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xterm (305-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 03 Jun 2014 09:27:48 +0200
+
 xterm (304-1) unstable; urgency=low
 
   * New upstream release.

commit da4dc0f6a03b79967f9f404763d813bae955ac94
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Jun 3 09:27:02 2014 +0200

    Imported Upstream version 305

diff --git a/INSTALL b/INSTALL
index 2eab615..66336c4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
--- $XTermId: INSTALL,v 1.150 2014/04/11 19:36:41 Ross.Combs Exp $
+-- $XTermId: INSTALL,v 1.151 2014/05/08 07:58:06 tom Exp $
 -------------------------------------------------------------------------------
--- Copyright 1997-2012,2013 by Thomas E. Dickey
+-- Copyright 1997-2013,2014 by Thomas E. Dickey
 --
 --                         All Rights Reserved
 --
@@ -339,6 +339,14 @@ The options (in alphabetic order):
 
 	A genuine vt100 emulates a vt52.
 
+  --disable-wide-attrs    disable wide-attribute support
+
+	Xterm's base attributes include all of those used in DEC terminals.
+	ISO 6429 defines a few more which historically have found little use.
+	Some people find these amusing.
+
+	This is normally enabled.
+
   --disable-wide-chars    disable wide-character support
 
   	The wide-character code supports Unicode and UTF-8.
diff --git a/MANIFEST b/MANIFEST
index c140bba..001e738 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-304, version xterm-304
+MANIFEST for xterm-305, version xterm-305
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
@@ -100,6 +100,7 @@ wcwidth.h                       interface of wcwidth.c
 xcharmouse.h                    Jason Bacon's mouse-defs, cleaned up a little
 xstrings.c                      a few common string functions
 xstrings.h                      interface of xstrings.c
+xterm.appdata.xml               sample "appdata.xml" file
 xterm.dat                       application defaults for VMS port of 'xterm'
 xterm.desktop                   sample desktop file for xterm.
 xterm.h                         common includes, definitions and prototypes for 'xterm'
diff --git a/button.c b/button.c
index 7dc6e86..69936a5 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.467 2014/04/22 00:50:10 tom Exp $ */
+/* $XTermId: button.c,v 1.473 2014/05/26 17:12:51 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -1235,7 +1235,7 @@ UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
 	PtyData data;
 
 	fakePtyData(&data, s, s + len);
-	while (decodeUtf8(&data)) {
+	while (decodeUtf8(screen, &data)) {
 	    Bool fails = False;
 	    Bool extra = False;
 	    IChar value = skipPtyData(&data);
@@ -1846,7 +1846,7 @@ ToNational(TScreen *screen, Char *buffer, unsigned *length)
 	memcpy(data->buffer, buffer, (size_t) *length);
 	p = buffer;
 	while (data->next < data->last) {
-	    if (!decodeUtf8(data)) {
+	    if (!decodeUtf8(screen, data)) {
 		data->utf_size = 1;
 		data->utf_data = data->next[0];
 	    }
@@ -2821,7 +2821,7 @@ static int
 LastTextCol(TScreen *screen, LineData *ld, int row)
 {
     int i = -1;
-    Char *ch;
+    IAttr *ch;
 
     if (ld != 0) {
 	if (okScrnRow(screen, row)) {
@@ -3229,8 +3229,8 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
 			if (regexec(&preg,
 				    search + indexed[col],
 				    (size_t) 1, &match, 0) == 0) {
-			    int start_inx = match.rm_so + indexed[col];
-			    int finis_inx = match.rm_eo + indexed[col];
+			    int start_inx = (int) (match.rm_so + indexed[col]);
+			    int finis_inx = (int) (match.rm_eo + indexed[col]);
 			    int start_col = indexToCol(indexed, len, start_inx);
 			    int finis_col = indexToCol(indexed, len, finis_inx);
 
@@ -4086,7 +4086,7 @@ _OwnSelection(XtermWidget xw,
 			     screen->selection_length, cutbuffer);
 	    } else {
 		/* This used to just use the UTF-8 data, which was totally
-		 * broken as not even the corresponding paste code in Xterm
+		 * broken as not even the corresponding paste code in xterm
 		 * understood this!  So now it converts to Latin1 first.
 		 *   Robert Brady, 2000-09-05
 		 */
@@ -4225,23 +4225,27 @@ SaveText(TScreen *screen,
 	/* We want to strip out every occurrence of HIDDEN_CHAR AFTER a
 	 * wide character.
 	 */
-	if (c == HIDDEN_CHAR && isWide((int) previous)) {
-	    previous = c;
-	    /* Combining characters attached to double-width characters
-	       are in memory attached to the HIDDEN_CHAR */
-	    if_OPT_WIDE_CHARS(screen, {
-		if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
-		    unsigned ch;
-		    size_t off;
-		    for_each_combData(off, ld) {
-			ch = ld->combData[off][i];
-			if (ch == 0)
-			    break;
-			lp = convertToUTF8(lp, ch);
+	if (c == HIDDEN_CHAR) {
+	    if (isWide((int) previous)) {
+		previous = c;
+		/* Combining characters attached to double-width characters
+		   are in memory attached to the HIDDEN_CHAR */
+		if_OPT_WIDE_CHARS(screen, {
+		    if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
+			unsigned ch;
+			size_t off;
+			for_each_combData(off, ld) {
+			    ch = ld->combData[off][i];
+			    if (ch == 0)
+				break;
+			    lp = convertToUTF8(lp, ch);
+			}
 		    }
-		}
-	    });
-	    continue;
+		});
+		continue;
+	    } else {
+		c = ' ';	/* should not happen, but just in case... */
+	    }
 	}
 	previous = c;
 	if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
@@ -4784,7 +4788,7 @@ formatVideoAttrs(XtermWidget xw, char *buffer, CELL *cell)
 
     *buffer = '\0';
     if (ld != 0 && cell->col < (int) ld->lineSize) {
-	Char attribs = ld->attribs[cell->col];
+	IAttr attribs = ld->attribs[cell->col];
 	const char *delim = "";
 
 	if (attribs & INVERSE) {
diff --git a/charclass.c b/charclass.c
index 675ef17..049c077 100644
--- a/charclass.c
+++ b/charclass.c
@@ -1,4 +1,4 @@
-/* $XTermId: charclass.c,v 1.22 2009/11/05 23:46:15 tom Exp $ */
+/* $XTermId: charclass.c,v 1.23 2014/05/26 17:12:51 tom Exp $ */
 
 /*
  * Compact and efficient reimplementation of the
@@ -6,7 +6,7 @@
  *
  * Markus Kuhn -- mkuhn@acm.org -- 2000-07-03
  *
- * Xterm allows users to select entire words with a double-click on the left
+ * xterm allows users to select entire words with a double-click on the left
  * mouse button.  Opinions might differ on what type of characters are part of
  * separate words, therefore xterm allows users to configure a class code for
  * each 8-bit character.  Words are maximum length sequences of neighboring
diff --git a/charproc.c b/charproc.c
index b6ab503..af5b2a8 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1332 2014/05/02 21:48:33 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1357 2014/05/29 23:47:15 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -907,14 +907,14 @@ CheckBogusForeground(TScreen *screen, const char *tag)
 	    LineData *ld = getLineData(screen, row)->;
 
 	    if (ld != 0) {
-		Char *attribs = ld->attribs;
+		IAttr *attribs = ld->attribs;
 
 		col = (row == screen->cur_row) ? screen->cur_col : 0;
 		for (; isClear && (col <= screen->max_col); ++col) {
 		    unsigned flags = attribs[col];
 		    if (pass) {
 			flags &= ~FG_COLOR;
-			attribs[col] = (Char) flags;
+			attribs[col] = (IAttr) flags;
 		    } else if ((flags & BG_COLOR)) {
 			isClear = False;
 		    } else if ((flags & FG_COLOR)) {
@@ -1079,6 +1079,28 @@ reset_SGR_Colors(XtermWidget xw)
 }
 #endif /* OPT_ISO_COLORS */
 
+#if OPT_WIDE_ATTRS
+/*
+ * Call this before changing the state of ATR_ITALIC, to update the GC fonts.
+ */
+static void
+setItalicFont(XtermWidget xw, Bool enable)
+{
+    TScreen *screen = TScreenOf(xw);
+
+    if (enable) {
+	if ((xw->flags & ATR_ITALIC) == 0) {
+	    xtermLoadItalics(xw);
+	    TRACE(("setItalicFont: enabling Italics\n"));
+	    xtermUpdateFontGCs(xw, screen->ifnts);
+	}
+    } else if ((xw->flags & ATR_ITALIC) != 0) {
+	TRACE(("setItalicFont: disabling Italics\n"));
+	xtermUpdateFontGCs(xw, screen->fnts);
+    }
+}
+#endif
+
 void
 resetCharsets(TScreen *screen)
 {
@@ -1317,6 +1339,28 @@ check_tables(void)
     for (n = 0; n < XtNumber(all_tables); ++n) {
 	Const PARSE_T *table = all_tables[n].table;
 	TRACE(("*** %s\n", all_tables[n].name));
+	/*
+	 * Most of the tables should use the same codes in 0..31, 128..159
+	 * as the "ansi" table.
+	 */
+	if (strncmp(all_tables[n].name, "ansi", 4) &&
+	    strncmp(all_tables[n].name, "sos_", 4) &&
+	    strncmp(all_tables[n].name, "vt52", 4)) {
+	    for (ch = 0; ch < 32; ++ch) {
+		int c1 = ch + 128;
+		PARSE_T st_l = table[ch];
+		PARSE_T st_r = table[c1];
+		if (st_l != ansi_table[ch]) {
+		    TRACE(("  %3d: %d vs %d\n", ch, st_l, ansi_table[ch]));
+		}
+		if (st_r != ansi_table[c1]) {
+		    TRACE(("  %3d: %d vs %d\n", c1, st_r, ansi_table[c1]));
+		}
+	    }
+	}
+	/*
+	 * All of the tables should have their GL/GR parts encoded the same.
+	 */
 	for (ch = 32; ch < 127; ++ch) {
 	    PARSE_T st_l = table[ch];
 	    PARSE_T st_r = table[ch + 128];
@@ -2802,48 +2846,82 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 		switch (op) {
 		case DEFAULT:
 		case 0:
+#if OPT_WIDE_ATTRS
+		    setItalicFont(xw, False);
+#endif
 		    UIntClr(xw->flags,
-			    (INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE));
+			    (SGR_MASK | SGR_MASK2 | INVISIBLE));
 		    if_OPT_ISO_COLORS(screen, {
 			reset_SGR_Colors(xw);
 		    });
 		    break;
 		case 1:	/* Bold                 */
-		    xw->flags |= BOLD;
+		    UIntSet(xw->flags, BOLD);
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedFG(xw);
 		    });
 		    break;
-		case 5:	/* Blink                */
-		    xw->flags |= BLINK;
-		    StartBlinking(screen);
+#if OPT_WIDE_ATTRS
+		case 2:	/* faint, decreased intensity or second colour */
+		    UIntSet(xw->flags, ATR_FAINT);
+		    break;
+		case 3:	/* italicized */
+		    setItalicFont(xw, True);
+		    UIntSet(xw->flags, ATR_ITALIC);
+		    break;
+#endif
+		case 4:	/* Underscore           */
+		    UIntSet(xw->flags, UNDERLINE);
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedFG(xw);
 		    });
 		    break;
-		case 4:	/* Underscore           */
-		    xw->flags |= UNDERLINE;
+		case 5:	/* Blink                */
+		    UIntSet(xw->flags, BLINK);
+		    StartBlinking(screen);
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedFG(xw);
 		    });
 		    break;
 		case 7:
-		    xw->flags |= INVERSE;
+		    UIntSet(xw->flags, INVERSE);
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedBG(xw);
 		    });
 		    break;
 		case 8:
-		    xw->flags |= INVISIBLE;
+		    UIntSet(xw->flags, INVISIBLE);
+		    break;
+#if OPT_WIDE_ATTRS
+		case 9:	/* crossed-out characters */
+		    UIntSet(xw->flags, ATR_STRIKEOUT);
+		    break;
+#endif
+#if OPT_WIDE_ATTRS
+		case 21:	/* doubly-underlined */
+		    UIntSet(xw->flags, ATR_DBL_UNDER);
 		    break;
+#endif
 		case 22:	/* reset 'bold' */
 		    UIntClr(xw->flags, BOLD);
+#if OPT_WIDE_ATTRS
+		    UIntClr(xw->flags, ATR_FAINT);
+#endif
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedFG(xw);
 		    });
 		    break;
+#if OPT_WIDE_ATTRS
+		case 23:	/* not italicized */
+		    setItalicFont(xw, False);
+		    UIntClr(xw->flags, ATR_ITALIC);
+		    break;
+#endif
 		case 24:
 		    UIntClr(xw->flags, UNDERLINE);
+#if OPT_WIDE_ATTRS
+		    UIntClr(xw->flags, ATR_DBL_UNDER);
+#endif
 		    if_OPT_ISO_COLORS(screen, {
 			setExtendedFG(xw);
 		    });
@@ -2863,6 +2941,11 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
 		case 28:
 		    UIntClr(xw->flags, INVISIBLE);
 		    break;
+#if OPT_WIDE_ATTRS
+		case 29:	/* not crossed out */
+		    UIntClr(xw->flags, ATR_STRIKEOUT);
+		    break;
+#endif
 		case 30:
 		case 31:
 		case 32:
@@ -7401,6 +7484,14 @@ trimSizeFromFace(char *face_name, float *face_size)
 }
 #endif
 
+static void
+initializeKeyboardType(XtermWidget xw)
+{
+    xw->keyboard.type = TScreenOf(xw)->old_fkeys
+	? keyboardIsLegacy
+	: keyboardIsDefault;
+}
+
 /* ARGSUSED */
 static void
 VTInitialize(Widget wrequest,
@@ -7642,9 +7733,7 @@ VTInitialize(Widget wrequest,
     init_Bres(screen.fastscroll);
     init_Bres(screen.old_fkeys);
     init_Bres(screen.delete_is_del);
-    wnew->keyboard.type = TScreenOf(wnew)->old_fkeys
-	? keyboardIsLegacy
-	: keyboardIsDefault;
+    initializeKeyboardType(wnew);
 #ifdef ALLOWLOGGING
     init_Bres(misc.logInhibit);
     init_Bres(misc.log_on);
@@ -8372,7 +8461,7 @@ VTDestroy(Widget w GCC_UNUSED)
 #ifdef NO_LEAKS
     XtermWidget xw = (XtermWidget) w;
     TScreen *screen = TScreenOf(xw);
-    Cardinal n;
+    Cardinal n, k;
 
     StopBlinking(screen);
 
@@ -8440,6 +8529,7 @@ VTDestroy(Widget w GCC_UNUSED)
     releaseCursorGCs(xw);
     releaseWindowGCs(xw, &(screen->fullVwin));
 #ifndef NO_ACTIVE_ICON
+    XFreeFont(screen->display, screen->fnt_icon.fs);
     releaseWindowGCs(xw, &(screen->iconVwin));
 #endif
     XtUninstallTranslations((Widget) xw);
@@ -8452,6 +8542,7 @@ VTDestroy(Widget w GCC_UNUSED)
 	XFreeCursor(screen->display, screen->hidden_cursor);
 
     xtermCloseFonts(xw, screen->fnts);
+    xtermCloseFonts(xw, screen->ifnts);
     noleaks_cachedCgs(xw);
 
     TRACE_FREE_LEAK(screen->selection_targets_8bit);
@@ -8514,6 +8605,25 @@ VTDestroy(Widget w GCC_UNUSED)
     TRACE_FREE_LEAK(xw->misc.render_font_s);
 #endif
 
+    TRACE_FREE_LEAK(xw->misc.default_font.f_n);
+    TRACE_FREE_LEAK(xw->misc.default_font.f_b);
+#if OPT_WIDE_CHARS
+    TRACE_FREE_LEAK(xw->misc.default_font.f_w);
+    TRACE_FREE_LEAK(xw->misc.default_font.f_wb);
+#endif
+
+    for (n = 0; n < NMENUFONTS; ++n) {
+	for (k = 0; k < fMAX; ++k) {
+	    if (screen->menu_font_names[n][k] !=
+		screen->cacheVTFonts.menu_font_names[n][k]) {
+		TRACE_FREE_LEAK(screen->menu_font_names[n][k]);
+		TRACE_FREE_LEAK(screen->cacheVTFonts.menu_font_names[n][k]);
+	    } else {
+		TRACE_FREE_LEAK(screen->menu_font_names[n][k]);
+	    }
+	}
+    }
+
 #if OPT_SELECT_REGEX
     for (n = 0; n < NSELECTUNITS; ++n) {
 	FREE_LEAK(screen->selectExpr[n]);
@@ -9625,8 +9735,8 @@ ShowCursor(void)
 	fg_bg = ld->color[cursor_col];
     });
 
-    fg_pix = getXtermForeground(xw, flags, extract_fg(xw, fg_bg, flags));
-    bg_pix = getXtermBackground(xw, flags, extract_bg(xw, fg_bg, flags));
+    fg_pix = getXtermForeground(xw, flags, (int) extract_fg(xw, fg_bg, flags));
+    bg_pix = getXtermBackground(xw, flags, (int) extract_bg(xw, fg_bg, flags));
 
     /*
      * If we happen to have the same foreground/background colors, choose
@@ -9817,7 +9927,9 @@ ShowCursor(void)
 		       screen->box, NBOX, CoordModePrevious);
 	} else {
 
-	    drawXtermText(xw, flags & DRAWX_MASK,
+	    drawXtermText(xw,
+			  flags & DRAWX_MASK,
+			  flags & DRAWX_MASK,
 			  currentGC, x, y,
 			  LineCharSet(screen, ld),
 			  &base, 1, 0);
@@ -9827,7 +9939,9 @@ ShowCursor(void)
 		for_each_combData(off, ld) {
 		    if (!(ld->combData[off][my_col]))
 			break;
-		    drawXtermText(xw, (flags & DRAWX_MASK) | NOBACKGROUND,
+		    drawXtermText(xw,
+				  (flags & DRAWX_MASK),
+				  NOBACKGROUND,
 				  currentGC, x, y,
 				  LineCharSet(screen, ld),
 				  ld->combData[off] + my_col,
@@ -9951,7 +10065,9 @@ HideCursor(void)
     x = LineCursorX(screen, ld, cursor_col);
     y = CursorY(screen, screen->cursorp.row);
 
-    drawXtermText(xw, flags & DRAWX_MASK,
+    drawXtermText(xw,
+		  flags & DRAWX_MASK,
+		  flags & DRAWX_MASK,
 		  currentGC, x, y,
 		  LineCharSet(screen, ld),
 		  &base, 1, 0);
@@ -9961,7 +10077,9 @@ HideCursor(void)
 	for_each_combData(off, ld) {
 	    if (!(ld->combData[off][my_col]))
 		break;
-	    drawXtermText(xw, (flags & DRAWX_MASK) | NOBACKGROUND,
+	    drawXtermText(xw,
+			  (flags & DRAWX_MASK),
+			  NOBACKGROUND,
 			  currentGC, x, y,
 			  LineCharSet(screen, ld),
 			  ld->combData[off] + my_col,
@@ -10172,6 +10290,7 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
 
     /* make cursor visible */
     screen->cursor_set = ON;
+    screen->cursor_shape = CURSOR_BLOCK;
 
     /* reset scrolling region */
     reset_margins(screen);
@@ -10213,6 +10332,7 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
 
 	TabReset(xw->tabs);
 	xw->keyboard.flags = MODE_SRM;
+	initializeKeyboardType(xw);
 #if OPT_INITIAL_ERASE
 	if (xw->keyboard.reset_DECBKM == 1)
 	    xw->keyboard.flags |= MODE_DECBKM;
@@ -10223,6 +10343,11 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
 	TRACE(("full reset DECBKM %s\n",
 	       BtoS(xw->keyboard.flags & MODE_DECBKM)));
 
+#if OPT_SCROLL_LOCK
+	xtermClearLEDs(screen);
+#endif
+	screen->title_modes = DEF_TITLE_MODES;
+	screen->pointer_mode = DEF_POINTER_MODE;
 #if OPT_SIXEL_GRAPHICS
 	if (TScreenOf(xw)->sixel_scrolling)
 	    xw->keyboard.flags |= MODE_DECSDM;
@@ -10267,6 +10392,18 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
 	screen->jumpscroll = (Boolean) (!(xw->flags & SMOOTHSCROLL));
 	update_jumpscroll();
 
+#if OPT_DEC_RECTOPS
+	screen->cur_decsace = 0;
+#endif
+#if OPT_READLINE
+	screen->click1_moves = OFF;
+	screen->paste_moves = OFF;
+	screen->dclick3_deletes = OFF;
+	screen->paste_brackets = OFF;
+	screen->paste_quotes = OFF;
+	screen->paste_literal_nl = OFF;
+#endif /* OPT_READLINE */
+
 	if (screen->c132 && (xw->flags & IN132COLUMNS)) {
 	    Dimension reqWidth = (Dimension) (80 * FontWidth(screen)
 					      + 2 * screen->border
diff --git a/configure b/configure
index f0fcecb..0ea37c7 100755
--- a/configure
+++ b/configure
@@ -775,6 +775,7 @@ Optional Features:
   --disable-tek4014       disable tek4014 emulation
   --enable-toolbar        compile-in toolbar for pulldown menus
   --disable-vt52          disable VT52 emulation
+  --disable-wide-attrs    disable wide-attribute support
   --disable-wide-chars    disable wide-character support
   --enable-16bit-chars    enable 16-bit character support
   --enable-mini-luit      enable mini-luit (built-in Latin9 support)
@@ -988,7 +989,7 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    { echo "$as_me:991: loading site script $ac_site_file" >&5
+    { echo "$as_me:992: loading site script $ac_site_file" >&5
 echo "$as_me: loading site script $ac_site_file" >&6;}
     cat "$ac_site_file" >&5
     . "$ac_site_file"
@@ -999,7 +1000,7 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:1002: loading cache $cache_file" >&5
+    { echo "$as_me:1003: loading cache $cache_file" >&5
 echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -1007,7 +1008,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { echo "$as_me:1010: creating cache $cache_file" >&5
+  { echo "$as_me:1011: creating cache $cache_file" >&5
 echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -1023,21 +1024,21 @@ for ac_var in `(set) 2>&1 |
   eval ac_new_val="\$ac_env_${ac_var}_value"
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:1026: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { echo "$as_me:1027: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:1030: error: \`$ac_var' was not set in the previous run" >&5
+      { echo "$as_me:1031: error: \`$ac_var' was not set in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:1036: error: \`$ac_var' has changed since the previous run:" >&5
+        { echo "$as_me:1037: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:1038:   former value:  $ac_old_val" >&5
+        { echo "$as_me:1039:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:1040:   current value: $ac_new_val" >&5
+        { echo "$as_me:1041:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
         ac_cache_corrupted=:
       fi;;
@@ -1056,9 +1057,9 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:1059: error: changes in the environment can compromise the build" >&5
+  { echo "$as_me:1060: error: changes in the environment can compromise the build" >&5
 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:1061: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+  { { echo "$as_me:1062: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1079,10 +1080,10 @@ esac
 echo "#! $SHELL" >conftest.sh
 echo  "exit 0"   >>conftest.sh
 chmod +x conftest.sh
-if { (echo "$as_me:1082: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1083: PATH=\".;.\"; conftest.sh") >&5
   (PATH=".;."; conftest.sh) 2>&5
   ac_status=$?
-  echo "$as_me:1085: \$? = $ac_status" >&5
+  echo "$as_me:1086: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   ac_path_separator=';'
 else
@@ -1110,7 +1111,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:1113: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+  { { echo "$as_me:1114: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1120,11 +1121,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Make sure we can run config.sub.
 $ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:1123: error: cannot run $ac_config_sub" >&5
+  { { echo "$as_me:1124: error: cannot run $ac_config_sub" >&5
 echo "$as_me: error: cannot run $ac_config_sub" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:1127: checking build system type" >&5
+echo "$as_me:1128: checking build system type" >&5
 echo $ECHO_N "checking build system type... $ECHO_C" >&6
 if test "${ac_cv_build+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1133,16 +1134,16 @@ else
 test -z "$ac_cv_build_alias" &&
   ac_cv_build_alias=`$ac_config_guess`
 test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:1136: error: cannot guess build type; you must specify one" >&5
+  { { echo "$as_me:1137: error: cannot guess build type; you must specify one" >&5
 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-  { { echo "$as_me:1140: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+  { { echo "$as_me:1141: error: $ac_config_sub $ac_cv_build_alias failed." >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1145: result: $ac_cv_build" >&5
+echo "$as_me:1146: result: $ac_cv_build" >&5
 echo "${ECHO_T}$ac_cv_build" >&6
 build=$ac_cv_build
 build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1150,7 +1151,7 @@ build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
-	echo "$as_me:1153: checking host system type" >&5
+	echo "$as_me:1154: checking host system type" >&5
 echo $ECHO_N "checking host system type... $ECHO_C" >&6
 if test "${ac_cv_host+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1159,12 +1160,12 @@ else
 test -z "$ac_cv_host_alias" &&
   ac_cv_host_alias=$ac_cv_build_alias
 ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-  { { echo "$as_me:1162: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+  { { echo "$as_me:1163: error: $ac_config_sub $ac_cv_host_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1167: result: $ac_cv_host" >&5
+echo "$as_me:1168: result: $ac_cv_host" >&5
 echo "${ECHO_T}$ac_cv_host" >&6
 host=$ac_cv_host
 host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1190,13 +1191,13 @@ else
 fi
 
 test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1193: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1194: result: Configuring for $cf_cv_system_name" >&5
 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
 
 if test ".$system_name" != ".$cf_cv_system_name" ; then
-	echo "$as_me:1197: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+	echo "$as_me:1198: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
-	{ { echo "$as_me:1199: error: \"Please remove config.cache and try again.\"" >&5
+	{ { echo "$as_me:1200: error: \"Please remove config.cache and try again.\"" >&5
 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1221,7 +1222,7 @@ ac_main_return=return
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1224: checking for $ac_word" >&5
+echo "$as_me:1225: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1236,7 +1237,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1239: found $ac_dir/$ac_word" >&5
+echo "$as_me:1240: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1244,10 +1245,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1247: result: $CC" >&5
+  echo "$as_me:1248: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1250: result: no" >&5
+  echo "$as_me:1251: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1256,7 +1257,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo "$as_me:1259: checking for $ac_word" >&5
+echo "$as_me:1260: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1271,7 +1272,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1274: found $ac_dir/$ac_word" >&5
+echo "$as_me:1275: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1279,10 +1280,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1282: result: $ac_ct_CC" >&5
+  echo "$as_me:1283: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1285: result: no" >&5
+  echo "$as_me:1286: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1295,7 +1296,7 @@ if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1298: checking for $ac_word" >&5
+echo "$as_me:1299: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1310,7 +1311,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1313: found $ac_dir/$ac_word" >&5
+echo "$as_me:1314: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1318,10 +1319,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1321: result: $CC" >&5
+  echo "$as_me:1322: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1324: result: no" >&5
+  echo "$as_me:1325: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1330,7 +1331,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1333: checking for $ac_word" >&5
+echo "$as_me:1334: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1345,7 +1346,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1348: found $ac_dir/$ac_word" >&5
+echo "$as_me:1349: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1353,10 +1354,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1356: result: $ac_ct_CC" >&5
+  echo "$as_me:1357: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1359: result: no" >&5
+  echo "$as_me:1360: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1369,7 +1370,7 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1372: checking for $ac_word" >&5
+echo "$as_me:1373: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1389,7 +1390,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
   continue
 fi
 ac_cv_prog_CC="cc"
-echo "$as_me:1392: found $ac_dir/$ac_word" >&5
+echo "$as_me:1393: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1411,10 +1412,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1414: result: $CC" >&5
+  echo "$as_me:1415: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1417: result: no" >&5
+  echo "$as_me:1418: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1425,7 +1426,7 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1428: checking for $ac_word" >&5
+echo "$as_me:1429: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1440,7 +1441,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1443: found $ac_dir/$ac_word" >&5
+echo "$as_me:1444: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1448,10 +1449,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1451: result: $CC" >&5
+  echo "$as_me:1452: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1454: result: no" >&5
+  echo "$as_me:1455: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi


Reply to: