Karsten Hopp 9edd11
To: vim_dev@googlegroups.com
Karsten Hopp 9edd11
Subject: Patch 7.4.627
Karsten Hopp 9edd11
Fcc: outbox
Karsten Hopp 9edd11
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 9edd11
Mime-Version: 1.0
Karsten Hopp 9edd11
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 9edd11
Content-Transfer-Encoding: 8bit
Karsten Hopp 9edd11
------------
Karsten Hopp 9edd11
Karsten Hopp 9edd11
Patch 7.4.627
Karsten Hopp 9edd11
Problem:    The last screen cell is not updated.
Karsten Hopp 9edd11
Solution:   Respect the "tn" termcap feature. (Hayaki Saito)
Karsten Hopp 9edd11
Files:	    runtime/doc/term.txt, src/option.c, src/screen.c, src/term.c,
Karsten Hopp 9edd11
	    src/term.h
Karsten Hopp 9edd11
Karsten Hopp 9edd11
Karsten Hopp 9edd11
*** ../vim-7.4.626/runtime/doc/term.txt	2013-08-10 13:25:02.000000000 +0200
Karsten Hopp 9edd11
--- runtime/doc/term.txt	2015-02-10 19:11:54.110597132 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 224,233 ****
Karsten Hopp 9edd11
  the last two characters of the option name.  Only one termcap code is
Karsten Hopp 9edd11
  required: Cursor motion, 't_cm'.
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
! The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap.
Karsten Hopp 9edd11
! When the termcap flag is present, the option will be set to "y".  But any
Karsten Hopp 9edd11
! non-empty string means that the flag is set.  An empty string means that the
Karsten Hopp 9edd11
! flag is not set.  't_CS' works like this too, but it isn't a termcap flag.
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
  OUTPUT CODES
Karsten Hopp 9edd11
  	option	meaning	~
Karsten Hopp 9edd11
--- 224,234 ----
Karsten Hopp 9edd11
  the last two characters of the option name.  Only one termcap code is
Karsten Hopp 9edd11
  required: Cursor motion, 't_cm'.
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
! The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the
Karsten Hopp 9edd11
! termcap.  When the termcap flag is present, the option will be set to "y".
Karsten Hopp 9edd11
! But any non-empty string means that the flag is set.  An empty string means
Karsten Hopp 9edd11
! that the flag is not set.  't_CS' works like this too, but it isn't a termcap
Karsten Hopp 9edd11
! flag.
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
  OUTPUT CODES
Karsten Hopp 9edd11
  	option	meaning	~
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 281,286 ****
Karsten Hopp 9edd11
--- 282,290 ----
Karsten Hopp 9edd11
  	t_vs	cursor very visible				*t_vs* *'t_vs'*
Karsten Hopp 9edd11
  								*t_xs* *'t_xs'*
Karsten Hopp 9edd11
  	t_xs	if non-empty, standout not erased by overwriting (hpterm)
Karsten Hopp 9edd11
+ 								*t_xn* *'t_xn'*
Karsten Hopp 9edd11
+ 	t_xn	if non-empty, character writing at the last cell of screen
Karsten Hopp 9edd11
+ 		didn't causes scrolling
Karsten Hopp 9edd11
  	t_ZH	italics mode					*t_ZH* *'t_ZH'*
Karsten Hopp 9edd11
  	t_ZR	italics end					*t_ZR* *'t_ZR'*
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
*** ../vim-7.4.626/src/option.c	2015-02-03 13:00:34.400529686 +0100
Karsten Hopp 9edd11
--- src/option.c	2015-02-10 19:13:36.997250501 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 2978,2983 ****
Karsten Hopp 9edd11
--- 2978,2984 ----
Karsten Hopp 9edd11
      p_term("t_WS", T_CWS)
Karsten Hopp 9edd11
      p_term("t_SI", T_CSI)
Karsten Hopp 9edd11
      p_term("t_EI", T_CEI)
Karsten Hopp 9edd11
+     p_term("t_xn", T_XN)
Karsten Hopp 9edd11
      p_term("t_xs", T_XS)
Karsten Hopp 9edd11
      p_term("t_ZH", T_CZH)
Karsten Hopp 9edd11
      p_term("t_ZR", T_CZR)
