diff options
28 files changed, 522 insertions, 248 deletions
diff --git a/programs/xterm/MANIFEST b/programs/xterm/MANIFEST index 5db9606e6..6a4e1c195 100644 --- a/programs/xterm/MANIFEST +++ b/programs/xterm/MANIFEST @@ -1,4 +1,4 @@ -MANIFEST for xterm, version xterm-159 +MANIFEST for xterm, version xterm-168 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode @@ -74,6 +74,7 @@ trace.c debugging trace functions for 'xterm' trace.h interface of trace.c ttysvr.c simple tty server for AMOEBA port of 'xterm' util.c miscellaneous utility functions for 'xterm' +uxterm wrapper script to make unicode-xterm version.h version of xterm vms.c VMS version of xterm's spawn(), etc. vms.h system headers and definitions for vms.c @@ -112,6 +113,7 @@ vttests/256colors2.pl fancy test-script for 256-colors vttests/88colors.pl sample script showing 88-colors vttests/88colors2.pl sample script showing 88-colors vttests/8colors.sh test-script to illustrate 8-colors +vttests/acolors.sh test-script to illustrate ANSI color set/query vttests/doublechars.sh test script to demonstrate doublesize chars vttests/dynamic.sh script to illustrate the dynamic colors control sequence vttests/fonts.sh script to demonstrate font-switching sequences diff --git a/programs/xterm/Tekproc.c b/programs/xterm/Tekproc.c index 36a24ce15..ccc8c55b6 100644 --- a/programs/xterm/Tekproc.c +++ b/programs/xterm/Tekproc.c @@ -3,7 +3,7 @@ * * Warning, there be crufty dragons here. */ -/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.36 2002/03/26 01:46:39 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.37 2002/04/28 19:04:19 dickey Exp $ */ /* @@ -390,7 +390,7 @@ TekInit(void) XtNright, XawChainRight, XtNbottom, XawChainBottom, #endif - 0); + (XtPointer) 0); } return (!Tfailed); } diff --git a/programs/xterm/XTerm.ad b/programs/xterm/XTerm.ad index faa59f195..bbd94fd36 100644 --- a/programs/xterm/XTerm.ad +++ b/programs/xterm/XTerm.ad @@ -3,9 +3,11 @@ ! ! ! -! $XFree86: xc/programs/xterm/XTerm.ad,v 3.22 2002/01/05 22:05:02 dickey Exp $ +! $XFree86: xc/programs/xterm/XTerm.ad,v 3.23 2002/08/12 00:36:32 dickey Exp $ -XTerm.JoinSession:False +! This is nonsense: if the xterm has no session management capabilities, +! it is useless, and if it does, it is harmful. +!XTerm.JoinSession:False *SimpleMenu*BackingStore: NotUseful *SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-* diff --git a/programs/xterm/button.c b/programs/xterm/button.c index 313d924cb..791060d86 100644 --- a/programs/xterm/button.c +++ b/programs/xterm/button.c @@ -50,7 +50,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. */ -/* $XFree86: xc/programs/xterm/button.c,v 3.68 2002/08/12 00:36:32 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/button.c,v 3.69 2002/08/24 18:54:38 dickey Exp $ */ /* button.c Handles button events in the terminal emulator. @@ -314,9 +314,9 @@ SendLocatorPosition(Widget w, XEvent * event) LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor); /* - * DECterm mouse: - * - * ESCAPE '[' event ; mask ; row ; column '&' 'w' + * DECterm mouse: + * + * ESCAPE '[' event ; mask ; row ; column '&' 'w' */ reply.a_type = CSI; @@ -592,12 +592,62 @@ InitLocatorFilter(XtermWidget w) MotionOn(screen, term); } +void +CheckLocatorPosition(Widget w, XEvent * event) +{ + TScreen *screen = &((XtermWidget) w)->screen; + int row, col; + Boolean oor; + int state; + + LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor); + + /* + * Send report if the pointer left the filter rectangle, if + * the pointer left the window, or if the filter rectangle + * had no coordinates and the pointer re-entered the window. + */ + if (oor || (screen->loc_filter_top == LOC_FILTER_POS) || + (col < screen->loc_filter_left) || + (col > screen->loc_filter_right) || + (row < screen->loc_filter_top) || + (row > screen->loc_filter_bottom)) { + /* Filter triggered - disable it */ + screen->loc_filter = FALSE; + MotionOff(screen, term); + + reply.a_type = CSI; + if (oor) { + reply.a_nparam = 1; + reply.a_param[0] = 0; /* Event - 0 = locator unavailable */ + } else { + ButtonState(state, event->xbutton.state); + + reply.a_nparam = 4; + reply.a_param[0] = 10; /* Event - 10 = locator outside filter */ + reply.a_param[1] = state; + reply.a_param[2] = row; + reply.a_param[3] = col; + } + + reply.a_inters = '&'; + reply.a_final = 'w'; + unparseseq(&reply, screen->respond); + + if (screen->locator_reset) { + MotionOff(screen, term); + screen->send_mouse_pos = MOUSE_OFF; + } + } +} +#endif /* OPT_DEC_LOCATOR */ + #if OPT_READLINE static int isClick1_clean(XEvent * event) { - register TScreen *screen = &term->screen; - register int delta; + TScreen *screen = &term->screen; + int delta; if (!(event->type == ButtonPress || event->type == ButtonRelease) /* Disable on Shift-Click-1, including the application-mouse modes */ @@ -691,8 +741,8 @@ CheckSecondPress3(XEvent * event) static int rowOnCurrentLine(int line, int *deltap) /* must be XButtonEvent */ { - register TScreen *screen = &term->screen; - register int l1, l2; + TScreen *screen = &term->screen; + int l1, l2; *deltap = 0; if (line == screen->cur_row) @@ -714,7 +764,7 @@ rowOnCurrentLine(int line, int *deltap) /* must be XButtonEvent */ static int eventRow(XEvent * event) /* must be XButtonEvent */ { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; return (event->xbutton.y - screen->border) / FontHeight(screen); } @@ -722,7 +772,7 @@ eventRow(XEvent * event) /* must be XButtonEvent */ static int eventColBetween(XEvent * event) /* must be XButtonEvent */ { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; /* Correct by half a width - we are acting on a boundary, not on a cell. */ return ((event->xbutton.x - OriginX(screen) + (FontWidth(screen) - 1) / 2) @@ -732,9 +782,9 @@ eventColBetween(XEvent * event) /* must be XButtonEvent */ static int ReadLineMovePoint(int col, int ldelta) { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; Char line[6]; - register int count = 0; + int count = 0; col += ldelta * (screen->max_col + 1) - screen->cur_col; if (col == 0) @@ -756,7 +806,7 @@ ReadLineMovePoint(int col, int ldelta) static int ReadLineDelete(int r1, int c1, int r2, int c2) { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; int del; del = c2 - c1 + (r2 - r1) * (screen->max_col + 1); @@ -768,56 +818,6 @@ ReadLineDelete(int r1, int c1, int r2, int c2) } #endif /* OPT_READLINE */ -void -CheckLocatorPosition(Widget w, XEvent * event) -{ - TScreen *screen = &((XtermWidget) w)->screen; - int row, col; - Boolean oor; - int state; - - LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor); - - /* - * Send report if the pointer left the filter rectangle, if - * the pointer left the window, or if the filter rectangle - * had no coordinates and the pointer re-entered the window. - */ - if (oor || (screen->loc_filter_top == LOC_FILTER_POS) || - (col < screen->loc_filter_left) || - (col > screen->loc_filter_right) || - (row < screen->loc_filter_top) || - (row > screen->loc_filter_bottom)) { - /* Filter triggered - disable it */ - screen->loc_filter = FALSE; - MotionOff(screen, term); - - reply.a_type = CSI; - if (oor) { - reply.a_nparam = 1; - reply.a_param[0] = 0; /* Event - 0 = locator unavailable */ - } else { - ButtonState(state, event->xbutton.state); - - reply.a_nparam = 4; - reply.a_param[0] = 10; /* Event - 10 = locator outside filter */ - reply.a_param[1] = state; - reply.a_param[2] = row; - reply.a_param[3] = col; - } - - reply.a_inters = '&'; - reply.a_final = 'w'; - unparseseq(&reply, screen->respond); - - if (screen->locator_reset) { - MotionOff(screen, term); - screen->send_mouse_pos = MOUSE_OFF; - } - } -} -#endif /* OPT_DEC_LOCATOR */ - /* ^XM-G<line+' '><col+' '> */ void DiredButton(Widget w GCC_UNUSED, @@ -825,9 +825,9 @@ DiredButton(Widget w GCC_UNUSED, String * params GCC_UNUSED, /* selections */ Cardinal * num_params GCC_UNUSED) { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; Char Line[6]; - register unsigned line, col; + unsigned line, col; if (event->type == ButtonPress || event->type == ButtonRelease) { line = (event->xbutton.y - screen->border) / FontHeight(screen); @@ -848,9 +848,9 @@ ReadLineButton(Widget w GCC_UNUSED, String * params GCC_UNUSED, /* selections */ Cardinal * num_params GCC_UNUSED) { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; Char Line[6]; - register int line, col, ldelta = 0; + int line, col, ldelta = 0; if (!(event->type == ButtonPress || event->type == ButtonRelease) || (screen->send_mouse_pos != MOUSE_OFF) || ExtendingSelection) @@ -908,10 +908,10 @@ ViButton(Widget w GCC_UNUSED, String * params GCC_UNUSED, /* selections */ Cardinal * num_params GCC_UNUSED) { - register TScreen *screen = &term->screen; + TScreen *screen = &term->screen; int pty = screen->respond; Char Line[6]; - register int line; + int line; if (event->type == ButtonPress || event->type == ButtonRelease) { @@ -943,7 +943,7 @@ HandleSelectExtend(Widget w, String * params GCC_UNUSED, Cardinal * num_params GCC_UNUSED) { - register TScreen *screen; + TScreen *screen; int row, col; if (!IsXtermWidget(w)) @@ -1349,7 +1349,7 @@ _WriteSelectionData(TScreen * screen, Char * line, int length) /* Doing this one line at a time may no longer be necessary because v_write has been re-written. */ - register Char *lag, *cp, *end; + Char *lag, *cp, *end; /* in the VMS version, if tt_pasting isn't set to TRUE then qio reads aren't blocked and an infinite loop is entered, where the @@ -1520,7 +1520,7 @@ HandleInsertSelection(Widget w, { #if OPT_READLINE int ldelta; - register TScreen *screen = &((XtermWidget) w)->screen; + TScreen *screen = &((XtermWidget) w)->screen; #endif if (SendMousePosition(w, event)) @@ -1585,7 +1585,7 @@ HandleSelectStart(Widget w, String * params GCC_UNUSED, Cardinal * num_params GCC_UNUSED) { - register TScreen *screen; + TScreen *screen; int startrow, startcol; if (!IsXtermWidget(w)) @@ -1610,7 +1610,7 @@ HandleKeyboardSelectStart(Widget w, String * params GCC_UNUSED, Cardinal * num_params GCC_UNUSED) { - register TScreen *screen; + TScreen *screen; if (!IsXtermWidget(w)) return; @@ -1620,7 +1620,7 @@ HandleKeyboardSelectStart(Widget w, } static void -TrackDown(register XButtonEvent * event) +TrackDown(XButtonEvent * event) { int startrow, startcol; @@ -1882,11 +1882,10 @@ ExtendExtend(int row, int col) } void -HandleStartExtend( - Widget w, - XEvent * event, /* must be XButtonEvent* */ - String * params, /* unused */ - Cardinal * num_params) /* unused */ +HandleStartExtend(Widget w, + XEvent * event, /* must be XButtonEvent* */ + String * params, /* unused */ + Cardinal * num_params) /* unused */ { do_start_extend(w, event, params, num_params, False); } @@ -1901,11 +1900,11 @@ HandleKeyboardStartExtend(Widget w, } void -ScrollSelection(register TScreen * screen, register int amount) +ScrollSelection(TScreen * screen, int amount) { - register int minrow = -screen->savedlines - screen->topline; - register int maxrow = screen->max_row - screen->topline; - register int maxcol = screen->max_col; + int minrow = -screen->savedlines - screen->topline; + int maxrow = screen->max_row - screen->topline; + int maxcol = screen->max_col; #define scroll_update_one(row, col) \ row += amount; \ @@ -1971,8 +1970,8 @@ iswide(int i) #endif static void -PointToRowCol(register int y, - register int x, +PointToRowCol(int y, + int x, int *r, int *c) /* Convert pixel coordinates to character coordinates. @@ -1980,8 +1979,8 @@ PointToRowCol(register int y, Columns are clipped between to be 0 or greater, but are not clipped to some maximum value. */ { - register TScreen *screen = &term->screen; - register int row, col; + TScreen *screen = &term->screen; + int row, col; row = (y - screen->border) / FontHeight(screen); if (row < firstValidRow) @@ -2010,11 +2009,11 @@ PointToRowCol(register int y, } static int -LastTextCol(register int row) +LastTextCol(int row) { - register TScreen *screen = &term->screen; - register int i; - register Char *ch; + TScreen *screen = &term->screen; + int i; + Char *ch; if ((row += screen->topline) + screen->savedlines >= 0) { for (i = screen->max_col, @@ -2113,10 +2112,9 @@ static int charClass[256] = /* *INDENT-ON* */ int -SetCharacterClassRange( - register int low, /* in range of [0..255] */ - register int high, - register int value) /* arbitrary */ +SetCharacterClassRange(int low, /* in range of [0..255] */ + int high, + int value) /* arbitrary */ { if (low < 0 || high > 255 || high < low) @@ -2158,7 +2156,6 @@ class_of(TScreen * screen, int row, int col) * sets startSRow startSCol endSRow endSCol * ensuring that they have legal values */ - static void ComputeSelect(int startRow, int startCol, @@ -2166,9 +2163,9 @@ ComputeSelect(int startRow, int endCol, Bool extend) { - register TScreen *screen = &term->screen; - register int length; - register int cclass; + TScreen *screen = &term->screen; + int length; + int cclass; TRACE(("ComputeSelect(startRow=%d, startCol=%d, endRow=%d, endCol=%d, %sextend)\n", startRow, startCol, endRow, endCol, extend ? "" : "no")); @@ -2309,14 +2306,14 @@ ComputeSelect(int startRow, } void -TrackText(register int frow, - register int fcol, - register int trow, - register int tcol) +TrackText(int frow, + int fcol, + int trow, + int tcol) /* Guaranteed (frow, fcol) <= (trow, tcol) */ { - register int from, to; - register TScreen *screen = &term->screen; + int from, to; + TScreen *screen = &term->screen; int old_startrow, old_startcol, old_endrow, old_endcol; TRACE(("TrackText(frow=%d, fcol=%d, trow=%d, tcol=%d)\n", @@ -2360,14 +2357,14 @@ TrackText(register int frow, } static void -ReHiliteText(register int frow, - register int fcol, - register int trow, - register int tcol) +ReHiliteText(int frow, + int fcol, + int trow, + int tcol) /* Guaranteed that (frow, fcol) <= (trow, tcol) */ { - register TScreen *screen = &term->screen; - register int i; + TScreen *screen = &term->screen; + int i; if (frow < 0) frow = fcol = 0; @@ -2405,8 +2402,8 @@ SaltTextAway(int crow, int ccol, int row, int col, /* Guaranteed that (crow, ccol) <= (row, col), and that both points are valid (may have row = screen->max_row+1, col = 0) */ { - register TScreen *screen = &term->screen; - register int i, j = 0; + TScreen *screen = &term->screen; + int i, j = 0; int eol; char *line; Char *lp; @@ -2665,8 +2662,8 @@ ConvertSelection(Widget w, static void LoseSelection(Widget w, Atom * selection) { - register TScreen *screen; - register Atom *atomP; + TScreen *screen; + Atom *atomP; Cardinal i; if (!IsXtermWidget(w)) @@ -2717,7 +2714,7 @@ SelectionDone(Widget w GCC_UNUSED, } static void -_OwnSelection(register XtermWidget termw, +_OwnSelection(XtermWidget termw, String * selections, Cardinal count) { @@ -2799,7 +2796,7 @@ _OwnSelection(register XtermWidget termw, } void -DisownSelection(register XtermWidget termw) +DisownSelection(XtermWidget termw) { Atom *atoms = termw->screen.selection_atoms; Cardinal count = termw->screen.selection_count; @@ -2847,12 +2844,12 @@ DisownSelection(register XtermWidget termw) /* returns number of chars in line from scol to ecol out */ /* ARGSUSED */ static int -Length(register TScreen * screen GCC_UNUSED, - register int row, - register int scol, - register int ecol) +Length(TScreen * screen GCC_UNUSED, + int row, + int scol, + int ecol) { - register int lastcol = LastTextCol(row); + int lastcol = LastTextCol(row); if (ecol > lastcol) ecol = lastcol; @@ -2865,7 +2862,7 @@ SaveText(TScreen * screen, int row, int scol, int ecol, - register Char * lp, /* pointer to where to put the text */ + Char * lp, /* pointer to where to put the text */ int *eol) { int i = 0; @@ -2964,7 +2961,7 @@ BtnCode(XButtonEvent * event, int button) #define MOUSE_LIMIT (255 - 32) static void -EditorButton(register XButtonEvent * event) +EditorButton(XButtonEvent * event) { TScreen *screen = &term->screen; int pty = screen->respond; diff --git a/programs/xterm/charproc.c b/programs/xterm/charproc.c index 0a1de82ed..f61611ee2 100644 --- a/programs/xterm/charproc.c +++ b/programs/xterm/charproc.c @@ -2,7 +2,7 @@ * $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $ */ -/* $XFree86: xc/programs/xterm/charproc.c,v 3.132 2002/08/17 19:52:25 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/charproc.c,v 3.133 2002/08/24 18:54:38 dickey Exp $ */ /* @@ -590,6 +590,7 @@ static XtResource resources[] = #if OPT_WIDE_CHARS Ires(XtNutf8, XtCUtf8, screen.utf8_mode, 3), Bres(XtNwideChars, XtCWideChars, screen.wide_chars, FALSE), + Bres(XtNcjkWidth, XtCCjkWidth, misc.cjk_width, FALSE), Bres(XtNvt100Graphics, XtCVT100Graphics, screen.vt100_graphics, TRUE), Sres(XtNwideBoldFont, XtCWideBoldFont, misc.f_wb, DEFWIDEBOLDFONT), Sres(XtNwideFont, XtCWideFont, misc.f_w, DEFWIDEFONT), @@ -3145,7 +3146,7 @@ HandleStructNotify(Widget w GCC_UNUSED, if (Vwin->menu_bar) { XtVaGetValues(Vwin->menu_bar, XtNheight, &Vwin->menu_height, - NULL); + (XtPointer) 0); TRACE(("...menu_height %d\n", Vwin->menu_height)); } } @@ -3764,7 +3765,6 @@ window_ops(XtermWidget termw) XWindowAttributes win_attrs; XTextProperty text; unsigned int value_mask; - Position x, y; unsigned root_width, root_height; switch (param[0]) { @@ -3831,13 +3831,15 @@ window_ops(XtermWidget termw) break; case 13: /* Report the window's position */ - XtTranslateCoords(toplevel, 0, 0, &x, &y); + XGetWindowAttributes(screen->display, + WMFrameWindow(termw), + &win_attrs); reply.a_type = CSI; reply.a_pintro = 0; reply.a_nparam = 3; reply.a_param[0] = 3; - reply.a_param[1] = x; - reply.a_param[2] = y; + reply.a_param[1] = win_attrs.x; + reply.a_param[2] = win_attrs.y; reply.a_inters = 0; reply.a_final = 't'; unparseseq(&reply, screen->respond); @@ -4795,6 +4797,7 @@ VTInitialize(Widget wrequest, init_Bres(screen.vt100_graphics); init_Bres(screen.wide_chars); + init_Bres(misc.cjk_width); if (request->screen.utf8_mode) { wnew->screen.wide_chars = True; wnew->screen.utf8_mode = 2; /* disable further change */ @@ -5065,7 +5068,7 @@ VTRealize(Widget w, unsigned long mask; XGCValues xgcv; - XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, NULL); + XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0); xtermComputeFontInfo(screen, &(screen->iconVwin), screen->fnt_icon, 0); /* since only one client is permitted to select for Button @@ -5085,7 +5088,9 @@ VTRealize(Widget w, InputOutput, CopyFromParent, *valuemask | CWBitGravity | CWBorderPixel, values); - XtVaSetValues(shell, XtNiconWindow, screen->iconVwin.window, NULL); + XtVaSetValues(shell, + XtNiconWindow, screen->iconVwin.window, + (XtPointer) 0); XtRegisterDrawable(XtDisplay(term), screen->iconVwin.window, w); mask = (GCFont | GCForeground | GCBackground | diff --git a/programs/xterm/input.c b/programs/xterm/input.c index 41121c727..c6b0f4746 100644 --- a/programs/xterm/input.c +++ b/programs/xterm/input.c @@ -2,7 +2,7 @@ * $Xorg: input.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/input.c,v 3.57 2002/04/28 19:04:20 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/input.c,v 3.58 2002/08/24 18:54:38 dickey Exp $ */ /* * Copyright 1999-2001,2002 by Thomas E. Dickey @@ -707,8 +707,7 @@ Input(TKeyboard * keyboard, * metaSendsEcape is true. Like eightBitInput, except * that it is not associated with terminal settings. */ - if (eightbit - && screen->meta_sends_esc + if (screen->meta_sends_esc && ((event->state & term->misc.meta_left) != 0 || (event->state & term->misc.meta_right)) != 0) { TRACE(("...input-char is modified by META\n")); diff --git a/programs/xterm/main.c b/programs/xterm/main.c index 88519b74c..c8f6fc55f 100644 --- a/programs/xterm/main.c +++ b/programs/xterm/main.c @@ -89,7 +89,7 @@ SOFTWARE. ******************************************************************/ -/* $XFree86: xc/programs/xterm/main.c,v 3.156tsi Exp $ */ +/* $XFree86: xc/programs/xterm/main.c,v 3.156 2002/08/24 18:54:38 dickey Exp $ */ /* main.c */ @@ -125,6 +125,7 @@ SOFTWARE. #if OPT_WIDE_CHARS #include <charclass.h> +#include <wcwidth.h> #endif #ifdef AMOEBA @@ -357,6 +358,12 @@ ttyslot() #define ttyslot() 1 #endif /* apollo */ +#if defined(UTMPX_FOR_UTMP) +#define UTMP_STR utmpx +#else +#define UTMP_STR utmp +#endif + #if defined(USE_UTEMPTER) #include <utempter.h> @@ -444,14 +451,14 @@ extern char *ttyname(); extern char *ptsname(int); #endif -#ifdef __cplusplus +#ifdef __cplusplus extern "C" { #endif extern int tgetent(char *ptr, char *name); extern char *tgetstr(char *name, char **ptr); -#ifdef __cplusplus +#ifdef __cplusplus } #endif #ifndef VMS @@ -941,6 +948,8 @@ static XrmOptionDescRec optionDescList[] = { #if OPT_WIDE_CHARS {"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"}, {"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"}, +{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"}, +{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"}, #endif {"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"}, {"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"}, @@ -956,8 +965,9 @@ static XrmOptionDescRec optionDescList[] = { {"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL}, {"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL}, {"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL}, +{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL}, /* bogus old compatibility stuff for which there are - standard XtAppInitialize options now */ + standard XtOpenApplication options now */ {"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL}, {"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL}, {"-T", ".title", XrmoptionSepArg, (caddr_t) NULL}, @@ -1083,6 +1093,7 @@ static OptionHelp options[] = { { "-/+pob", "turn on/off pop on bell" }, #if OPT_WIDE_CHARS { "-/+wc", "turn on/off wide-character mode" }, +{ "-/+cjk_width", "turn on/off legacy CJK width convention" }, #endif { "-/+wf", "turn on/off wait for map before command exec" }, { "-e command args ...", "command to execute" }, @@ -1098,6 +1109,7 @@ static OptionHelp options[] = { { "-C", "intercept console messages (not supported)" }, #endif { "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" }, +{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" }, #if OPT_ZICONBEEP { "-ziconbeep percent", "beep and flag icon of window having hidden output" }, #endif @@ -1287,6 +1299,28 @@ int number_ourTopLevelShellArgs = 2; Bool waiting_for_initial_map; +static void +die_callback(Widget w GCC_UNUSED, + XtPointer client_data GCC_UNUSED, + XtPointer call_data GCC_UNUSED) +{ + Cleanup(0); +} + +static void +save_callback(Widget w GCC_UNUSED, + XtPointer client_data GCC_UNUSED, + XtPointer call_data) +{ + XtCheckpointToken token = (XtCheckpointToken) call_data; + /* we have nothing to save */ + token->save_success = True; +} + +#if OPT_WIDE_CHARS +int (*my_wcwidth) (wchar_t); +#endif + /* * DeleteWindow(): Action proc to implement ICCCM delete_window. */ @@ -1503,6 +1537,7 @@ main(int argc, char *argv[]ENVP_ARG) register TScreen *screen; int mode; char *my_class = DEFCLASS; + Window winToEmbedInto = None; #ifndef AMOEBA /* extra length in case longer tty name like /dev/ttyq255 */ @@ -1534,7 +1569,7 @@ main(int argc, char *argv[]ENVP_ARG) /* Do these first, since we may not be able to open the display */ ProgramName = argv[0]; TRACE_OPTS(options, optionDescList, XtNumber(optionDescList)); - TRACE_ARGV("Before XtAppInitialize", argv); + TRACE_ARGV("Before XtOpenApplication", argv); if (argc > 1) { int n; int unique = 2; @@ -1851,11 +1886,12 @@ main(int argc, char *argv[]ENVP_ARG) #endif XtSetErrorHandler(xt_error); - toplevel = XtAppInitialize(&app_con, my_class, - optionDescList, - XtNumber(optionDescList), - &argc, argv, fallback_resources, - NULL, 0); + toplevel = XtOpenApplication(&app_con, my_class, + optionDescList, + XtNumber(optionDescList), + &argc, argv, fallback_resources, + sessionShellWidgetClass, + NULL, 0); XtSetErrorHandler((XtErrorHandler) 0); XtGetApplicationResources(toplevel, (XtPointer) & resource, @@ -1951,7 +1987,7 @@ main(int argc, char *argv[]ENVP_ARG) #endif /* Parse the rest of the command line */ - TRACE_ARGV("After XtAppInitialize", argv); + TRACE_ARGV("After XtOpenApplication", argv); for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-') Syntax(*argv); @@ -2001,6 +2037,17 @@ main(int argc, char *argv[]ENVP_ARG) Syntax(*argv); command_to_exec = ++argv; break; + case 'i': + if (argc <= 1) { + Syntax(*argv); + } else { + char *endPtr; + --argc; + ++argv; + winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10); + } + break; + default: Syntax(*argv); } @@ -2019,7 +2066,7 @@ main(int argc, char *argv[]ENVP_ARG) XtNright, XawChainRight, XtNbottom, XawChainBottom, #endif - 0); + (XtPointer) 0); /* this causes the initialize method to be called */ #if OPT_HP_FUNC_KEYS @@ -2044,6 +2091,15 @@ main(int argc, char *argv[]ENVP_ARG) inhibit |= I_TEK; #endif +#if OPT_WIDE_CHARS + my_wcwidth = &mk_wcwidth; + if (term->misc.cjk_width) + my_wcwidth = &mk_wcwidth_cjk; +#endif + + XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL); + XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL); + /* * Set title and icon name if not specified */ @@ -2244,6 +2300,19 @@ main(int argc, char *argv[]ENVP_ARG) StartLog(screen); } #endif + + if (winToEmbedInto != None) { + XtRealizeWidget(toplevel); + /* + * This should probably query the tree or check the attributes of + * winToEmbedInto in order to verify that it exists, but I'm still not + * certain what is the best way to do it -GPS + */ + XReparentWindow(XtDisplay(toplevel), + XtWindow(toplevel), + winToEmbedInto, 0, 0); + } + for (;;) { #if OPT_TEK4014 if (screen->TekEmu) @@ -2716,17 +2785,9 @@ spawn(void) struct passwd *pw = NULL; char *login_name = NULL; #ifdef HAVE_UTMP -#if defined(UTMPX_FOR_UTMP) - struct utmpx utmp; -#else - struct utmp utmp; -#endif + struct UTMP_STR utmp; #ifdef USE_SYSV_UTMP -#if defined(UTMPX_FOR_UTMP) - struct utmpx *utret; -#else - struct utmp *utret; -#endif + struct UTMP_STR *utret; #endif #ifdef USE_LASTLOG struct lastlog lastlog; @@ -3145,7 +3206,7 @@ spawn(void) /* Now is the time to set up our process group and * open up the pty slave. */ -#ifdef USE_SYSV_PGRP +#ifdef USE_SYSV_PGRP #if defined(CRAY) && (OSMAJORVERSION > 5) (void) setsid(); #else @@ -3171,7 +3232,7 @@ spawn(void) /* make /dev/tty work */ ioctl(tty, TCSETCTTY, 0); #endif -#ifdef USE_SYSV_PGRP +#ifdef USE_SYSV_PGRP /* We need to make sure that we are actually * the process group leader for the pty. If * we are, then we should now be able to open @@ -4075,9 +4136,11 @@ spawn(void) #ifdef USE_LOGIN_DASH_P if (term->misc.login_shell && pw && added_utmp_entry) - execl(bin_login, "login", "-p", "-f", login_name, 0); + execl(bin_login, "login", "-p", "-f", login_name, (void *) 0); #endif - execlp(ptr, (term->misc.login_shell ? shname_minus : shname), 0); + execlp(ptr, + (term->misc.login_shell ? shname_minus : shname), + (void *) 0); /* Exec failed. */ fprintf(stderr, "%s: Could not exec %s: %s\n", xterm_name, @@ -4591,13 +4654,8 @@ Exit(int n) removeFromUtmp(); #elif defined(HAVE_UTMP) #ifdef USE_SYSV_UTMP -#if defined(UTMPX_FOR_UTMP) - struct utmpx utmp; - struct utmpx *utptr; -#else - struct utmp utmp; - struct utmp *utptr; -#endif + struct UTMP_STR utmp; + struct UTMP_STR *utptr; #if defined(WTMP) && !defined(SVR4) && !(defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))) int fd; /* for /etc/wtmp */ #endif diff --git a/programs/xterm/menu.c b/programs/xterm/menu.c index 65ee2e95c..f3a8f0664 100644 --- a/programs/xterm/menu.c +++ b/programs/xterm/menu.c @@ -45,7 +45,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/programs/xterm/menu.c,v 3.46 2002/04/28 19:04:21 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/menu.c,v 3.47 2002/08/12 00:36:33 dickey Exp $ */ #include <xterm.h> #include <data.h> @@ -1165,7 +1165,7 @@ do_activeicon(Widget gw GCC_UNUSED, term->misc.active_icon = !term->misc.active_icon; XtVaSetValues(shell, XtNiconWindow, term->misc.active_icon ? screen->iconVwin.window : None, - NULL); + (XtPointer) 0); update_activeicon(); } } @@ -1497,9 +1497,9 @@ HandlePrintScreen(Widget w, /* ARGSUSED */ void HandlePrintControlMode(Widget w, - XEvent * event GCC_UNUSED, - String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + XEvent * event GCC_UNUSED, + String * params GCC_UNUSED, + Cardinal * param_count GCC_UNUSED) { do_print_redir(w, (XtPointer) 0, (XtPointer) 0); } @@ -2067,7 +2067,7 @@ SetItemSensitivity(Widget mi, XtArgVal val) */ static void InitPopup(Widget gw, - XtPointer closure GCC_UNUSED, + XtPointer closure, XtPointer data GCC_UNUSED) { String params[2]; @@ -2092,12 +2092,12 @@ SetupShell(Widget * menus, MenuList * shell, Widget * menu_tops, int n, int m) simpleMenuWidgetClass, *menus, XtNgeometry, NULL, - NULL); + (XtPointer) 0); XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name); XtVaGetValues(shell[n].w, XtNlabel, &external_name, - NULL); + (XtPointer) 0); TRACE(("...SetupShell(%s) -> %s -> %#lx\n", menu_names[n].internal_name, @@ -2113,7 +2113,7 @@ SetupShell(Widget * menus, MenuList * shell, Widget * menu_tops, int n, int m) : 0), XtNmenuName, menu_names[n].internal_name, XtNlabel, external_name, - NULL); + (XtPointer) 0); } #endif @@ -2137,7 +2137,7 @@ SetupMenus(Widget shell, Widget * forms, Widget * menus) #if OPT_TOOLBAR *forms = XtVaCreateManagedWidget("form", formWidgetClass, shell, - NULL); + (XtPointer) 0); xtermAddInput(*forms); /* @@ -2153,7 +2153,7 @@ SetupMenus(Widget shell, Widget * forms, Widget * menus) XtNbottom, XawChainTop, XtNleft, XawChainLeft, XtNright, XawChainLeft, - NULL); + (XtPointer) 0); if (shell == toplevel) { /* vt100 */ for (n = mainMenu; n <= fontMenu; n++) { diff --git a/programs/xterm/misc.c b/programs/xterm/misc.c index ceaad821f..6d4c4c461 100644 --- a/programs/xterm/misc.c +++ b/programs/xterm/misc.c @@ -2,7 +2,7 @@ * $Xorg: misc.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/misc.c,v 3.68 2002/04/28 19:04:21 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/misc.c,v 3.69 2002/06/01 00:54:49 dickey Exp $ */ /* * @@ -591,6 +591,31 @@ HandleBellPropertyChange( } } +Window +WMFrameWindow(XtermWidget termw) +{ + Window win_root, win_current, *children; + Window win_parent = 0; + unsigned int nchildren; + + win_current = XtWindow(termw); + + /* find the parent which is child of root */ + do { + if (win_parent) + win_current = win_parent; + XQueryTree((&termw->screen)->display, + win_current, + &win_root, + &win_parent, + &children, + &nchildren); + XFree(children); + } while (win_root != win_parent); + + return win_current; +} + #if OPT_MAXIMIZE /*ARGSUSED*/ void @@ -677,7 +702,6 @@ RequestMaximize(XtermWidget termw, int maximize) { register TScreen *screen = &termw->screen; XWindowAttributes win_attrs; - Position root_x, root_y; unsigned root_width, root_height; if (maximize) { @@ -685,16 +709,15 @@ RequestMaximize(XtermWidget termw, int maximize) if (QueryMaximize(screen, &root_width, &root_height)) { if (XGetWindowAttributes(screen->display, - VShellWindow, + WMFrameWindow(termw), &win_attrs)) { - XtTranslateCoords(toplevel, 0, 0, &root_x, &root_y); if (screen->restore_data != True || screen->restore_width != root_width || screen->restore_height != root_height) { screen->restore_data = True; - screen->restore_x = root_x - win_attrs.x; - screen->restore_y = root_y - win_attrs.y; + screen->restore_x = win_attrs.x; + screen->restore_y = win_attrs.y; screen->restore_width = win_attrs.width; screen->restore_height = win_attrs.height; TRACE(("HandleMaximize: save window position %d,%d size %d,%d\n", @@ -1033,7 +1056,7 @@ StartLog(register TScreen * screen) setgid(screen->gid); setuid(screen->uid); - execl(shell, shell, "-c", &screen->logfile[1], 0); + execl(shell, shell, "-c", &screen->logfile[1], (void *) 0); fprintf(stderr, "%s: Can't exec `%s'\n", xterm_name, &screen->logfile[1]); @@ -1225,10 +1248,9 @@ find_closest_color(Display * display, Colormap cmap, XColor * def) } static Boolean -AllocateAnsiColor( - XtermWidget pTerm, - ColorRes * res, - char *spec) +AllocateAnsiColor(XtermWidget pTerm, + ColorRes * res, + char *spec) { XColor def; register TScreen *screen = &pTerm->screen; @@ -1238,7 +1260,8 @@ AllocateAnsiColor( && (XAllocColor(screen->display, cmap, &def) || find_closest_color(screen->display, cmap, &def))) { SET_COLOR_RES(res, def.pixel); - TRACE(("AllocateAnsiColor %s (pixel %#lx)\n", spec, def.pixel)); + TRACE(("AllocateAnsiColor[%d] %s (pixel %#lx)\n", + (res - screen->Acolors), spec, def.pixel)); return (TRUE); } TRACE(("AllocateAnsiColor %s (failed)\n", spec)); @@ -1250,6 +1273,8 @@ Pixel xtermGetColorRes(ColorRes * res) { if (!res->mode) { + TRACE(("xtermGetColorRes for Acolors[%d]\n", + res - term->screen.Acolors)); if (AllocateAnsiColor(term, res, res->resource)) { res->mode = True; } else { @@ -1293,12 +1318,15 @@ ChangeAnsiColorRequest( } if (!strcmp(name, "?")) ReportAnsiColorRequest(pTerm, color, final); - else if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name)) - break; - /* FIXME: free old color somehow? We aren't for the other color - * change style (dynamic colors). - */ - r = True; + else { + TRACE(("ChangeAnsiColor for Acolors[%d]\n", color)); + if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name)) + break; + /* FIXME: free old color somehow? We aren't for the other color + * change style (dynamic colors). + */ + r = True; + } } if (r) ChangeAnsiColors(pTerm); @@ -2090,6 +2118,8 @@ Cleanup(int code) } } + XtVaSetValues(toplevel, XtNjoinSession, False); + if (screen->pid > 1) { (void) kill_process_group(screen->pid, SIGHUP); } diff --git a/programs/xterm/os2main.c b/programs/xterm/os2main.c index 6c903249d..4aa0d047b 100644 --- a/programs/xterm/os2main.c +++ b/programs/xterm/os2main.c @@ -5,7 +5,7 @@ #ifndef lint static char *rid = "$XConsortium: main.c,v 1.227.1.2 95/06/29 18:13:15 kaleb Exp $"; #endif /* lint */ -/* $XFree86: xc/programs/xterm/os2main.c,v 3.52 2002/06/01 00:54:49 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/os2main.c,v 3.53 2002/08/17 19:52:26 dickey Exp $ */ /*********************************************************** @@ -72,6 +72,10 @@ SOFTWARE. #include <X11/Xlocale.h> #endif +#if OPT_WIDE_CHARS +#include <wcwidth.h> +#endif + #if OPT_TOOLBAR #if defined(HAVE_LIB_XAW) @@ -450,6 +454,8 @@ static XrmOptionDescRec optionDescList[] = { #if OPT_WIDE_CHARS {"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"}, {"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"}, +{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"}, +{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"}, #endif {"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"}, {"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"}, @@ -578,6 +584,7 @@ static OptionHelp options[] = { { "-/+pob", "turn on/off pop on bell" }, #if OPT_WIDE_CHARS { "-/+wc", "turn on/off wide-character mode" }, +{ "-/+cjk_width", "turn on/off legacy CJK width convention" }, #endif { "-/+wf", "turn on/off wait for map before command exec" }, { "-e command args ...", "command to execute" }, @@ -734,6 +741,10 @@ int number_ourTopLevelShellArgs = 2; Bool waiting_for_initial_map; +#if OPT_WIDE_CHARS +int (*my_wcwidth) (wchar_t); +#endif + /* * DeleteWindow(): Action proc to implement ICCCM delete_window. */ @@ -1000,7 +1011,7 @@ main(int argc, char **argv ENVP_ARG) XtNright, XawChainRight, XtNbottom, XawChainBottom, #endif - 0); + (XtPointer) 0); /* this causes the initialize method to be called */ #if OPT_HP_FUNC_KEYS @@ -1024,6 +1035,11 @@ main(int argc, char **argv ENVP_ARG) if (term->misc.tekInhibit) inhibit |= I_TEK; #endif +#if OPT_WIDE_CHARS + my_wcwidth = &mk_wcwidth; + if (term->misc.cjk_width) + my_wcwidth = &mk_wcwidth_cjk; +#endif /* * Set title and icon name if not specified diff --git a/programs/xterm/ptyx.h b/programs/xterm/ptyx.h index e0d5bae0b..2e62374db 100644 --- a/programs/xterm/ptyx.h +++ b/programs/xterm/ptyx.h @@ -2,7 +2,7 @@ * $Xorg: ptyx.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/ptyx.h,v 3.96 2002/08/17 19:52:27 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/ptyx.h,v 3.97 2002/08/24 18:54:39 dickey Exp $ */ /* * Copyright 1999,2000,2001,2002 by Thomas E. Dickey @@ -658,7 +658,7 @@ typedef struct { /* Define a fake XK code, we need it for the fake color response in * xtermcapKeycode(). */ -#ifdef OPT_TCAP_QUERY +#if OPT_TCAP_QUERY # define XK_COLORS 0x0003 #endif @@ -1314,7 +1314,7 @@ typedef struct { XftFont *renderFontBold; XftDraw *renderDraw; #endif -#ifdef OPT_INPUT_METHOD +#if OPT_INPUT_METHOD XFontSet fs; /* fontset for XIM preedit */ int fs_ascent; /* ascent of fs */ #endif @@ -1375,6 +1375,7 @@ typedef struct _Misc { #if OPT_WIDE_CHARS char *f_w; char *f_wb; + Boolean cjk_width; /* true when CJK width convention is turned on */ #endif #if OPT_LUIT_PROG Boolean callfilter; /* true to invoke luit */ diff --git a/programs/xterm/scrollbar.c b/programs/xterm/scrollbar.c index 1991aa8cb..724b31e2d 100644 --- a/programs/xterm/scrollbar.c +++ b/programs/xterm/scrollbar.c @@ -2,7 +2,7 @@ * $Xorg: scrollbar.c,v 1.4 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.32 2002/03/26 01:46:40 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.33 2002/04/28 19:04:21 dickey Exp $ */ /* * Copyright 2000-2001,2002 by Thomas E. Dickey @@ -183,7 +183,7 @@ ResizeScreen(XtermWidget xw, int min_width, int min_height) XtNheightInc, FontHeight(screen), XtNminWidth, min_width + FontWidth(screen), XtNminHeight, min_height + FontHeight(screen), - NULL); + (XtPointer) 0); reqWidth = screen->fullVwin.f_width * (screen->max_col + 1) + min_width; reqHeight = screen->fullVwin.f_height * (screen->max_row + 1) + min_height; @@ -435,7 +435,7 @@ ScrollBarOn(XtermWidget xw, int init, int doalloc) && screen->fullVwin.fullwidth < term->core.width) XtVaSetValues(screen->scrollWidget, XtNx, screen->fullVwin.fullwidth - screen->scrollWidget->core.border_width, - NULL); + (XtPointer) 0); #endif XtMapWidget(screen->scrollWidget); diff --git a/programs/xterm/trace.c b/programs/xterm/trace.c index 3dcc80d58..d138e65ea 100644 --- a/programs/xterm/trace.c +++ b/programs/xterm/trace.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/xterm/trace.c,v 3.13 2001/10/24 01:21:25 dickey Exp $ + * $XFree86: xc/programs/xterm/trace.c,v 3.14 2001/11/05 02:07:16 dickey Exp $ */ /************************************************************ @@ -187,7 +187,7 @@ TraceTranslations(const char *name, Widget w) XtVaGetValues(w, XtNtranslations, &xlations, XtNaccelerators, &xcelerat, - NULL); + (XtPointer) 0); TRACE(("... xlations %#08lx\n", (long) xlations)); TRACE(("... xcelerat %#08lx\n", (long) xcelerat)); result = _XtPrintXlations(w, xlations, xcelerat, True); @@ -365,7 +365,7 @@ TraceOptions(OptionHelp * options, XrmOptionDescRec * resources, Cardinal res_co } } - TRACE(("Resource list items that will be ignored by XtAppInitialize:\n")); + TRACE(("Resource list items that will be ignored by XtOpenApplication:\n")); for (j = 0; j < res_count; j++) { switch (res_array[j].argKind) { case XrmoptionSkipArg: diff --git a/programs/xterm/version.h b/programs/xterm/version.h index c4d390464..31a8a173f 100644 --- a/programs/xterm/version.h +++ b/programs/xterm/version.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/xterm/version.h,v 3.78 2002/03/26 01:46:40 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/version.h,v 3.79 2002/08/24 18:54:39 dickey Exp $ */ /* * These definitions are used to build the string that's printed in response to @@ -6,5 +6,5 @@ * XFree86 to which this version of xterm has been built. The number in * parentheses is my patch number (T.Dickey). */ -#define XTERM_PATCH 167 -#define XFREE86_VERSION "XFree86 4.2.0" +#define XTERM_PATCH 168 +#define XFREE86_VERSION "XFree86 4.2.1" diff --git a/programs/xterm/vttests/16colors.sh b/programs/xterm/vttests/16colors.sh index fc362893b..a3589f8e4 100644 --- a/programs/xterm/vttests/16colors.sh +++ b/programs/xterm/vttests/16colors.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/16colors.sh,v 1.2 1999/04/25 10:03:08 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/16colors.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Show a simple 16-color test pattern. It is a little more confusing than @@ -12,6 +12,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/8colors.sh b/programs/xterm/vttests/8colors.sh index 65f69cfc6..8cf402f0d 100644 --- a/programs/xterm/vttests/8colors.sh +++ b/programs/xterm/vttests/8colors.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/8colors.sh,v 1.2 1999/04/25 10:03:08 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/8colors.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Show a simple 8-color test pattern @@ -9,6 +9,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/acolors.sh b/programs/xterm/vttests/acolors.sh new file mode 100755 index 000000000..6f06fd1db --- /dev/null +++ b/programs/xterm/vttests/acolors.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ +# +# -- Thomas Dickey (1999/3/27) +# Demonstrate the use of the control sequence for changing ANSI colors. + +ESC="" +CMD='echo' +OPT='-n' +SUF='' +TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && +for verb in printf print ; do + rm -f $TMP + eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null + if test -f $TMP ; then + if test ! -s $TMP ; then + CMD="$verb" + OPT= + SUF='\c' + break + fi + fi +done +rm -f $TMP + +LIST="00 30 80 d0 ff" + +exec </dev/tty +old=`stty -g` +stty raw -echo min 0 time 5 + +$CMD $OPT "${ESC}]4;4;?${SUF}" > /dev/tty +read original +stty $old +original=${original}${SUF} + +trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 +$CMD "${ESC}[0;1;34mThis message is BLUE" +$CMD "${ESC}[0;1;31mThis message is RED ${ESC}[0;31m(sometimes)" +$CMD "${ESC}[0;1;32mThis message is GREEN${ESC}[0m" +while true +do + for R in $LIST + do + for G in $LIST + do + for B in $LIST + do + # color "9" is bold-red + test $R != 00 && test $G = 00 && test $B = 00 && $CMD $OPT "" >/dev/tty + $CMD $OPT "${ESC}]4;9;rgb:$R/$G/$B${SUF}" >/dev/tty + sleep 1 + done + done + done +done diff --git a/programs/xterm/vttests/doublechars.sh b/programs/xterm/vttests/doublechars.sh index ea7b28e9f..b167a3a97 100644 --- a/programs/xterm/vttests/doublechars.sh +++ b/programs/xterm/vttests/doublechars.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/doublechars.sh,v 1.2 1999/09/25 14:38:51 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/doublechars.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/7/7) # Illustrate the use of double-size characters by drawing successive lines in @@ -13,6 +13,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/dynamic.sh b/programs/xterm/vttests/dynamic.sh index 0f3d8e93b..3a15b4a7a 100644 --- a/programs/xterm/vttests/dynamic.sh +++ b/programs/xterm/vttests/dynamic.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.2 1999/04/11 13:11:43 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Demonstrate the use of dynamic colors by setting the background successively @@ -10,6 +10,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/fonts.sh b/programs/xterm/vttests/fonts.sh index 86eb2fdca..e8dd6e3aa 100644 --- a/programs/xterm/vttests/fonts.sh +++ b/programs/xterm/vttests/fonts.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/fonts.sh,v 1.1 1999/04/11 13:11:43 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/fonts.sh,v 1.2 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Demonstrate the use of dynamic colors by setting the background successively @@ -10,6 +10,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/resize.sh b/programs/xterm/vttests/resize.sh index bcb5a55df..8a62fed9f 100644 --- a/programs/xterm/vttests/resize.sh +++ b/programs/xterm/vttests/resize.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.2 1999/04/11 13:11:44 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Obtain the current screen size, then resize the terminal to the nominal @@ -10,6 +10,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/vttests/title.sh b/programs/xterm/vttests/title.sh index 2d2521fe3..38bba026e 100644 --- a/programs/xterm/vttests/title.sh +++ b/programs/xterm/vttests/title.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/vttests/title.sh,v 1.3 1999/04/25 10:03:09 dawes Exp $ +# $XFree86: xc/programs/xterm/vttests/title.sh,v 1.4 2000/10/27 18:31:17 dawes Exp $ # # -- Thomas Dickey (1999/3/27) # Obtain the current title of the window, set up a simple clock which runs @@ -10,6 +10,8 @@ CMD='echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ +eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null +( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null diff --git a/programs/xterm/wcwidth.c b/programs/xterm/wcwidth.c index 630d11035..ea9247cb6 100644 --- a/programs/xterm/wcwidth.c +++ b/programs/xterm/wcwidth.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.3 2001/07/29 22:08:16 tsi Exp $ */ +/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.4 2002/08/12 00:36:33 dickey Exp $ */ /* * This is an implementation of wcwidth() and wcswidth() (defined in * IEEE Std 1002.1-2001) for Unicode. @@ -214,7 +214,7 @@ int mk_wcswidth(const wchar_t *pwcs, size_t n) * the traditional terminal character-width behaviour. It is not * otherwise recommended for general use. */ -static int mk_wcwidth_cjk(wchar_t ucs) +int mk_wcwidth_cjk(wchar_t ucs) { /* sorted list of non-overlapping intervals of East Asian Ambiguous * characters, generated with "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */ diff --git a/programs/xterm/wcwidth.h b/programs/xterm/wcwidth.h index ecdb8b2f9..96a47a098 100644 --- a/programs/xterm/wcwidth.h +++ b/programs/xterm/wcwidth.h @@ -1,15 +1,14 @@ -/* $XFree86: xc/programs/xterm/wcwidth.h,v 1.2 2001/06/18 19:09:27 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/wcwidth.h,v 1.3 2002/08/12 00:36:33 dickey Exp $ */ #ifndef included_wcwidth_h #define included_wcwidth_h 1 #include <stddef.h> -#define my_wcwidth mk_wcwidth - -extern int my_wcwidth(wchar_t ucs); extern int mk_wcswidth(const wchar_t * pwcs, size_t n); extern int mk_wcswidth_cjk(const wchar_t * pwcs, size_t n); +extern int mk_wcwidth(wchar_t ucs); +extern int mk_wcwidth_cjk(wchar_t ucs); extern int wcswidth(const wchar_t * pwcs, size_t n); extern int wcswidth_cjk(const wchar_t * pwcs, size_t n); diff --git a/programs/xterm/xterm.dat b/programs/xterm/xterm.dat index b00293eeb..20d4bfbc3 100644 --- a/programs/xterm/xterm.dat +++ b/programs/xterm/xterm.dat @@ -1,11 +1,14 @@ -! $XFree86: xc/programs/xterm/xterm.dat,v 1.2 2000/06/14 00:16:21 dawes Exp $ +! $XFree86: xc/programs/xterm/xterm.dat,v 1.3 2000/12/30 19:15:47 dickey Exp $ ! *title: Xterm *iconName: Xterm *c132: TRUE *scrollBar: on *saveLines: 1000 -XTerm.JoinSession:False + +! This is nonsense: if the xterm has no session management capabilities, +! it is useless, and if it does, it is harmful. +!XTerm.JoinSession:False ! turn off NumLock support - there is some conflict or problem on VMS *numLock: false diff --git a/programs/xterm/xterm.h b/programs/xterm/xterm.h index f3e97078b..ed842addd 100644 --- a/programs/xterm/xterm.h +++ b/programs/xterm/xterm.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/xterm/xterm.h,v 3.82 2002/08/17 19:52:27 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/xterm.h,v 3.83 2002/08/24 18:54:39 dickey Exp $ */ /************************************************************ @@ -282,6 +282,7 @@ extern int errno; #define XtNc132 "c132" #define XtNcacheDoublesize "cacheDoublesize" #define XtNcharClass "charClass" +#define XtNcjkWidth "cjkWidth" #define XtNcolorAttrMode "colorAttrMode" #define XtNcolorBDMode "colorBDMode" #define XtNcolorBLMode "colorBLMode" @@ -390,6 +391,7 @@ extern int errno; #define XtCC132 "C132" #define XtCCacheDoublesize "CacheDoublesize" #define XtCCharClass "CharClass" +#define XtCCjkWidth "CjkWidth" #define XtCColorMode "ColorMode" #define XtCColumn "Column" #define XtCCtrlFKeys "CtrlFKeys" @@ -483,7 +485,7 @@ extern int errno; /***====================================================================***/ -#ifdef __cplusplus +#ifdef __cplusplus extern "C" { #endif @@ -624,12 +626,17 @@ extern void first_map_occurred (void); extern SIGNAL_T Exit (int n); #endif +#if OPT_WIDE_CHARS +extern int (*my_wcwidth)(wchar_t); +#endif + /* menu.c */ extern void do_hangup PROTO_XT_CALLBACK_ARGS; extern void show_8bit_control (Bool value); /* misc.c */ extern Cursor make_colored_cursor (unsigned cursorindex, unsigned long fg, unsigned long bg); +extern Window WMFrameWindow(XtermWidget termw); extern char *SysErrorMsg (int n); extern char *udk_lookup (int keycode, int *len); extern int XStrCmp (char *s1, char *s2); @@ -889,7 +896,7 @@ int visual_width(PAIRED_CHARS(Char *str, Char *str2), Cardinal len); #define visual_width(a, b) (b) #endif -#ifdef __cplusplus +#ifdef __cplusplus } #endif diff --git a/programs/xterm/xterm.log.html b/programs/xterm/xterm.log.html index a855375aa..fbf8205e8 100644 --- a/programs/xterm/xterm.log.html +++ b/programs/xterm/xterm.log.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- ***************************************************************************** * Copyright 1996-2001,2002 by Thomas E. Dickey * @@ -20,12 +20,13 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ***************************************************************************** - $XFree86: xc/programs/xterm/xterm.log.html,v 1.83 2002/08/17 19:52:27 dickey Exp $ + $XFree86: xc/programs/xterm/xterm.log.html,v 1.84 2002/08/24 18:54:39 dickey Exp $ --> <HTML> <HEAD> <TITLE>XTERM - Change Log</TITLE> <LINK REV=MADE HREF="mailto:dickey@invisible-island.net"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </HEAD> <BODY> <HR> @@ -42,6 +43,7 @@ in the XFree86 CHANGELOG (found in the unbundled tree, xc/programs/Xserver/hw/xfree86). <UL> +<LI><A HREF="#xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A> <LI><A HREF="#xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A> <LI><A HREF="#xterm_166">Patch #166 - 2002/3/25 - XFree86 4.2.0</A> <LI><A HREF="#xterm_165">Patch #165 - 2002/1/5 - XFree86 4.1.0</A> @@ -212,6 +214,57 @@ xc/programs/Xserver/hw/xfree86). <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A> </UL> +<H1><A NAME="xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A></H1> +<ul> + <li>improve data reported for control sequence that requests window + position by taking into account the window decorations, e.g., + border and title (patch by Jess Thrysoee <jess@thrysoee.dk>). + + <li>add <code>-cjk_width</code> and corresponding resource + <code>cjkWidth</code> (patch by Jungshik Shin + <jshin@mailaps.org>). + + <li>add <code>-into</code> option, for embedding xterm in a Tcl/Tk + application (patch by George Peter Staplin <georgeps@xmission.com>). + + <li>add simple session management (XSM) client capabilities to xterm. + So a session manager such as, e.g., xsm, should be able to respawn or + kill xterms without the help of an SM proxy (like smproxy), which is + a hack and almost always buggy (patch by David Madore). + + <li>fix conflict between ifdef's for <code>OPT_DEC_LOCATOR</code> and + <code>OPT_READLINE</code> in button.c (reported by Ilya Zakharevich). + + <li>fix for inconsistent use of <code>struct utmp</code> versus + <code>struct utmpx</code> introduced in patch #167 (patches by Paul + Gilmartin, Marc La France). + + <li>modify logic for <code>metaSendsEscape</code> to allow it to work + in a setup where the Meta-key is not recognized as a modifier by + the key-translations logic (from a discussion of eightBitInput + with H.J.Lu, however Vincent Lefevre reported this in January). + + <li>use null pointer values consistently, rather than literal "0", for + ending variable-length argument lists, e.g., for + <code>execlp()</code> (based on patch by Matthieu Herrb). + + <li>correct logic of <code>ChangeAnsiColorRequest()</code>, which would + do a screen repaint after replying to a request for information. + + <li>improve scripts in vttests to work with systems whose shells support + <code>echo -n</code> and have, as does Debian, an unrelated + <code>print</code> utility. + + <li>add vttests/acolors.sh to demonstrate OSC 4, which queries or + sets ANSI colors. + + <li>fixes for ctlseqs.ms (Pavel Roskin, Ilya Zakharevich). + + <li>typos in xterm manpage (Jens Schweikhardt) + + <li>remove a redundant GCC_UNUSED from InitPopup() (Nam SungHyun) +</ul> + <H1><A NAME="xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A></H1> <ul> <li>correct ifdef's for <code>USE_TERMCAP</code> to match cygwin @@ -268,7 +321,7 @@ xc/programs/Xserver/hw/xfree86). <ul> <li>Check that the return value from ttyslot() is greater than 0 before writing the utmp file. - Fixes w's "w: Stale utmp entry: <user> <tty> <pty>" errors. + Fixes w's "w: Stale utmp entry: <user> <tty> <pty>" errors. <li>Use openpty() to deal with new pty naming scheme. </ul> @@ -318,8 +371,9 @@ xc/programs/Xserver/hw/xfree86). <li>change the colors for the 256-color model, making them less skewed toward black (patch by Steve Wall). - <li>add <code>vt100Graphics</code> resource (see patch #115, based on - discussion with Glenn Maynard). + <li>add <code>vt100Graphics</code> resource + (see <a href="#xterm_115">patch #115</a>, + based on discussion with Glenn Maynard). <li>ifdef'd Xaw/Xaw3d/neXtaw includes separately to avoid potential incompatibilities between these flavors of Athena widgets. @@ -484,7 +538,8 @@ xc/programs/Xserver/hw/xfree86). <H1><A NAME="xterm_160">Patch #160 - 2001/10/7 - XFree86 4.1.0</A></H1> <ul> - <li>modify logic in main.c (see patch #145) to avoid generating the + <li>modify logic in main.c + (see <a href="#xterm_145">patch #145</a>) to avoid generating the same identifier, for example, for /dev/tty1 and /dev/pts/1, which is used to denote an entry in the utmp file (Debian bug report #84676), A similar fix was also sent by Jerome Borsboom @@ -1740,7 +1795,8 @@ xc/programs/Xserver/hw/xfree86). utmp exit status (reports by Dave Ellement, Jeremie Petit, Tomas Vanhala). - <li>amend treatment of ALT key (see patch #94) so that if ALT is used + <li>amend treatment of ALT key + (see <a href="#xterm_94">patch #94</a>) so that if ALT is used as a modifier in key translations, then no parameter will be sent in escape sequences for Sun/PC function keys (request by Dr Werner Fink). @@ -1816,7 +1872,7 @@ xc/programs/Xserver/hw/xfree86). redirect all their messages to one particular xterm: it is more pleasant to do this with xterm resources than with explicit calls to the <code>mesg</code> program (patch, description by David Madore - <madore@clipper.ens.fr>). + <david.madore@ens.fr>). </ul> <H1><A NAME="xterm_119">Patch #119 - 1999/10/16 - XFree86 3.9.16c</A></H1> @@ -2554,7 +2610,7 @@ the Imakefile defines this). providing user applications a means of determining the version of xterm for feature comparison (request by Bram Moolenaar). - <li>make xterm respond to secondary DA when the decTerminalId + <li>make xterm respond to secondary DA when the decTerminalID is set for VT100. <li>limit user-defined keys (DECUDK) to VT220-style keyboard @@ -2571,7 +2627,7 @@ the Imakefile defines this). reflect the actual configuration, the terminfo kdch1 string is not (request by Dirk H Hohndel <hohndel@suse.de>) - <li>improve scripts in vttest to work with newer shells that do not + <li>improve scripts in vttests to work with newer shells that do not use 'echo -n'. <li>add fonts.sh example script diff --git a/programs/xterm/xterm.man b/programs/xterm/xterm.man index 05816e8bd..7782b3d33 100644 --- a/programs/xterm/xterm.man +++ b/programs/xterm/xterm.man @@ -54,7 +54,7 @@ .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" -.\" $XFree86: xc/programs/xterm/xterm.man,v 3.84 2002/08/17 19:52:27 dickey Exp $ +.\" $XFree86: xc/programs/xterm/xterm.man,v 3.85 2002/08/24 18:54:39 dickey Exp $ .\" .\" updated by Thomas E. Dickey for XFree86, July 1996 - August 2002. .TH XTERM 1 __vendorversion__ @@ -278,6 +278,19 @@ Set the \fIvt100\fP resource \fBcutToBeginningOfLine\fP to TRUE. This sets classes indicated by the given ranges for using in selecting by words. See the section specifying character classes. .TP 8 +.B "\-cjk_width" +Set the \fBcjkWidth\fP resource to ``true''. +When turned on, characters with East Asian Ambiguous (A) category in UTR 11 +have a column width of 2. +Othrwise, they have a column width of 1. +This may be useful for some legacy CJK text +terminal-based programs assuming box drawings and others to have a column +width of 2. +The default is ``false'' +.TP 8 +.B "+cjk_width" +Reset the \fBcjkWidth\fP resource. +.TP 8 .BI \-class " string" This option allows you to override \fIxterm\fP's resource class. Normally it is ``XTerm'', but @@ -444,6 +457,11 @@ Turn on the \fBuseInsertMode\fP resource. .B +im Turn off the \fBuseInsertMode\fP resource. .TP 8 +.BI \-into windowId +Given an X window identifier (a decimal integer), +xterm will reparent its top-level shell widget to that window. +This is used to embed xterm within other applications. +.TP 8 .B \-j This option indicates that \fIxterm\fP should do jump scrolling. Normally, text is scrolled one line at a time; this option allows \fIxterm\fP to move @@ -1117,6 +1135,15 @@ Specifies comma-separated lists of character class bindings of the form sets of characters should be treated the same when doing cut and paste. See the section on specifying character classes. .TP 8 +.B "cjkWidth (\fPclass\fB CjkWidth)" +Specifies whether \fIxterm\fP should follow +the traditional East Asian width convention. +When turned on, characters with East Asian Ambiguous (A) category in UTR +11 have a column width of 2. +You may have to set this option to ``true'' +if you have some old East Asian terminal based programs that assume that +line-drawing characters have a column width of 2. +.TP 8 .B "curses (\fPclass\fB Curses)" Specifies whether or not the last column bug in .IR more (1) @@ -1196,8 +1223,8 @@ yellow, blue, magenta, cyan, and white. .TP 8 through .TP 8 -.B "color255 \fPclass\fB Color255)" -These specify the colors for the 256-color extension. The defaults for +.B "color255 (\fPclass\fB Color255)" +These specify the colors for the 256-color extension. The defaults are for colors 16 through 231 to make a 6x6x6 color cube, and colors 232 through 255 to make a grayscale ramp. .TP 8 |