From: root Date: Wed, 1 Dec 2004 02:12:18 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.openbox.org/?p=dana%2Furxvt.git;a=commitdiff_plain;h=3f863522aafbedb2cd18167dc869557498497b56 *** empty log message *** --- diff --git a/src/command.C b/src/command.C index 514b40b..3270c2f 100644 --- a/src/command.C +++ b/src/command.C @@ -51,6 +51,7 @@ #include "command.h" #include +#include /*----------------------------------------------------------------------*/ diff --git a/src/rxvt.h b/src/rxvt.h index 600ce5f..b992f62 100644 --- a/src/rxvt.h +++ b/src/rxvt.h @@ -612,6 +612,7 @@ enum { Rs_pointerBlank, Rs_pointerBlankDelay, Rs_imLocale, + Rs_pastableTabs, #ifndef NO_SECONDARY_SCREEN Rs_secondaryScreen, Rs_secondaryScroll, diff --git a/src/rxvtlib.h.in b/src/rxvtlib.h.in index 81ef8ad..2cefa2f 100644 --- a/src/rxvtlib.h.in +++ b/src/rxvtlib.h.in @@ -215,12 +215,14 @@ typedef struct { # define Opt_insecure 0 # define Opt_borderLess 0 #endif +#define Opt_pastableTabs (1UL<<25) /* place holder used for parsing command-line options */ #define Opt_Reverse (1UL<<30) #define Opt_Boolean (1UL<<31) -#define DEFAULT_OPTIONS (Opt_scrollBar | Opt_scrollTtyOutput | \ - Opt_jumpScroll | Opt_secondaryScreen) +#define DEFAULT_OPTIONS (Opt_scrollBar | Opt_scrollTtyOutput \ + | Opt_jumpScroll | Opt_secondaryScreen \ + | Opt_pastableTabs) /* ------------------------------------------------------------------------- */ diff --git a/src/screen.C b/src/screen.C index 312c468..8dc463d 100644 --- a/src/screen.C +++ b/src/screen.C @@ -885,14 +885,14 @@ rxvt_term::scr_add_lines (const unicode_t *str, int nlines, int len) srp = screen.rend[row]; /* _must_ refresh */ } - if (screen.flags & Screen_Insert) - scr_insdel_chars (1, INSERT); - // rely on wcwidth to tell us the character width, at least for non-latin1 // do wcwidth before further replacements, as wcwidth says that line-drawing // characters have width -1 (DOH!) on GNU/Linux sometimes. int width = c < 0x100 ? 1 : wcwidth (c); + if (screen.flags & Screen_Insert) + scr_insdel_chars (width, INSERT); + if (charsets[screen.charset] == '0') // DEC SPECIAL { // vt100 special graphics and line drawing @@ -1102,7 +1102,7 @@ rxvt_term::scr_tab (int count, bool ht) // store horizontal tab commands as characters inside the text // buffer so they can be selected and pasted. - if (ht) + if (ht && options & Opt_pastableTabs) { base_rend = SET_FONT (base_rend, 0); @@ -2246,7 +2246,7 @@ rxvt_term::scr_refresh (unsigned char refresh_type) // redraw one or more characters - // seek to the beginning if wide characters + // seek to the beginning of wide characters while (stp[col] == NOCHAR && col > 0) --col; diff --git a/src/xdefaults.C b/src/xdefaults.C index f46f1a2..8bc3633 100644 --- a/src/xdefaults.C +++ b/src/xdefaults.C @@ -93,6 +93,7 @@ optList[] = { BOOL (Rs_reverseVideo, "reverseVideo", "rv", Opt_reverseVideo, "reverse video"), BOOL (Rs_loginShell, "loginShell", "ls", Opt_loginShell, "login shell"), BOOL (Rs_jumpScroll, "jumpScroll", "j", Opt_jumpScroll, "jump scrolling"), + BOOL (Rs_pastableTabs, "pastableTabs", "ptab", Opt_pastableTabs, "tab characters are pastable"), #ifdef HAVE_SCROLLBARS BOOL (Rs_scrollBar, "scrollBar", "sb", Opt_scrollBar, "scrollbar"), BOOL (Rs_scrollBar_right, "scrollBar_right", "sr", Opt_scrollBar_right, "scrollbar right"),