Karsten Hopp 9edd11
*** ../vim-7.4.626/src/screen.c	2015-01-27 16:39:24.691804113 +0100
Karsten Hopp 9edd11
--- src/screen.c	2015-02-10 19:18:43.913231114 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 7968,7976 ****
Karsten Hopp 9edd11
      if (row >= screen_Rows || col >= screen_Columns)
Karsten Hopp 9edd11
  	return;
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
!     /* Outputting the last character on the screen may scrollup the screen.
Karsten Hopp 9edd11
!      * Don't to it!  Mark the character invalid (update it when scrolled up) */
Karsten Hopp 9edd11
!     if (row == screen_Rows - 1 && col == screen_Columns - 1
Karsten Hopp 9edd11
  #ifdef FEAT_RIGHTLEFT
Karsten Hopp 9edd11
  	    /* account for first command-line character in rightleft mode */
Karsten Hopp 9edd11
  	    && !cmdmsg_rl
Karsten Hopp 9edd11
--- 7968,7978 ----
Karsten Hopp 9edd11
      if (row >= screen_Rows || col >= screen_Columns)
Karsten Hopp 9edd11
  	return;
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
!     /* Outputting a character in the last cell on the screen may scroll the
Karsten Hopp 9edd11
!      * screen up.  Only do it when the "xn" termcap property is set, otherwise
Karsten Hopp 9edd11
!      * mark the character invalid (update it when scrolled up). */
Karsten Hopp 9edd11
!     if (*T_XN == NUL
Karsten Hopp 9edd11
! 	    && row == screen_Rows - 1 && col == screen_Columns - 1
Karsten Hopp 9edd11
  #ifdef FEAT_RIGHTLEFT
Karsten Hopp 9edd11
  	    /* account for first command-line character in rightleft mode */
Karsten Hopp 9edd11
  	    && !cmdmsg_rl
Karsten Hopp 9edd11
*** ../vim-7.4.626/src/term.c	2014-07-30 17:21:53.819518506 +0200
Karsten Hopp 9edd11
--- src/term.c	2015-02-10 19:11:54.118597027 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 200,205 ****
Karsten Hopp 9edd11
--- 200,206 ----
Karsten Hopp 9edd11
      {(int)KS_VB,	IF_EB("\033|f", ESC_STR "|f")},
Karsten Hopp 9edd11
      {(int)KS_MS,	"y"},
Karsten Hopp 9edd11
      {(int)KS_UT,	"y"},
Karsten Hopp 9edd11
+     {(int)KS_XN,	"y"},
Karsten Hopp 9edd11
      {(int)KS_LE,	"\b"},		/* cursor-left = BS */
Karsten Hopp 9edd11
      {(int)KS_ND,	"\014"},	/* cursor-right = CTRL-L */
Karsten Hopp 9edd11
  # ifdef TERMINFO
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 658,663 ****
Karsten Hopp 9edd11
--- 659,665 ----
Karsten Hopp 9edd11
  
Karsten Hopp 9edd11
      {(int)KS_MS,	"y"},		/* save to move cur in reverse mode */
Karsten Hopp 9edd11
      {(int)KS_UT,	"y"},
Karsten Hopp 9edd11
+     {(int)KS_XN,	"y"},
Karsten Hopp 9edd11
      {(int)KS_LE,	"\b"},
Karsten Hopp 9edd11
  #  ifdef TERMINFO
Karsten Hopp 9edd11
      {(int)KS_CM,	"\033|%i%p1%d;%p2%dH"},/* cursor motion */
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 772,777 ****
Karsten Hopp 9edd11
--- 774,780 ----
Karsten Hopp 9edd11
      {(int)KS_CSF,	IF_EB("\033[101;%dm", ESC_STR "[101;%dm")},	/* set screen foreground color */
Karsten Hopp 9edd11
      {(int)KS_MS,	"y"},
Karsten Hopp 9edd11
      {(int)KS_UT,	"y"},
Karsten Hopp 9edd11
+     {(int)KS_XN,	"y"},
Karsten Hopp 9edd11
      {(int)KS_LE,	"\b"},
Karsten Hopp 9edd11
  #  ifdef TERMINFO
Karsten Hopp 9edd11
      {(int)KS_CM,	IF_EB("\033[%i%p1%d;%p2%dH",
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 1207,1212 ****
Karsten Hopp 9edd11
--- 1210,1216 ----
Karsten Hopp 9edd11
      {(int)KS_UCS,	"[UCS]"},
Karsten Hopp 9edd11
      {(int)KS_MS,	"[MS]"},
Karsten Hopp 9edd11
      {(int)KS_UT,	"[UT]"},
Karsten Hopp 9edd11
+     {(int)KS_XN,	"[XN]"},
Karsten Hopp 9edd11
  #  ifdef TERMINFO
Karsten Hopp 9edd11
      {(int)KS_CM,	"[%p1%dCM%p2%d]"},
Karsten Hopp 9edd11
  #  else
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 1645,1650 ****
Karsten Hopp 9edd11
--- 1649,1657 ----
Karsten Hopp 9edd11
  		if ((T_XS == NULL || T_XS == empty_option)
Karsten Hopp 9edd11
  							&& tgetflag("xs") > 0)
Karsten Hopp 9edd11
  		    T_XS = (char_u *)"y";
Karsten Hopp 9edd11
+ 		if ((T_XN == NULL || T_XN == empty_option)
Karsten Hopp 9edd11
+ 							&& tgetflag("xn") > 0)
Karsten Hopp 9edd11
+ 		    T_XN = (char_u *)"y";
Karsten Hopp 9edd11
  		if ((T_DB == NULL || T_DB == empty_option)
Karsten Hopp 9edd11
  							&& tgetflag("db") > 0)
Karsten Hopp 9edd11
  		    T_DB = (char_u *)"y";
Karsten Hopp 9edd11
*** ../vim-7.4.626/src/term.h	2013-03-13 19:09:03.000000000 +0100
Karsten Hopp 9edd11
--- src/term.h	2015-02-10 19:11:54.118597027 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 66,71 ****
Karsten Hopp 9edd11
--- 66,72 ----
Karsten Hopp 9edd11
      KS_CSF,	/* set foreground color */
Karsten Hopp 9edd11
      KS_CSB,	/* set background color */
Karsten Hopp 9edd11
      KS_XS,	/* standout not erased by overwriting (hpterm) */
Karsten Hopp 9edd11
+     KS_XN,	/* newline glitch */
Karsten Hopp 9edd11
      KS_MB,	/* blink mode */
Karsten Hopp 9edd11
      KS_CAF,	/* set foreground color (ANSI) */
Karsten Hopp 9edd11
      KS_CAB,	/* set background color (ANSI) */
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 144,149 ****
Karsten Hopp 9edd11
--- 145,151 ----
Karsten Hopp 9edd11
  #define T_CSF	(term_str(KS_CSF))	/* set foreground color */
Karsten Hopp 9edd11
  #define T_CSB	(term_str(KS_CSB))	/* set background color */
Karsten Hopp 9edd11
  #define T_XS	(term_str(KS_XS))	/* standout not erased by overwriting */
Karsten Hopp 9edd11
+ #define T_XN	(term_str(KS_XN))	/* newline glitch */
Karsten Hopp 9edd11
  #define T_MB	(term_str(KS_MB))	/* blink mode */
Karsten Hopp 9edd11
  #define T_CAF	(term_str(KS_CAF))	/* set foreground color (ANSI) */
Karsten Hopp 9edd11
  #define T_CAB	(term_str(KS_CAB))	/* set background color (ANSI) */
Karsten Hopp 9edd11
*** ../vim-7.4.626/src/version.c	2015-02-10 18:47:55.225390610 +0100
Karsten Hopp 9edd11
--- src/version.c	2015-02-10 19:12:50.525858691 +0100
Karsten Hopp 9edd11
***************
Karsten Hopp 9edd11
*** 743,744 ****
Karsten Hopp 9edd11
--- 743,746 ----
Karsten Hopp 9edd11
  {   /* Add new patch number below this line */
Karsten Hopp 9edd11
+ /**/
Karsten Hopp 9edd11
+     627,
Karsten Hopp 9edd11
  /**/
Karsten Hopp 9edd11
Karsten Hopp 9edd11
-- 
Karsten Hopp 9edd11
msdn.microsoft.com:
Karsten Hopp 9edd11
ERROR_SUCCESS 0 (0x0) The operation completed successfully.
Karsten Hopp 9edd11
I have always suspected that for Microsoft success is an error.
Karsten Hopp 9edd11
Karsten Hopp 9edd11
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 9edd11
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 9edd11
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 9edd11
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///