components/vim/vim72-patches/7.2.167
changeset 198 172fc01ce997
equal deleted inserted replaced
197:fd801ec0737c 198:172fc01ce997
       
     1 To: [email protected]
       
     2 Subject: Patch 7.2.167
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=UTF-8
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.167
       
    11 Problem:    Splint doesn't work well for checking the code.
       
    12 Solution:   Add splint arguments in the Makefile.  Exclude some code from
       
    13 	    splint that it can't handle.  Tune splint arguments to give
       
    14 	    reasonable errors.  Add a filter for removing false warnings from
       
    15 	    splint output.  Many small changes to avoid warnings.  More to
       
    16 	    follow...
       
    17 Files:	    Filelist, src/Makefile, src/buffer.c, src/charset.c,
       
    18 	    src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c,
       
    19 	    src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h,
       
    20 	    src/proto/buffer.pro, src/proto/edit.pro, src/screen.c,
       
    21 	    src/structs.h
       
    22 
       
    23 *** ../vim-7.2.166/Filelist	2008-09-20 16:26:10.000000000 +0200
       
    24 --- Filelist	2009-05-05 21:45:49.000000000 +0200
       
    25 ***************
       
    26 *** 139,144 ****
       
    27 --- 139,145 ----
       
    28   		src/INSTALL \
       
    29   		src/INSTALLx.txt \
       
    30   		src/Makefile \
       
    31 + 		src/cleanlint.vim \
       
    32   		src/auto/configure \
       
    33   		src/config.aap.in \
       
    34   		src/config.h.in \
       
    35 ***************
       
    36 *** 683,691 ****
       
    37   		runtime/spell/??/main.aap \
       
    38   		runtime/spell/yi/README.txt \
       
    39   		runtime/spell/main.aap \
       
    40 - 		runtime/spell/cleanadd.vim \
       
    41   		runtime/spell/*.vim \
       
    42 - 		runtime/spell/fixdup \
       
    43   
       
    44   # generic language files, binary
       
    45   LANG_GEN_BIN = \
       
    46 --- 684,690 ----
       
    47 *** ../vim-7.2.166/src/Makefile	2009-04-29 18:44:45.000000000 +0200
       
    48 --- src/Makefile	2009-05-06 00:23:15.000000000 +0200
       
    49 ***************
       
    50 *** 551,557 ****
       
    51   # }}}
       
    52   
       
    53   # LINT - for running lint
       
    54 ! LINT_OPTIONS = -beprxzF
       
    55   
       
    56   # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
       
    57   # Might not work with GUI or Perl.
       
    58 --- 551,562 ----
       
    59   # }}}
       
    60   
       
    61   # LINT - for running lint
       
    62 ! #  For standard lint
       
    63 ! #LINT = lint
       
    64 ! #LINT_OPTIONS = -beprxzF
       
    65 ! #  For splint  (see cleanlint.vim for filtering the output)
       
    66 ! LINT = splint
       
    67 ! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
       
    68   
       
    69   # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
       
    70   # Might not work with GUI or Perl.
       
    71 ***************
       
    72 *** 1259,1274 ****
       
    73   #     This is for cproto 3 patchlevel 8 or below
       
    74   #     __inline, __attribute__ and __extension__ are not recognized by cproto
       
    75   #     G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
       
    76 ! NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
       
    77 ! 	  -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
       
    78 ! 	  -D__extension__= -D__restrict="" \
       
    79 ! 	  -D__gnuc_va_list=char -D__builtin_va_list=char
       
    80   
       
    81   #
       
    82 ! #     This is for cproto 3 patchlevel 9 or above (currently 4.6)
       
    83   #     __inline and __attribute__ are now recognized by cproto
       
    84   #     -D"foo()=" is not supported by all compilers so do not use it
       
    85 ! # NO_ATTR=
       
    86   #
       
    87   #     maybe the "/usr/bin/cc -E" has to be adjusted for some systems
       
    88   # This is for cproto 3.5 patchlevel 3:
       
    89 --- 1264,1279 ----
       
    90   #     This is for cproto 3 patchlevel 8 or below
       
    91   #     __inline, __attribute__ and __extension__ are not recognized by cproto
       
    92   #     G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
       
    93 ! #NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
       
    94 ! #	  -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
       
    95 ! #	  -D__extension__= -D__restrict="" \
       
    96 ! #	  -D__gnuc_va_list=char -D__builtin_va_list=char
       
    97   
       
    98   #
       
    99 ! #     This is for cproto 3 patchlevel 9 or above (currently 4.6, 4.7g)
       
   100   #     __inline and __attribute__ are now recognized by cproto
       
   101   #     -D"foo()=" is not supported by all compilers so do not use it
       
   102 ! NO_ATTR=
       
   103   #
       
   104   #     maybe the "/usr/bin/cc -E" has to be adjusted for some systems
       
   105   # This is for cproto 3.5 patchlevel 3:
       
   106 ***************
       
   107 *** 1432,1437 ****
       
   108 --- 1437,1443 ----
       
   109   	$(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) $(NETBEANS_SRC)
       
   110   #LINT_SRC = $(SRC)
       
   111   #LINT_SRC = $(ALL_SRC)
       
   112 + #LINT_SRC = $(BASIC_SRC)
       
   113   
       
   114   OBJ = \
       
   115   	objects/buffer.o \
       
   116 ***************
       
   117 *** 2272,2283 ****
       
   118   
       
   119   # Run lint.  Clean up the *.ln files that are sometimes left behind.
       
   120   lint:
       
   121 ! 	lint $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
       
   122   	-rm -f *.ln
       
   123   
       
   124   # Check dosinst.c with lint.
       
   125   lintinstall:
       
   126 ! 	lint $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
       
   127   	-rm -f dosinst.ln
       
   128   
       
   129   ###########################################################################
       
   130 --- 2279,2290 ----
       
   131   
       
   132   # Run lint.  Clean up the *.ln files that are sometimes left behind.
       
   133   lint:
       
   134 ! 	$(LINT) $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
       
   135   	-rm -f *.ln
       
   136   
       
   137   # Check dosinst.c with lint.
       
   138   lintinstall:
       
   139 ! 	$(LINT) $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
       
   140   	-rm -f dosinst.ln
       
   141   
       
   142   ###########################################################################
       
   143 *** ../vim-7.2.166/src/buffer.c	2009-02-22 00:01:42.000000000 +0100
       
   144 --- src/buffer.c	2009-05-13 12:25:29.000000000 +0200
       
   145 ***************
       
   146 *** 44,49 ****
       
   147 --- 44,50 ----
       
   148   #ifdef FEAT_TITLE
       
   149   static int	ti_change __ARGS((char_u *str, char_u **last));
       
   150   #endif
       
   151 + static int	append_arg_number __ARGS((win_T *wp, char_u *buf, int buflen, int add_file));
       
   152   static void	free_buffer __ARGS((buf_T *));
       
   153   static void	free_buffer_stuff __ARGS((buf_T *buf, int free_options));
       
   154   static void	clear_wininfo __ARGS((buf_T *buf));
       
   155 ***************
       
   156 *** 1453,1465 ****
       
   157   
       
   158   #ifdef FEAT_KEYMAP
       
   159       if (curbuf->b_kmap_state & KEYMAP_INIT)
       
   160 ! 	keymap_init();
       
   161   #endif
       
   162   #ifdef FEAT_SPELL
       
   163       /* May need to set the spell language.  Can only do this after the buffer
       
   164        * has been properly setup. */
       
   165       if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
       
   166 ! 	did_set_spelllang(curbuf);
       
   167   #endif
       
   168   
       
   169       redraw_later(NOT_VALID);
       
   170 --- 1454,1466 ----
       
   171   
       
   172   #ifdef FEAT_KEYMAP
       
   173       if (curbuf->b_kmap_state & KEYMAP_INIT)
       
   174 ! 	(void)keymap_init();
       
   175   #endif
       
   176   #ifdef FEAT_SPELL
       
   177       /* May need to set the spell language.  Can only do this after the buffer
       
   178        * has been properly setup. */
       
   179       if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
       
   180 ! 	(void)did_set_spelllang(curbuf);
       
   181   #endif
       
   182   
       
   183       redraw_later(NOT_VALID);
       
   184 ***************
       
   185 *** 2516,2522 ****
       
   186       buf_T	*buf;
       
   187   {
       
   188       wininfo_T	*wip;
       
   189 !     static pos_T no_position = {1, 0};
       
   190   
       
   191       wip = find_wininfo(buf, FALSE);
       
   192       if (wip != NULL)
       
   193 --- 2517,2523 ----
       
   194       buf_T	*buf;
       
   195   {
       
   196       wininfo_T	*wip;
       
   197 !     static pos_T no_position = INIT_POS_T(1, 0, 0);
       
   198   
       
   199       wip = find_wininfo(buf, FALSE);
       
   200       if (wip != NULL)
       
   201 ***************
       
   202 *** 2577,2584 ****
       
   203   	{
       
   204   	    IObuff[len++] = ' ';
       
   205   	} while (--i > 0 && len < IOSIZE - 18);
       
   206 ! 	vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"),
       
   207 ! 		buf == curbuf ? curwin->w_cursor.lnum
       
   208   					       : (long)buflist_findlnum(buf));
       
   209   	msg_outtrans(IObuff);
       
   210   	out_flush();	    /* output one line at a time */
       
   211 --- 2578,2585 ----
       
   212   	{
       
   213   	    IObuff[len++] = ' ';
       
   214   	} while (--i > 0 && len < IOSIZE - 18);
       
   215 ! 	vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
       
   216 ! 		_("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
       
   217   					       : (long)buflist_findlnum(buf));
       
   218   	msg_outtrans(IObuff);
       
   219   	out_flush();	    /* output one line at a time */
       
   220 ***************
       
   221 *** 2967,2973 ****
       
   222   
       
   223       if (fullname > 1)	    /* 2 CTRL-G: include buffer number */
       
   224       {
       
   225 ! 	sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum);
       
   226   	p = buffer + STRLEN(buffer);
       
   227       }
       
   228       else
       
   229 --- 2968,2974 ----
       
   230   
       
   231       if (fullname > 1)	    /* 2 CTRL-G: include buffer number */
       
   232       {
       
   233 ! 	vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum);
       
   234   	p = buffer + STRLEN(buffer);
       
   235       }
       
   236       else
       
   237 ***************
       
   238 *** 3041,3051 ****
       
   239   		(long)curbuf->b_ml.ml_line_count,
       
   240   		n);
       
   241   	validate_virtcol();
       
   242 ! 	col_print(buffer + STRLEN(buffer),
       
   243   		   (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
       
   244       }
       
   245   
       
   246 !     (void)append_arg_number(curwin, buffer, !shortmess(SHM_FILE), IOSIZE);
       
   247   
       
   248       if (dont_truncate)
       
   249       {
       
   250 --- 3042,3053 ----
       
   251   		(long)curbuf->b_ml.ml_line_count,
       
   252   		n);
       
   253   	validate_virtcol();
       
   254 ! 	len = STRLEN(buffer);
       
   255 ! 	col_print(buffer + len, IOSIZE - len,
       
   256   		   (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
       
   257       }
       
   258   
       
   259 !     (void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE));
       
   260   
       
   261       if (dont_truncate)
       
   262       {
       
   263 ***************
       
   264 *** 3073,3087 ****
       
   265   }
       
   266   
       
   267       void
       
   268 ! col_print(buf, col, vcol)
       
   269       char_u  *buf;
       
   270       int	    col;
       
   271       int	    vcol;
       
   272   {
       
   273       if (col == vcol)
       
   274 ! 	sprintf((char *)buf, "%d", col);
       
   275       else
       
   276 ! 	sprintf((char *)buf, "%d-%d", col, vcol);
       
   277   }
       
   278   
       
   279   #if defined(FEAT_TITLE) || defined(PROTO)
       
   280 --- 3075,3090 ----
       
   281   }
       
   282   
       
   283       void
       
   284 ! col_print(buf, buflen, col, vcol)
       
   285       char_u  *buf;
       
   286 +     size_t  buflen;
       
   287       int	    col;
       
   288       int	    vcol;
       
   289   {
       
   290       if (col == vcol)
       
   291 ! 	vim_snprintf((char *)buf, buflen, "%d", col);
       
   292       else
       
   293 ! 	vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol);
       
   294   }
       
   295   
       
   296   #if defined(FEAT_TITLE) || defined(PROTO)
       
   297 ***************
       
   298 *** 3194,3211 ****
       
   299   		if (p == buf + off)
       
   300   		    /* must be a help buffer */
       
   301   		    vim_strncpy(buf + off, (char_u *)_("help"),
       
   302 ! 							    IOSIZE - off - 1);
       
   303   		else
       
   304   		    *p = NUL;
       
   305   
       
   306   		/* translate unprintable chars */
       
   307   		p = transstr(buf + off);
       
   308 ! 		vim_strncpy(buf + off, p, IOSIZE - off - 1);
       
   309   		vim_free(p);
       
   310   		STRCAT(buf, ")");
       
   311   	    }
       
   312   
       
   313 ! 	    append_arg_number(curwin, buf, FALSE, IOSIZE);
       
   314   
       
   315   #if defined(FEAT_CLIENTSERVER)
       
   316   	    if (serverName != NULL)
       
   317 --- 3197,3214 ----
       
   318   		if (p == buf + off)
       
   319   		    /* must be a help buffer */
       
   320   		    vim_strncpy(buf + off, (char_u *)_("help"),
       
   321 ! 						  (size_t)(IOSIZE - off - 1));
       
   322   		else
       
   323   		    *p = NUL;
       
   324   
       
   325   		/* translate unprintable chars */
       
   326   		p = transstr(buf + off);
       
   327 ! 		vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1));
       
   328   		vim_free(p);
       
   329   		STRCAT(buf, ")");
       
   330   	    }
       
   331   
       
   332 ! 	    append_arg_number(curwin, buf, IOSIZE, FALSE);
       
   333   
       
   334   #if defined(FEAT_CLIENTSERVER)
       
   335   	    if (serverName != NULL)
       
   336 ***************
       
   337 *** 3520,3526 ****
       
   338   		    n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
       
   339   
       
   340   		*t = '<';
       
   341 ! 		mch_memmove(t + 1, t + n, p - (t + n));
       
   342   		p = p - n + 1;
       
   343   #ifdef FEAT_MBYTE
       
   344   		/* Fill up space left over by half a double-wide char. */
       
   345 --- 3523,3529 ----
       
   346   		    n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
       
   347   
       
   348   		*t = '<';
       
   349 ! 		mch_memmove(t + 1, t + n, (size_t)(p - (t + n)));
       
   350   		p = p - n + 1;
       
   351   #ifdef FEAT_MBYTE
       
   352   		/* Fill up space left over by half a double-wide char. */
       
   353 ***************
       
   354 *** 3550,3556 ****
       
   355   		else
       
   356   		{
       
   357   		    /* fill by inserting characters */
       
   358 ! 		    mch_memmove(t + n - l, t, p - t);
       
   359   		    l = n - l;
       
   360   		    if (p + l >= out + outlen)
       
   361   			l = (long)((out + outlen) - p - 1);
       
   362 --- 3553,3559 ----
       
   363   		else
       
   364   		{
       
   365   		    /* fill by inserting characters */
       
   366 ! 		    mch_memmove(t + n - l, t, (size_t)(p - t));
       
   367   		    l = n - l;
       
   368   		    if (p + l >= out + outlen)
       
   369   			l = (long)((out + outlen) - p - 1);
       
   370 ***************
       
   371 *** 3686,3692 ****
       
   372   	    p = t;
       
   373   
       
   374   #ifdef FEAT_EVAL
       
   375 ! 	    sprintf((char *)tmp, "%d", curbuf->b_fnum);
       
   376   	    set_internal_string_var((char_u *)"actual_curbuf", tmp);
       
   377   
       
   378   	    o_curbuf = curbuf;
       
   379 --- 3689,3695 ----
       
   380   	    p = t;
       
   381   
       
   382   #ifdef FEAT_EVAL
       
   383 ! 	    vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
       
   384   	    set_internal_string_var((char_u *)"actual_curbuf", tmp);
       
   385   
       
   386   	    o_curbuf = curbuf;
       
   387 ***************
       
   388 *** 3753,3765 ****
       
   389   
       
   390   	case STL_ALTPERCENT:
       
   391   	    str = tmp;
       
   392 ! 	    get_rel_pos(wp, str);
       
   393   	    break;
       
   394   
       
   395   	case STL_ARGLISTSTAT:
       
   396   	    fillable = FALSE;
       
   397   	    tmp[0] = 0;
       
   398 ! 	    if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp)))
       
   399   		str = tmp;
       
   400   	    break;
       
   401   
       
   402 --- 3756,3768 ----
       
   403   
       
   404   	case STL_ALTPERCENT:
       
   405   	    str = tmp;
       
   406 ! 	    get_rel_pos(wp, str, TMPLEN);
       
   407   	    break;
       
   408   
       
   409   	case STL_ARGLISTSTAT:
       
   410   	    fillable = FALSE;
       
   411   	    tmp[0] = 0;
       
   412 ! 	    if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE))
       
   413   		str = tmp;
       
   414   	    break;
       
   415   
       
   416 ***************
       
   417 *** 3794,3800 ****
       
   418   	case STL_BYTEVAL_X:
       
   419   	    base = 'X';
       
   420   	case STL_BYTEVAL:
       
   421 ! 	    if (wp->w_cursor.col > STRLEN(linecont))
       
   422   		num = 0;
       
   423   	    else
       
   424   	    {
       
   425 --- 3797,3803 ----
       
   426   	case STL_BYTEVAL_X:
       
   427   	    base = 'X';
       
   428   	case STL_BYTEVAL:
       
   429 ! 	    if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
       
   430   		num = 0;
       
   431   	    else
       
   432   	    {
       
   433 ***************
       
   434 *** 3967,3973 ****
       
   435   	    if (zeropad)
       
   436   		*t++ = '0';
       
   437   	    *t++ = '*';
       
   438 ! 	    *t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd');
       
   439   	    *t = 0;
       
   440   
       
   441   	    for (n = num, l = 1; n >= nbase; n /= nbase)
       
   442 --- 3970,3976 ----
       
   443   	    if (zeropad)
       
   444   		*t++ = '0';
       
   445   	    *t++ = '*';
       
   446 ! 	    *t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd');
       
   447   	    *t = 0;
       
   448   
       
   449   	    for (n = num, l = 1; n >= nbase; n /= nbase)
       
   450 ***************
       
   451 *** 4160,4172 ****
       
   452   #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
       
   453   	    || defined(FEAT_GUI_TABLINE) || defined(PROTO)
       
   454   /*
       
   455 !  * Get relative cursor position in window into "str[]", in the form 99%, using
       
   456 !  * "Top", "Bot" or "All" when appropriate.
       
   457    */
       
   458       void
       
   459 ! get_rel_pos(wp, str)
       
   460       win_T	*wp;
       
   461 !     char_u	*str;
       
   462   {
       
   463       long	above; /* number of lines above window */
       
   464       long	below; /* number of lines below window */
       
   465 --- 4163,4176 ----
       
   466   #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
       
   467   	    || defined(FEAT_GUI_TABLINE) || defined(PROTO)
       
   468   /*
       
   469 !  * Get relative cursor position in window into "buf[buflen]", in the form 99%,
       
   470 !  * using "Top", "Bot" or "All" when appropriate.
       
   471    */
       
   472       void
       
   473 ! get_rel_pos(wp, buf, buflen)
       
   474       win_T	*wp;
       
   475 !     char_u	*buf;
       
   476 !     int		buflen;
       
   477   {
       
   478       long	above; /* number of lines above window */
       
   479       long	below; /* number of lines below window */
       
   480 ***************
       
   481 *** 4177,4210 ****
       
   482   #endif
       
   483       below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
       
   484       if (below <= 0)
       
   485 ! 	STRCPY(str, above == 0 ? _("All") : _("Bot"));
       
   486       else if (above <= 0)
       
   487 ! 	STRCPY(str, _("Top"));
       
   488       else
       
   489 ! 	sprintf((char *)str, "%2d%%", above > 1000000L
       
   490   				    ? (int)(above / ((above + below) / 100L))
       
   491   				    : (int)(above * 100L / (above + below)));
       
   492   }
       
   493   #endif
       
   494   
       
   495   /*
       
   496 !  * Append (file 2 of 8) to 'buf', if editing more than one file.
       
   497    * Return TRUE if it was appended.
       
   498    */
       
   499 !     int
       
   500 ! append_arg_number(wp, buf, add_file, maxlen)
       
   501       win_T	*wp;
       
   502       char_u	*buf;
       
   503       int		add_file;	/* Add "file" before the arg number */
       
   504 -     int		maxlen;		/* maximum nr of chars in buf or zero*/
       
   505   {
       
   506       char_u	*p;
       
   507   
       
   508       if (ARGCOUNT <= 1)		/* nothing to do */
       
   509   	return FALSE;
       
   510   
       
   511 !     p = buf + STRLEN(buf);		/* go to the end of the buffer */
       
   512 !     if (maxlen && p - buf + 35 >= maxlen) /* getting too long */
       
   513   	return FALSE;
       
   514       *p++ = ' ';
       
   515       *p++ = '(';
       
   516 --- 4181,4215 ----
       
   517   #endif
       
   518       below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
       
   519       if (below <= 0)
       
   520 ! 	vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
       
   521 ! 							(size_t)(buflen - 1));
       
   522       else if (above <= 0)
       
   523 ! 	vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
       
   524       else
       
   525 ! 	vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L
       
   526   				    ? (int)(above / ((above + below) / 100L))
       
   527   				    : (int)(above * 100L / (above + below)));
       
   528   }
       
   529   #endif
       
   530   
       
   531   /*
       
   532 !  * Append (file 2 of 8) to "buf[buflen]", if editing more than one file.
       
   533    * Return TRUE if it was appended.
       
   534    */
       
   535 !     static int
       
   536 ! append_arg_number(wp, buf, buflen, add_file)
       
   537       win_T	*wp;
       
   538       char_u	*buf;
       
   539 +     int		buflen;
       
   540       int		add_file;	/* Add "file" before the arg number */
       
   541   {
       
   542       char_u	*p;
       
   543   
       
   544       if (ARGCOUNT <= 1)		/* nothing to do */
       
   545   	return FALSE;
       
   546   
       
   547 !     p = buf + STRLEN(buf);	/* go to the end of the buffer */
       
   548 !     if (p - buf + 35 >= buflen)	/* getting too long */
       
   549   	return FALSE;
       
   550       *p++ = ' ';
       
   551       *p++ = '(';
       
   552 ***************
       
   553 *** 4213,4219 ****
       
   554   	STRCPY(p, "file ");
       
   555   	p += 5;
       
   556       }
       
   557 !     sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)"
       
   558   				  : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
       
   559       return TRUE;
       
   560   }
       
   561 --- 4218,4225 ----
       
   562   	STRCPY(p, "file ");
       
   563   	p += 5;
       
   564       }
       
   565 !     vim_snprintf((char *)p, (size_t)(buflen - (p - buf)),
       
   566 ! 		wp->w_arg_idx_invalid ? "(%d) of %d)"
       
   567   				  : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
       
   568       return TRUE;
       
   569   }
       
   570 ***************
       
   571 *** 4996,5002 ****
       
   572   	if (tab != NULL)
       
   573   	{
       
   574   	    *tab++ = '\0';
       
   575 ! 	    col = atoi((char *)tab);
       
   576   	    tab = vim_strrchr(xline, '\t');
       
   577   	    if (tab != NULL)
       
   578   	    {
       
   579 --- 5002,5008 ----
       
   580   	if (tab != NULL)
       
   581   	{
       
   582   	    *tab++ = '\0';
       
   583 ! 	    col = (colnr_T)atoi((char *)tab);
       
   584   	    tab = vim_strrchr(xline, '\t');
       
   585   	    if (tab != NULL)
       
   586   	    {
       
   587 ***************
       
   588 *** 5034,5039 ****
       
   589 --- 5040,5046 ----
       
   590   #endif
       
   591       char_u	*line;
       
   592       int		max_buffers;
       
   593 +     size_t	len;
       
   594   
       
   595       if (find_viminfo_parameter('%') == NULL)
       
   596   	return;
       
   597 ***************
       
   598 *** 5042,5048 ****
       
   599       max_buffers = get_viminfo_parameter('%');
       
   600   
       
   601       /* Allocate room for the file name, lnum and col. */
       
   602 !     line = alloc(MAXPATHL + 40);
       
   603       if (line == NULL)
       
   604   	return;
       
   605   
       
   606 --- 5049,5056 ----
       
   607       max_buffers = get_viminfo_parameter('%');
       
   608   
       
   609       /* Allocate room for the file name, lnum and col. */
       
   610 ! #define LINE_BUF_LEN (MAXPATHL + 40)
       
   611 !     line = alloc(LINE_BUF_LEN);
       
   612       if (line == NULL)
       
   613   	return;
       
   614   
       
   615 ***************
       
   616 *** 5068,5074 ****
       
   617   	    break;
       
   618   	putc('%', fp);
       
   619   	home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
       
   620 ! 	sprintf((char *)line + STRLEN(line), "\t%ld\t%d",
       
   621   			(long)buf->b_last_cursor.lnum,
       
   622   			buf->b_last_cursor.col);
       
   623   	viminfo_writestring(fp, line);
       
   624 --- 5076,5083 ----
       
   625   	    break;
       
   626   	putc('%', fp);
       
   627   	home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
       
   628 ! 	len = STRLEN(line);
       
   629 ! 	vim_snprintf((char *)line + len, len - LINE_BUF_LEN, "\t%ld\t%d",
       
   630   			(long)buf->b_last_cursor.lnum,
       
   631   			buf->b_last_cursor.col);
       
   632   	viminfo_writestring(fp, line);
       
   633 ***************
       
   634 *** 5226,5232 ****
       
   635       return;
       
   636   }
       
   637   
       
   638 !     int
       
   639   buf_change_sign_type(buf, markId, typenr)
       
   640       buf_T	*buf;		/* buffer to store sign in */
       
   641       int		markId;		/* sign ID */
       
   642 --- 5235,5241 ----
       
   643       return;
       
   644   }
       
   645   
       
   646 !     linenr_T
       
   647   buf_change_sign_type(buf, markId, typenr)
       
   648       buf_T	*buf;		/* buffer to store sign in */
       
   649       int		markId;		/* sign ID */
       
   650 ***************
       
   651 *** 5243,5252 ****
       
   652   	}
       
   653       }
       
   654   
       
   655 !     return 0;
       
   656   }
       
   657   
       
   658 !     int_u
       
   659   buf_getsigntype(buf, lnum, type)
       
   660       buf_T	*buf;
       
   661       linenr_T	lnum;
       
   662 --- 5252,5261 ----
       
   663   	}
       
   664       }
       
   665   
       
   666 !     return (linenr_T)0;
       
   667   }
       
   668   
       
   669 !     int
       
   670   buf_getsigntype(buf, lnum, type)
       
   671       buf_T	*buf;
       
   672       linenr_T	lnum;
       
   673 *** ../vim-7.2.166/src/charset.c	2008-07-24 21:30:44.000000000 +0200
       
   674 --- src/charset.c	2009-05-05 18:17:11.000000000 +0200
       
   675 ***************
       
   676 *** 17,23 ****
       
   677   static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
       
   678   #endif
       
   679   
       
   680 ! static int nr2hex __ARGS((int c));
       
   681   
       
   682   static int    chartab_initialized = FALSE;
       
   683   
       
   684 --- 17,23 ----
       
   685   static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
       
   686   #endif
       
   687   
       
   688 ! static unsigned nr2hex __ARGS((unsigned c));
       
   689   
       
   690   static int    chartab_initialized = FALSE;
       
   691   
       
   692 ***************
       
   693 *** 664,670 ****
       
   694       }
       
   695   #endif
       
   696       buf[++i] = nr2hex((unsigned)c >> 4);
       
   697 !     buf[++i] = nr2hex(c);
       
   698       buf[++i] = '>';
       
   699       buf[++i] = NUL;
       
   700   }
       
   701 --- 664,670 ----
       
   702       }
       
   703   #endif
       
   704       buf[++i] = nr2hex((unsigned)c >> 4);
       
   705 !     buf[++i] = nr2hex((unsigned)c);
       
   706       buf[++i] = '>';
       
   707       buf[++i] = NUL;
       
   708   }
       
   709 ***************
       
   710 *** 674,682 ****
       
   711    * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
       
   712    * function key 1.
       
   713    */
       
   714 !     static int
       
   715   nr2hex(c)
       
   716 !     int		c;
       
   717   {
       
   718       if ((c & 0xf) <= 9)
       
   719   	return (c & 0xf) + '0';
       
   720 --- 674,682 ----
       
   721    * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
       
   722    * function key 1.
       
   723    */
       
   724 !     static unsigned
       
   725   nr2hex(c)
       
   726 !     unsigned	c;
       
   727   {
       
   728       if ((c & 0xf) <= 9)
       
   729   	return (c & 0xf) + '0';
       
   730 ***************
       
   731 *** 884,890 ****
       
   732       if (c >= 0x100)
       
   733       {
       
   734   	if (enc_dbcs != 0)
       
   735 ! 	    return dbcs_class((unsigned)c >> 8, c & 0xff) >= 2;
       
   736   	if (enc_utf8)
       
   737   	    return utf_class(c) >= 2;
       
   738       }
       
   739 --- 884,890 ----
       
   740       if (c >= 0x100)
       
   741       {
       
   742   	if (enc_dbcs != 0)
       
   743 ! 	    return dbcs_class((unsigned)c >> 8, (unsigned)(c & 0xff)) >= 2;
       
   744   	if (enc_utf8)
       
   745   	    return utf_class(c) >= 2;
       
   746       }
       
   747 ***************
       
   748 *** 1090,1096 ****
       
   749   	 */
       
   750   	numberextra = win_col_off(wp);
       
   751   	col2 = col;
       
   752 ! 	colmax = W_WIDTH(wp) - numberextra;
       
   753   	if (col >= colmax)
       
   754   	{
       
   755   	    n = colmax + win_col_off2(wp);
       
   756 --- 1090,1096 ----
       
   757   	 */
       
   758   	numberextra = win_col_off(wp);
       
   759   	col2 = col;
       
   760 ! 	colmax = (colnr_T)(W_WIDTH(wp) - numberextra);
       
   761   	if (col >= colmax)
       
   762   	{
       
   763   	    n = colmax + win_col_off2(wp);
       
   764 ***************
       
   765 *** 1201,1217 ****
       
   766       win_T	*wp;
       
   767       colnr_T	vcol;
       
   768   {
       
   769 !     colnr_T	width1;		/* width of first line (after line number) */
       
   770 !     colnr_T	width2;		/* width of further lines */
       
   771   
       
   772   #ifdef FEAT_VERTSPLIT
       
   773       if (wp->w_width == 0)	/* there is no border */
       
   774   	return FALSE;
       
   775   #endif
       
   776       width1 = W_WIDTH(wp) - win_col_off(wp);
       
   777 !     if (vcol < width1 - 1)
       
   778   	return FALSE;
       
   779 !     if (vcol == width1 - 1)
       
   780   	return TRUE;
       
   781       width2 = width1 + win_col_off2(wp);
       
   782       return ((vcol - width1) % width2 == width2 - 1);
       
   783 --- 1201,1217 ----
       
   784       win_T	*wp;
       
   785       colnr_T	vcol;
       
   786   {
       
   787 !     int		width1;		/* width of first line (after line number) */
       
   788 !     int		width2;		/* width of further lines */
       
   789   
       
   790   #ifdef FEAT_VERTSPLIT
       
   791       if (wp->w_width == 0)	/* there is no border */
       
   792   	return FALSE;
       
   793   #endif
       
   794       width1 = W_WIDTH(wp) - win_col_off(wp);
       
   795 !     if ((int)vcol < width1 - 1)
       
   796   	return FALSE;
       
   797 !     if ((int)vcol == width1 - 1)
       
   798   	return TRUE;
       
   799       width2 = width1 + win_col_off2(wp);
       
   800       return ((vcol - width1) % width2 == width2 - 1);
       
   801 ***************
       
   802 *** 1396,1408 ****
       
   803   # ifdef FEAT_MBYTE
       
   804   	/* Cannot put the cursor on part of a wide character. */
       
   805   	ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
       
   806 ! 	if (pos->col < STRLEN(ptr))
       
   807   	{
       
   808   	    int c = (*mb_ptr2char)(ptr + pos->col);
       
   809   
       
   810   	    if (c != TAB && vim_isprintc(c))
       
   811   	    {
       
   812 ! 		endadd = char2cells(c) - 1;
       
   813   		if (coladd > endadd)	/* past end of line */
       
   814   		    endadd = 0;
       
   815   		else
       
   816 --- 1396,1408 ----
       
   817   # ifdef FEAT_MBYTE
       
   818   	/* Cannot put the cursor on part of a wide character. */
       
   819   	ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
       
   820 ! 	if (pos->col < (colnr_T)STRLEN(ptr))
       
   821   	{
       
   822   	    int c = (*mb_ptr2char)(ptr + pos->col);
       
   823   
       
   824   	    if (c != TAB && vim_isprintc(c))
       
   825   	    {
       
   826 ! 		endadd = (colnr_T)(char2cells(c) - 1);
       
   827   		if (coladd > endadd)	/* past end of line */
       
   828   		    endadd = 0;
       
   829   		else
       
   830 *** ../vim-7.2.166/src/cleanlint.vim	2009-05-13 12:08:12.000000000 +0200
       
   831 --- src/cleanlint.vim	2009-05-05 21:34:01.000000000 +0200
       
   832 ***************
       
   833 *** 0 ****
       
   834 --- 1,27 ----
       
   835 + " Vim tool: Filter output of splint
       
   836 + "
       
   837 + " Maintainer:	Bram Moolenaar <[email protected]>
       
   838 + " Last Change:	2009 May 05
       
   839 + 
       
   840 + " Usage: redirect output of "make lint" to a file, edit that file with Vim and
       
   841 + " :call CleanLint()
       
   842 + " This deletes irrelevant messages.  What remains might be valid warnings.
       
   843 + 
       
   844 + fun! CleanLint()
       
   845 +   g/^  Types are incompatible/lockmarks d
       
   846 +   g/Assignment of dev_t to __dev_t:/lockmarks d
       
   847 +   g/Assignment of __dev_t to dev_t:/lockmarks d
       
   848 +   g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
       
   849 +   g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
       
   850 +   g/Assignment of char to char_u: /lockmarks d
       
   851 +   g/Assignment of unsigned int to int: /lockmarks d
       
   852 +   g/Assignment of colnr_T to int: /lockmarks d
       
   853 +   g/Assignment of int to char_u: /lockmarks d
       
   854 +   g/Function .* expects arg . to be wint_t gets int: /lockmarks d
       
   855 +   g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
       
   856 +   g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
       
   857 +   g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
       
   858 +   g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
       
   859 +   g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
       
   860 +   g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
       
   861 + endfun
       
   862 *** ../vim-7.2.166/src/digraph.c	2008-06-25 00:26:41.000000000 +0200
       
   863 --- src/digraph.c	2009-05-05 20:32:43.000000000 +0200
       
   864 ***************
       
   865 *** 32,38 ****
       
   866   static void printdigraph __ARGS((digr_T *));
       
   867   
       
   868   /* digraphs added by the user */
       
   869 ! static garray_T	user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
       
   870   
       
   871   /*
       
   872    * Note: Characters marked with XX are not included literally, because some
       
   873 --- 32,38 ----
       
   874   static void printdigraph __ARGS((digr_T *));
       
   875   
       
   876   /* digraphs added by the user */
       
   877 ! static garray_T	user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL};
       
   878   
       
   879   /*
       
   880    * Note: Characters marked with XX are not included literally, because some
       
   881 ***************
       
   882 *** 2371,2380 ****
       
   883   	}
       
   884   	else
       
   885   #endif
       
   886 ! 	    *p++ = dp->result;
       
   887   	if (char2cells(dp->result) == 1)
       
   888   	    *p++ = ' ';
       
   889 ! 	sprintf((char *)p, " %3d", dp->result);
       
   890   	msg_outtrans(buf);
       
   891       }
       
   892   }
       
   893 --- 2371,2380 ----
       
   894   	}
       
   895   	else
       
   896   #endif
       
   897 ! 	    *p++ = (char_u)dp->result;
       
   898   	if (char2cells(dp->result) == 1)
       
   899   	    *p++ = ' ';
       
   900 ! 	vim_snprintf((char *)p, sizeof(buf) - (p - buf), " %3d", dp->result);
       
   901   	msg_outtrans(buf);
       
   902       }
       
   903   }
       
   904 ***************
       
   905 *** 2395,2401 ****
       
   906   static void keymap_unload __ARGS((void));
       
   907   
       
   908   /*
       
   909 !  * Set up key mapping tables for the 'keymap' option
       
   910    */
       
   911       char_u *
       
   912   keymap_init()
       
   913 --- 2395,2404 ----
       
   914   static void keymap_unload __ARGS((void));
       
   915   
       
   916   /*
       
   917 !  * Set up key mapping tables for the 'keymap' option.
       
   918 !  * Returns NULL if OK, an error message for failure.  This only needs to be
       
   919 !  * used when setting the option, not later when the value has already been
       
   920 !  * checked.
       
   921    */
       
   922       char_u *
       
   923   keymap_init()
       
   924 ***************
       
   925 *** 2412,2436 ****
       
   926       else
       
   927       {
       
   928   	char_u	*buf;
       
   929   
       
   930   	/* Source the keymap file.  It will contain a ":loadkeymap" command
       
   931   	 * which will call ex_loadkeymap() below. */
       
   932 ! 	buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
       
   933   # ifdef FEAT_MBYTE
       
   934 ! 						       + STRLEN(p_enc)
       
   935   # endif
       
   936 ! 						       + 14));
       
   937   	if (buf == NULL)
       
   938   	    return e_outofmem;
       
   939   
       
   940   # ifdef FEAT_MBYTE
       
   941   	/* try finding "keymap/'keymap'_'encoding'.vim"  in 'runtimepath' */
       
   942 ! 	sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc);
       
   943   	if (source_runtime(buf, FALSE) == FAIL)
       
   944   # endif
       
   945   	{
       
   946   	    /* try finding "keymap/'keymap'.vim" in 'runtimepath'  */
       
   947 ! 	    sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
       
   948   	    if (source_runtime(buf, FALSE) == FAIL)
       
   949   	    {
       
   950   		vim_free(buf);
       
   951 --- 2415,2443 ----
       
   952       else
       
   953       {
       
   954   	char_u	*buf;
       
   955 + 	size_t  buflen;
       
   956   
       
   957   	/* Source the keymap file.  It will contain a ":loadkeymap" command
       
   958   	 * which will call ex_loadkeymap() below. */
       
   959 ! 	buflen = STRLEN(curbuf->b_p_keymap)
       
   960   # ifdef FEAT_MBYTE
       
   961 ! 					   + STRLEN(p_enc)
       
   962   # endif
       
   963 ! 						       + 14;
       
   964 ! 	buf = alloc((unsigned)buflen);
       
   965   	if (buf == NULL)
       
   966   	    return e_outofmem;
       
   967   
       
   968   # ifdef FEAT_MBYTE
       
   969   	/* try finding "keymap/'keymap'_'encoding'.vim"  in 'runtimepath' */
       
   970 ! 	vim_snprintf((char *)buf, buflen, "keymap/%s_%s.vim",
       
   971 ! 						   curbuf->b_p_keymap, p_enc);
       
   972   	if (source_runtime(buf, FALSE) == FAIL)
       
   973   # endif
       
   974   	{
       
   975   	    /* try finding "keymap/'keymap'.vim" in 'runtimepath'  */
       
   976 ! 	    vim_snprintf((char *)buf, buflen, "keymap/%s.vim",
       
   977 ! 							  curbuf->b_p_keymap);
       
   978   	    if (source_runtime(buf, FALSE) == FAIL)
       
   979   	    {
       
   980   		vim_free(buf);
       
   981 *** ../vim-7.2.166/src/edit.c	2009-02-21 20:27:00.000000000 +0100
       
   982 --- src/edit.c	2009-05-05 21:14:50.000000000 +0200
       
   983 ***************
       
   984 *** 57,63 ****
       
   985       N_(" Keyword Local completion (^N^P)"),
       
   986   };
       
   987   
       
   988 ! static char_u e_hitend[] = N_("Hit end of paragraph");
       
   989   
       
   990   /*
       
   991    * Structure used to store one match for insert completion.
       
   992 --- 57,63 ----
       
   993       N_(" Keyword Local completion (^N^P)"),
       
   994   };
       
   995   
       
   996 ! static char e_hitend[] = N_("Hit end of paragraph");
       
   997   
       
   998   /*
       
   999    * Structure used to store one match for insert completion.
       
  1000 ***************
       
  1001 *** 69,75 ****
       
  1002 --- 69,79 ----
       
  1003       compl_T	*cp_prev;
       
  1004       char_u	*cp_str;	/* matched text */
       
  1005       char	cp_icase;	/* TRUE or FALSE: ignore case */
       
  1006 + #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
       
  1007 +     char_u	**cp_text;	/* text for the menu */
       
  1008 + #else
       
  1009       char_u	*(cp_text[CPT_COUNT]);	/* text for the menu */
       
  1010 + #endif
       
  1011       char_u	*cp_fname;	/* file containing the match, allocated when
       
  1012   				 * cp_flags has FREE_FNAME */
       
  1013       int		cp_flags;	/* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */
       
  1014 ***************
       
  1015 *** 306,312 ****
       
  1016       int		c = 0;
       
  1017       char_u	*ptr;
       
  1018       int		lastc;
       
  1019 !     colnr_T	mincol;
       
  1020       static linenr_T o_lnum = 0;
       
  1021       int		i;
       
  1022       int		did_backspace = TRUE;	    /* previous char was backspace */
       
  1023 --- 310,316 ----
       
  1024       int		c = 0;
       
  1025       char_u	*ptr;
       
  1026       int		lastc;
       
  1027 !     int		mincol;
       
  1028       static linenr_T o_lnum = 0;
       
  1029       int		i;
       
  1030       int		did_backspace = TRUE;	    /* previous char was backspace */
       
  1031 ***************
       
  1032 *** 387,393 ****
       
  1033   	if (startln)
       
  1034   	    Insstart.col = 0;
       
  1035       }
       
  1036 !     Insstart_textlen = linetabsize(ml_get_curline());
       
  1037       Insstart_blank_vcol = MAXCOL;
       
  1038       if (!did_ai)
       
  1039   	ai_col = 0;
       
  1040 --- 391,397 ----
       
  1041   	if (startln)
       
  1042   	    Insstart.col = 0;
       
  1043       }
       
  1044 !     Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
       
  1045       Insstart_blank_vcol = MAXCOL;
       
  1046       if (!did_ai)
       
  1047   	ai_col = 0;
       
  1048 ***************
       
  1049 *** 653,659 ****
       
  1050   	    mincol = curwin->w_wcol;
       
  1051   	    validate_cursor_col();
       
  1052   
       
  1053 ! 	    if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts
       
  1054   		    && curwin->w_wrow == W_WINROW(curwin)
       
  1055   						 + curwin->w_height - 1 - p_so
       
  1056   		    && (curwin->w_cursor.lnum != curwin->w_topline
       
  1057 --- 657,663 ----
       
  1058   	    mincol = curwin->w_wcol;
       
  1059   	    validate_cursor_col();
       
  1060   
       
  1061 ! 	    if ((int)curwin->w_wcol < mincol - curbuf->b_p_ts
       
  1062   		    && curwin->w_wrow == W_WINROW(curwin)
       
  1063   						 + curwin->w_height - 1 - p_so
       
  1064   		    && (curwin->w_cursor.lnum != curwin->w_topline
       
  1065 ***************
       
  1066 *** 1773,1779 ****
       
  1067   	 * Compute the screen column where the cursor should be.
       
  1068   	 */
       
  1069   	vcol = get_indent() - vcol;
       
  1070 ! 	curwin->w_virtcol = (vcol < 0) ? 0 : vcol;
       
  1071   
       
  1072   	/*
       
  1073   	 * Advance the cursor until we reach the right screen column.
       
  1074 --- 1777,1783 ----
       
  1075   	 * Compute the screen column where the cursor should be.
       
  1076   	 */
       
  1077   	vcol = get_indent() - vcol;
       
  1078 ! 	curwin->w_virtcol = (colnr_T)((vcol < 0) ? 0 : vcol);
       
  1079   
       
  1080   	/*
       
  1081   	 * Advance the cursor until we reach the right screen column.
       
  1082 ***************
       
  1083 *** 1800,1808 ****
       
  1084   	 */
       
  1085   	if (vcol != (int)curwin->w_virtcol)
       
  1086   	{
       
  1087 ! 	    curwin->w_cursor.col = new_cursor_col;
       
  1088   	    i = (int)curwin->w_virtcol - vcol;
       
  1089 ! 	    ptr = alloc(i + 1);
       
  1090   	    if (ptr != NULL)
       
  1091   	    {
       
  1092   		new_cursor_col += i;
       
  1093 --- 1804,1812 ----
       
  1094   	 */
       
  1095   	if (vcol != (int)curwin->w_virtcol)
       
  1096   	{
       
  1097 ! 	    curwin->w_cursor.col = (colnr_T)new_cursor_col;
       
  1098   	    i = (int)curwin->w_virtcol - vcol;
       
  1099 ! 	    ptr = alloc((unsigned)(i + 1));
       
  1100   	    if (ptr != NULL)
       
  1101   	    {
       
  1102   		new_cursor_col += i;
       
  1103 ***************
       
  1104 *** 1826,1832 ****
       
  1105       if (new_cursor_col <= 0)
       
  1106   	curwin->w_cursor.col = 0;
       
  1107       else
       
  1108 ! 	curwin->w_cursor.col = new_cursor_col;
       
  1109       curwin->w_set_curswant = TRUE;
       
  1110       changed_cline_bef_curs();
       
  1111   
       
  1112 --- 1830,1836 ----
       
  1113       if (new_cursor_col <= 0)
       
  1114   	curwin->w_cursor.col = 0;
       
  1115       else
       
  1116 ! 	curwin->w_cursor.col = (colnr_T)new_cursor_col;
       
  1117       curwin->w_set_curswant = TRUE;
       
  1118       changed_cline_bef_curs();
       
  1119   
       
  1120 ***************
       
  1121 *** 1966,1972 ****
       
  1122   #ifdef FEAT_MBYTE
       
  1123       if (enc_utf8 && limit_col >= 0)
       
  1124       {
       
  1125 ! 	int ecol = curwin->w_cursor.col + 1;
       
  1126   
       
  1127   	/* Make sure the cursor is at the start of a character, but
       
  1128   	 * skip forward again when going too far back because of a
       
  1129 --- 1970,1976 ----
       
  1130   #ifdef FEAT_MBYTE
       
  1131       if (enc_utf8 && limit_col >= 0)
       
  1132       {
       
  1133 ! 	colnr_T ecol = curwin->w_cursor.col + 1;
       
  1134   
       
  1135   	/* Make sure the cursor is at the start of a character, but
       
  1136   	 * skip forward again when going too far back because of a
       
  1137 ***************
       
  1138 *** 1982,1988 ****
       
  1139   	}
       
  1140   	if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
       
  1141   	    return FALSE;
       
  1142 ! 	del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
       
  1143       }
       
  1144       else
       
  1145   #endif
       
  1146 --- 1986,1992 ----
       
  1147   	}
       
  1148   	if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
       
  1149   	    return FALSE;
       
  1150 ! 	del_bytes((long)((int)ecol - curwin->w_cursor.col), FALSE, TRUE);
       
  1151       }
       
  1152       else
       
  1153   #endif
       
  1154 ***************
       
  1155 *** 2201,2207 ****
       
  1156   	    actual_compl_length = compl_length;
       
  1157   
       
  1158   	/* Allocate wide character array for the completion and fill it. */
       
  1159 ! 	wca = (int *)alloc(actual_len * sizeof(int));
       
  1160   	if (wca != NULL)
       
  1161   	{
       
  1162   	    p = str;
       
  1163 --- 2205,2211 ----
       
  1164   	    actual_compl_length = compl_length;
       
  1165   
       
  1166   	/* Allocate wide character array for the completion and fill it. */
       
  1167 ! 	wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
       
  1168   	if (wca != NULL)
       
  1169   	{
       
  1170   	    p = str;
       
  1171 ***************
       
  1172 *** 2580,2586 ****
       
  1173    */
       
  1174       void
       
  1175   set_completion(startcol, list)
       
  1176 !     int	    startcol;
       
  1177       list_T  *list;
       
  1178   {
       
  1179       /* If already doing completions stop it. */
       
  1180 --- 2584,2590 ----
       
  1181    */
       
  1182       void
       
  1183   set_completion(startcol, list)
       
  1184 !     colnr_T startcol;
       
  1185       list_T  *list;
       
  1186   {
       
  1187       /* If already doing completions stop it. */
       
  1188 ***************
       
  1189 *** 2591,2600 ****
       
  1190       if (stop_arrow() == FAIL)
       
  1191   	return;
       
  1192   
       
  1193 !     if (startcol > (int)curwin->w_cursor.col)
       
  1194   	startcol = curwin->w_cursor.col;
       
  1195       compl_col = startcol;
       
  1196 !     compl_length = curwin->w_cursor.col - startcol;
       
  1197       /* compl_pattern doesn't need to be set */
       
  1198       compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
       
  1199       if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
       
  1200 --- 2595,2604 ----
       
  1201       if (stop_arrow() == FAIL)
       
  1202   	return;
       
  1203   
       
  1204 !     if (startcol > curwin->w_cursor.col)
       
  1205   	startcol = curwin->w_cursor.col;
       
  1206       compl_col = startcol;
       
  1207 !     compl_length = (int)curwin->w_cursor.col - (int)startcol;
       
  1208       /* compl_pattern doesn't need to be set */
       
  1209       compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
       
  1210       if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
       
  1211 ***************
       
  1212 *** 2860,2866 ****
       
  1213       regmatch_T	regmatch;
       
  1214       char_u	**files;
       
  1215       int		count;
       
  1216 -     int		i;
       
  1217       int		save_p_scs;
       
  1218       int		dir = compl_direction;
       
  1219   
       
  1220 --- 2864,2869 ----
       
  1221 ***************
       
  1222 *** 2892,2908 ****
       
  1223       if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
       
  1224       {
       
  1225   	char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
       
  1226   
       
  1227   	if (pat_esc == NULL)
       
  1228   	    goto theend;
       
  1229 ! 	i = (int)STRLEN(pat_esc) + 10;
       
  1230 ! 	ptr = alloc(i);
       
  1231   	if (ptr == NULL)
       
  1232   	{
       
  1233   	    vim_free(pat_esc);
       
  1234   	    goto theend;
       
  1235   	}
       
  1236 ! 	vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
       
  1237   	regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
       
  1238   	vim_free(pat_esc);
       
  1239   	vim_free(ptr);
       
  1240 --- 2895,2912 ----
       
  1241       if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
       
  1242       {
       
  1243   	char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
       
  1244 + 	size_t len;
       
  1245   
       
  1246   	if (pat_esc == NULL)
       
  1247   	    goto theend;
       
  1248 ! 	len = STRLEN(pat_esc) + 10;
       
  1249 ! 	ptr = alloc((unsigned)len);
       
  1250   	if (ptr == NULL)
       
  1251   	{
       
  1252   	    vim_free(pat_esc);
       
  1253   	    goto theend;
       
  1254   	}
       
  1255 ! 	vim_snprintf((char *)ptr, len, "^\\s*\\zs\\V%s", pat_esc);
       
  1256   	regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
       
  1257   	vim_free(pat_esc);
       
  1258   	vim_free(ptr);
       
  1259 ***************
       
  1260 *** 2993,2999 ****
       
  1261   	{
       
  1262   	    vim_snprintf((char *)IObuff, IOSIZE,
       
  1263   			      _("Scanning dictionary: %s"), (char *)files[i]);
       
  1264 ! 	    msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1265   	}
       
  1266   
       
  1267   	if (fp != NULL)
       
  1268 --- 2997,3003 ----
       
  1269   	{
       
  1270   	    vim_snprintf((char *)IObuff, IOSIZE,
       
  1271   			      _("Scanning dictionary: %s"), (char *)files[i]);
       
  1272 ! 	    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1273   	}
       
  1274   
       
  1275   	if (fp != NULL)
       
  1276 ***************
       
  1277 *** 3311,3317 ****
       
  1278       static int
       
  1279   ins_compl_len()
       
  1280   {
       
  1281 !     int off = curwin->w_cursor.col - compl_col;
       
  1282   
       
  1283       if (off < 0)
       
  1284   	return 0;
       
  1285 --- 3315,3321 ----
       
  1286       static int
       
  1287   ins_compl_len()
       
  1288   {
       
  1289 !     int off = (int)curwin->w_cursor.col - (int)compl_col;
       
  1290   
       
  1291       if (off < 0)
       
  1292   	return 0;
       
  1293 ***************
       
  1294 *** 3347,3353 ****
       
  1295   
       
  1296       vim_free(compl_leader);
       
  1297       compl_leader = vim_strnsave(ml_get_curline() + compl_col,
       
  1298 ! 					    curwin->w_cursor.col - compl_col);
       
  1299       if (compl_leader != NULL)
       
  1300   	ins_compl_new_leader();
       
  1301   }
       
  1302 --- 3351,3357 ----
       
  1303   
       
  1304       vim_free(compl_leader);
       
  1305       compl_leader = vim_strnsave(ml_get_curline() + compl_col,
       
  1306 ! 				     (int)(curwin->w_cursor.col - compl_col));
       
  1307       if (compl_leader != NULL)
       
  1308   	ins_compl_new_leader();
       
  1309   }
       
  1310 ***************
       
  1311 *** 3395,3401 ****
       
  1312   ins_compl_addfrommatch()
       
  1313   {
       
  1314       char_u	*p;
       
  1315 !     int		len = curwin->w_cursor.col - compl_col;
       
  1316       int		c;
       
  1317       compl_T	*cp;
       
  1318   
       
  1319 --- 3399,3405 ----
       
  1320   ins_compl_addfrommatch()
       
  1321   {
       
  1322       char_u	*p;
       
  1323 !     int		len = (int)curwin->w_cursor.col - (int)compl_col;
       
  1324       int		c;
       
  1325       compl_T	*cp;
       
  1326   
       
  1327 ***************
       
  1328 *** 3961,3967 ****
       
  1329   			    : ins_buf->b_sfname == NULL
       
  1330   				? (char *)ins_buf->b_fname
       
  1331   				: (char *)ins_buf->b_sfname);
       
  1332 ! 		msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1333   	    }
       
  1334   	    else if (*e_cpt == NUL)
       
  1335   		break;
       
  1336 --- 3965,3971 ----
       
  1337   			    : ins_buf->b_sfname == NULL
       
  1338   				? (char *)ins_buf->b_fname
       
  1339   				: (char *)ins_buf->b_sfname);
       
  1340 ! 		(void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1341   	    }
       
  1342   	    else if (*e_cpt == NUL)
       
  1343   		break;
       
  1344 ***************
       
  1345 *** 3991,3997 ****
       
  1346   		{
       
  1347   		    type = CTRL_X_TAGS;
       
  1348   		    sprintf((char*)IObuff, _("Scanning tags."));
       
  1349 ! 		    msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1350   		}
       
  1351   		else
       
  1352   		    type = -1;
       
  1353 --- 3995,4001 ----
       
  1354   		{
       
  1355   		    type = CTRL_X_TAGS;
       
  1356   		    sprintf((char*)IObuff, _("Scanning tags."));
       
  1357 ! 		    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
       
  1358   		}
       
  1359   		else
       
  1360   		    type = -1;
       
  1361 ***************
       
  1362 *** 6320,6326 ****
       
  1363   	    ins_need_undo = FALSE;
       
  1364   	}
       
  1365   	Insstart = curwin->w_cursor;	/* new insertion starts here */
       
  1366 ! 	Insstart_textlen = linetabsize(ml_get_curline());
       
  1367   	ai_col = 0;
       
  1368   #ifdef FEAT_VREPLACE
       
  1369   	if (State & VREPLACE_FLAG)
       
  1370 --- 6324,6330 ----
       
  1371   	    ins_need_undo = FALSE;
       
  1372   	}
       
  1373   	Insstart = curwin->w_cursor;	/* new insertion starts here */
       
  1374 ! 	Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
       
  1375   	ai_col = 0;
       
  1376   #ifdef FEAT_VREPLACE
       
  1377   	if (State & VREPLACE_FLAG)
       
  1378 *** ../vim-7.2.166/src/ex_cmds.c	2009-04-29 18:44:38.000000000 +0200
       
  1379 --- src/ex_cmds.c	2009-05-05 17:55:40.000000000 +0200
       
  1380 ***************
       
  1381 *** 1789,1795 ****
       
  1382   	 * overwrite a user's viminfo file after a "su root", with a
       
  1383   	 * viminfo file that the user can't read.
       
  1384   	 */
       
  1385 ! 	st_old.st_dev = 0;
       
  1386   	st_old.st_ino = 0;
       
  1387   	st_old.st_mode = 0600;
       
  1388   	if (mch_stat((char *)fname, &st_old) == 0
       
  1389 --- 1789,1795 ----
       
  1390   	 * overwrite a user's viminfo file after a "su root", with a
       
  1391   	 * viminfo file that the user can't read.
       
  1392   	 */
       
  1393 ! 	st_old.st_dev = (dev_t)0;
       
  1394   	st_old.st_ino = 0;
       
  1395   	st_old.st_mode = 0600;
       
  1396   	if (mch_stat((char *)fname, &st_old) == 0
       
  1397 ***************
       
  1398 *** 3715,3721 ****
       
  1399       /* If the window options were changed may need to set the spell language.
       
  1400        * Can only do this after the buffer has been properly setup. */
       
  1401       if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
       
  1402 ! 	did_set_spelllang(curbuf);
       
  1403   #endif
       
  1404   
       
  1405       if (command == NULL)
       
  1406 --- 3715,3721 ----
       
  1407       /* If the window options were changed may need to set the spell language.
       
  1408        * Can only do this after the buffer has been properly setup. */
       
  1409       if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
       
  1410 ! 	(void)did_set_spelllang(curbuf);
       
  1411   #endif
       
  1412   
       
  1413       if (command == NULL)
       
  1414 ***************
       
  1415 *** 3788,3794 ****
       
  1416   
       
  1417   #ifdef FEAT_KEYMAP
       
  1418       if (curbuf->b_kmap_state & KEYMAP_INIT)
       
  1419 ! 	keymap_init();
       
  1420   #endif
       
  1421   
       
  1422       --RedrawingDisabled;
       
  1423 --- 3788,3794 ----
       
  1424   
       
  1425   #ifdef FEAT_KEYMAP
       
  1426       if (curbuf->b_kmap_state & KEYMAP_INIT)
       
  1427 ! 	(void)keymap_init();
       
  1428   #endif
       
  1429   
       
  1430       --RedrawingDisabled;
       
  1431 *** ../vim-7.2.166/src/globals.h	2009-03-05 03:13:51.000000000 +0100
       
  1432 --- src/globals.h	2009-05-09 21:14:49.000000000 +0200
       
  1433 ***************
       
  1434 *** 524,530 ****
       
  1435   EXTERN win_T	*prevwin INIT(= NULL);	/* previous window */
       
  1436   # define W_NEXT(wp) ((wp)->w_next)
       
  1437   # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
       
  1438 ! #define FOR_ALL_TAB_WINDOWS(tp, wp) \
       
  1439       for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
       
  1440   	for ((wp) = ((tp) == curtab) \
       
  1441   		? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
       
  1442 --- 524,530 ----
       
  1443   EXTERN win_T	*prevwin INIT(= NULL);	/* previous window */
       
  1444   # define W_NEXT(wp) ((wp)->w_next)
       
  1445   # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
       
  1446 ! # define FOR_ALL_TAB_WINDOWS(tp, wp) \
       
  1447       for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
       
  1448   	for ((wp) = ((tp) == curtab) \
       
  1449   		? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
       
  1450 ***************
       
  1451 *** 718,724 ****
       
  1452   
       
  1453   EXTERN pos_T	saved_cursor		/* w_cursor before formatting text. */
       
  1454   # ifdef DO_INIT
       
  1455 ! 	= INIT_POS_T
       
  1456   # endif
       
  1457   	;
       
  1458   
       
  1459 --- 718,724 ----
       
  1460   
       
  1461   EXTERN pos_T	saved_cursor		/* w_cursor before formatting text. */
       
  1462   # ifdef DO_INIT
       
  1463 ! 	= INIT_POS_T(0, 0, 0)
       
  1464   # endif
       
  1465   	;
       
  1466   
       
  1467 ***************
       
  1468 *** 1039,1045 ****
       
  1469   EXTERN int	did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
       
  1470   EXTERN pos_T	last_cursormoved	    /* for CursorMoved event */
       
  1471   # ifdef DO_INIT
       
  1472 ! 			= INIT_POS_T
       
  1473   # endif
       
  1474   			;
       
  1475   #endif
       
  1476 --- 1039,1045 ----
       
  1477   EXTERN int	did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
       
  1478   EXTERN pos_T	last_cursormoved	    /* for CursorMoved event */
       
  1479   # ifdef DO_INIT
       
  1480 ! 			= INIT_POS_T(0, 0, 0)
       
  1481   # endif
       
  1482   			;
       
  1483   #endif
       
  1484 *** ../vim-7.2.166/src/ops.c	2009-04-29 17:39:17.000000000 +0200
       
  1485 --- src/ops.c	2009-05-13 12:41:02.000000000 +0200
       
  1486 ***************
       
  1487 *** 6400,6406 ****
       
  1488   	    {
       
  1489   		getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
       
  1490   								&max_pos.col);
       
  1491 ! 		sprintf((char *)buf1, _("%ld Cols; "),
       
  1492   			(long)(oparg.end_vcol - oparg.start_vcol + 1));
       
  1493   	    }
       
  1494   	    else
       
  1495 --- 6400,6406 ----
       
  1496   	    {
       
  1497   		getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
       
  1498   								&max_pos.col);
       
  1499 ! 		vim_snprintf((char *)buf1, sizeof(buf1), _("%ld Cols; "),
       
  1500   			(long)(oparg.end_vcol - oparg.start_vcol + 1));
       
  1501   	    }
       
  1502   	    else
       
  1503 ***************
       
  1504 *** 6408,6420 ****
       
  1505   
       
  1506   	    if (char_count_cursor == byte_count_cursor
       
  1507   						  && char_count == byte_count)
       
  1508 ! 		sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
       
  1509   			buf1, line_count_selected,
       
  1510   			(long)curbuf->b_ml.ml_line_count,
       
  1511   			word_count_cursor, word_count,
       
  1512   			byte_count_cursor, byte_count);
       
  1513   	    else
       
  1514 ! 		sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
       
  1515   			buf1, line_count_selected,
       
  1516   			(long)curbuf->b_ml.ml_line_count,
       
  1517   			word_count_cursor, word_count,
       
  1518 --- 6408,6422 ----
       
  1519   
       
  1520   	    if (char_count_cursor == byte_count_cursor
       
  1521   						  && char_count == byte_count)
       
  1522 ! 		vim_snprintf((char *)IObuff, IOSIZE,
       
  1523 ! 			_("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
       
  1524   			buf1, line_count_selected,
       
  1525   			(long)curbuf->b_ml.ml_line_count,
       
  1526   			word_count_cursor, word_count,
       
  1527   			byte_count_cursor, byte_count);
       
  1528   	    else
       
  1529 ! 		vim_snprintf((char *)IObuff, IOSIZE,
       
  1530 ! 			_("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
       
  1531   			buf1, line_count_selected,
       
  1532   			(long)curbuf->b_ml.ml_line_count,
       
  1533   			word_count_cursor, word_count,
       
  1534 ***************
       
  1535 *** 6426,6445 ****
       
  1536   	{
       
  1537   	    p = ml_get_curline();
       
  1538   	    validate_virtcol();
       
  1539 ! 	    col_print(buf1, (int)curwin->w_cursor.col + 1,
       
  1540   		    (int)curwin->w_virtcol + 1);
       
  1541 ! 	    col_print(buf2, (int)STRLEN(p), linetabsize(p));
       
  1542   
       
  1543   	    if (char_count_cursor == byte_count_cursor
       
  1544   		    && char_count == byte_count)
       
  1545 ! 		sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
       
  1546   		    (char *)buf1, (char *)buf2,
       
  1547   		    (long)curwin->w_cursor.lnum,
       
  1548   		    (long)curbuf->b_ml.ml_line_count,
       
  1549   		    word_count_cursor, word_count,
       
  1550   		    byte_count_cursor, byte_count);
       
  1551   	    else
       
  1552 ! 		sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
       
  1553   		    (char *)buf1, (char *)buf2,
       
  1554   		    (long)curwin->w_cursor.lnum,
       
  1555   		    (long)curbuf->b_ml.ml_line_count,
       
  1556 --- 6428,6449 ----
       
  1557   	{
       
  1558   	    p = ml_get_curline();
       
  1559   	    validate_virtcol();
       
  1560 ! 	    col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1,
       
  1561   		    (int)curwin->w_virtcol + 1);
       
  1562 ! 	    col_print(buf2, sizeof(buf2), (int)STRLEN(p), linetabsize(p));
       
  1563   
       
  1564   	    if (char_count_cursor == byte_count_cursor
       
  1565   		    && char_count == byte_count)
       
  1566 ! 		vim_snprintf((char *)IObuff, IOSIZE,
       
  1567 ! 		    _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
       
  1568   		    (char *)buf1, (char *)buf2,
       
  1569   		    (long)curwin->w_cursor.lnum,
       
  1570   		    (long)curbuf->b_ml.ml_line_count,
       
  1571   		    word_count_cursor, word_count,
       
  1572   		    byte_count_cursor, byte_count);
       
  1573   	    else
       
  1574 ! 		vim_snprintf((char *)IObuff, IOSIZE,
       
  1575 ! 		    _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
       
  1576   		    (char *)buf1, (char *)buf2,
       
  1577   		    (long)curwin->w_cursor.lnum,
       
  1578   		    (long)curbuf->b_ml.ml_line_count,
       
  1579 *** ../vim-7.2.166/src/os_unix.c	2009-03-02 02:44:54.000000000 +0100
       
  1580 --- src/os_unix.c	2009-05-05 17:35:58.000000000 +0200
       
  1581 ***************
       
  1582 *** 199,205 ****
       
  1583   #endif
       
  1584   
       
  1585   #ifndef SIG_ERR
       
  1586 ! # define SIG_ERR	((RETSIGTYPE (*)())-1)
       
  1587   #endif
       
  1588   
       
  1589   /* volatile because it is used in signal handler sig_winch(). */
       
  1590 --- 199,207 ----
       
  1591   #endif
       
  1592   
       
  1593   #ifndef SIG_ERR
       
  1594 ! # ifndef S_SPLINT_S
       
  1595 ! #  define SIG_ERR	((RETSIGTYPE (*)())-1)
       
  1596 ! # endif
       
  1597   #endif
       
  1598   
       
  1599   /* volatile because it is used in signal handler sig_winch(). */
       
  1600 ***************
       
  1601 *** 441,447 ****
       
  1602   
       
  1603   #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
       
  1604   # ifdef HAVE_SYS_RESOURCE_H
       
  1605 ! #  include <sys/resource.h>
       
  1606   # endif
       
  1607   # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
       
  1608   #  include <sys/sysctl.h>
       
  1609 --- 443,451 ----
       
  1610   
       
  1611   #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
       
  1612   # ifdef HAVE_SYS_RESOURCE_H
       
  1613 ! #  ifndef S_SPLINT_S  /* splint crashes on bits/resource.h */
       
  1614 ! #   include <sys/resource.h>
       
  1615 ! #  endif
       
  1616   # endif
       
  1617   # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
       
  1618   #  include <sys/sysctl.h>
       
  1619 *** ../vim-7.2.166/src/os_unix.h	2008-06-20 18:06:36.000000000 +0200
       
  1620 --- src/os_unix.h	2009-05-05 17:07:45.000000000 +0200
       
  1621 ***************
       
  1622 *** 53,59 ****
       
  1623   #endif
       
  1624   
       
  1625   #ifdef HAVE_UNISTD_H
       
  1626 ! # include <unistd.h>
       
  1627   #endif
       
  1628   
       
  1629   #ifdef HAVE_LIBC_H
       
  1630 --- 53,61 ----
       
  1631   #endif
       
  1632   
       
  1633   #ifdef HAVE_UNISTD_H
       
  1634 ! # ifndef S_SPLINT_S  /* splint crashes on bits/confname.h */
       
  1635 ! #  include <unistd.h>
       
  1636 ! # endif
       
  1637   #endif
       
  1638   
       
  1639   #ifdef HAVE_LIBC_H
       
  1640 *** ../vim-7.2.166/src/proto/buffer.pro	2008-11-15 14:10:23.000000000 +0100
       
  1641 --- src/proto/buffer.pro	2009-05-13 12:23:41.000000000 +0200
       
  1642 ***************
       
  1643 *** 37,49 ****
       
  1644   int otherfile __ARGS((char_u *ffname));
       
  1645   void buf_setino __ARGS((buf_T *buf));
       
  1646   void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
       
  1647 ! void col_print __ARGS((char_u *buf, int col, int vcol));
       
  1648   void maketitle __ARGS((void));
       
  1649   void resettitle __ARGS((void));
       
  1650   void free_titles __ARGS((void));
       
  1651   int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
       
  1652 ! void get_rel_pos __ARGS((win_T *wp, char_u *str));
       
  1653 ! int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
       
  1654   char_u *fix_fname __ARGS((char_u *fname));
       
  1655   void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
       
  1656   char_u *alist_name __ARGS((aentry_T *aep));
       
  1657 --- 37,48 ----
       
  1658   int otherfile __ARGS((char_u *ffname));
       
  1659   void buf_setino __ARGS((buf_T *buf));
       
  1660   void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
       
  1661 ! void col_print __ARGS((char_u *buf, size_t buflen, int col, int vcol));
       
  1662   void maketitle __ARGS((void));
       
  1663   void resettitle __ARGS((void));
       
  1664   void free_titles __ARGS((void));
       
  1665   int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
       
  1666 ! void get_rel_pos __ARGS((win_T *wp, char_u *buf, int buflen));
       
  1667   char_u *fix_fname __ARGS((char_u *fname));
       
  1668   void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
       
  1669   char_u *alist_name __ARGS((aentry_T *aep));
       
  1670 ***************
       
  1671 *** 54,61 ****
       
  1672   void write_viminfo_bufferlist __ARGS((FILE *fp));
       
  1673   char *buf_spname __ARGS((buf_T *buf));
       
  1674   void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
       
  1675 ! int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
       
  1676 ! int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
       
  1677   linenr_T buf_delsign __ARGS((buf_T *buf, int id));
       
  1678   int buf_findsign __ARGS((buf_T *buf, int id));
       
  1679   int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
       
  1680 --- 53,60 ----
       
  1681   void write_viminfo_bufferlist __ARGS((FILE *fp));
       
  1682   char *buf_spname __ARGS((buf_T *buf));
       
  1683   void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
       
  1684 ! linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
       
  1685 ! int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
       
  1686   linenr_T buf_delsign __ARGS((buf_T *buf, int id));
       
  1687   int buf_findsign __ARGS((buf_T *buf, int id));
       
  1688   int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
       
  1689 *** ../vim-7.2.166/src/proto/edit.pro	2008-01-16 20:03:13.000000000 +0100
       
  1690 --- src/proto/edit.pro	2009-05-05 20:51:56.000000000 +0200
       
  1691 ***************
       
  1692 *** 8,14 ****
       
  1693   void backspace_until_column __ARGS((int col));
       
  1694   int vim_is_ctrl_x_key __ARGS((int c));
       
  1695   int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
       
  1696 ! void set_completion __ARGS((int startcol, list_T *list));
       
  1697   void ins_compl_show_pum __ARGS((void));
       
  1698   char_u *find_word_start __ARGS((char_u *ptr));
       
  1699   char_u *find_word_end __ARGS((char_u *ptr));
       
  1700 --- 8,14 ----
       
  1701   void backspace_until_column __ARGS((int col));
       
  1702   int vim_is_ctrl_x_key __ARGS((int c));
       
  1703   int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
       
  1704 ! void set_completion __ARGS((colnr_T startcol, list_T *list));
       
  1705   void ins_compl_show_pum __ARGS((void));
       
  1706   char_u *find_word_start __ARGS((char_u *ptr));
       
  1707   char_u *find_word_end __ARGS((char_u *ptr));
       
  1708 *** ../vim-7.2.166/src/screen.c	2009-03-18 19:07:09.000000000 +0100
       
  1709 --- src/screen.c	2009-05-05 17:42:45.000000000 +0200
       
  1710 ***************
       
  1711 *** 9481,9493 ****
       
  1712       win_T	*wp;
       
  1713       int		always;
       
  1714   {
       
  1715 !     char_u	buffer[70];
       
  1716       int		row;
       
  1717       int		fillchar;
       
  1718       int		attr;
       
  1719       int		empty_line = FALSE;
       
  1720       colnr_T	virtcol;
       
  1721       int		i;
       
  1722       int		o;
       
  1723   #ifdef FEAT_VERTSPLIT
       
  1724       int		this_ru_col;
       
  1725 --- 9481,9495 ----
       
  1726       win_T	*wp;
       
  1727       int		always;
       
  1728   {
       
  1729 ! #define RULER_BUF_LEN 70
       
  1730 !     char_u	buffer[RULER_BUF_LEN];
       
  1731       int		row;
       
  1732       int		fillchar;
       
  1733       int		attr;
       
  1734       int		empty_line = FALSE;
       
  1735       colnr_T	virtcol;
       
  1736       int		i;
       
  1737 +     size_t	len;
       
  1738       int		o;
       
  1739   #ifdef FEAT_VERTSPLIT
       
  1740       int		this_ru_col;
       
  1741 ***************
       
  1742 *** 9602,9612 ****
       
  1743   	 * Some sprintfs return the length, some return a pointer.
       
  1744   	 * To avoid portability problems we use strlen() here.
       
  1745   	 */
       
  1746 ! 	sprintf((char *)buffer, "%ld,",
       
  1747   		(wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
       
  1748   		    ? 0L
       
  1749   		    : (long)(wp->w_cursor.lnum));
       
  1750 ! 	col_print(buffer + STRLEN(buffer),
       
  1751   			empty_line ? 0 : (int)wp->w_cursor.col + 1,
       
  1752   			(int)virtcol + 1);
       
  1753   
       
  1754 --- 9604,9615 ----
       
  1755   	 * Some sprintfs return the length, some return a pointer.
       
  1756   	 * To avoid portability problems we use strlen() here.
       
  1757   	 */
       
  1758 ! 	vim_snprintf((char *)buffer, RULER_BUF_LEN, "%ld,",
       
  1759   		(wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
       
  1760   		    ? 0L
       
  1761   		    : (long)(wp->w_cursor.lnum));
       
  1762 ! 	len = STRLEN(buffer);
       
  1763 ! 	col_print(buffer + len, RULER_BUF_LEN - len,
       
  1764   			empty_line ? 0 : (int)wp->w_cursor.col + 1,
       
  1765   			(int)virtcol + 1);
       
  1766   
       
  1767 ***************
       
  1768 *** 9616,9622 ****
       
  1769   	 * screen up on some terminals).
       
  1770   	 */
       
  1771   	i = (int)STRLEN(buffer);
       
  1772 ! 	get_rel_pos(wp, buffer + i + 1);
       
  1773   	o = i + vim_strsize(buffer + i + 1);
       
  1774   #ifdef FEAT_WINDOWS
       
  1775   	if (wp->w_status_height == 0)	/* can't use last char of screen */
       
  1776 --- 9619,9625 ----
       
  1777   	 * screen up on some terminals).
       
  1778   	 */
       
  1779   	i = (int)STRLEN(buffer);
       
  1780 ! 	get_rel_pos(wp, buffer + i + 1, RULER_BUF_LEN - i - 1);
       
  1781   	o = i + vim_strsize(buffer + i + 1);
       
  1782   #ifdef FEAT_WINDOWS
       
  1783   	if (wp->w_status_height == 0)	/* can't use last char of screen */
       
  1784 ***************
       
  1785 *** 9643,9649 ****
       
  1786   		    buffer[i++] = fillchar;
       
  1787   		++o;
       
  1788   	    }
       
  1789 ! 	    get_rel_pos(wp, buffer + i);
       
  1790   	}
       
  1791   	/* Truncate at window boundary. */
       
  1792   #ifdef FEAT_MBYTE
       
  1793 --- 9646,9652 ----
       
  1794   		    buffer[i++] = fillchar;
       
  1795   		++o;
       
  1796   	    }
       
  1797 ! 	    get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i);
       
  1798   	}
       
  1799   	/* Truncate at window boundary. */
       
  1800   #ifdef FEAT_MBYTE
       
  1801 *** ../vim-7.2.166/src/structs.h	2008-11-15 16:05:30.000000000 +0100
       
  1802 --- src/structs.h	2009-05-05 18:20:36.000000000 +0200
       
  1803 ***************
       
  1804 *** 33,41 ****
       
  1805   } pos_T;
       
  1806   
       
  1807   #ifdef FEAT_VIRTUALEDIT
       
  1808 ! # define INIT_POS_T {0, 0, 0}
       
  1809   #else
       
  1810 ! # define INIT_POS_T {0, 0}
       
  1811   #endif
       
  1812   
       
  1813   /*
       
  1814 --- 33,41 ----
       
  1815   } pos_T;
       
  1816   
       
  1817   #ifdef FEAT_VIRTUALEDIT
       
  1818 ! # define INIT_POS_T(l, c, ca) {l, c, ca}
       
  1819   #else
       
  1820 ! # define INIT_POS_T(l, c, ca) {l, c}
       
  1821   #endif
       
  1822   
       
  1823   /*
       
  1824 ***************
       
  1825 *** 1166,1172 ****
       
  1826       char_u	*b_fname;	/* current file name */
       
  1827   
       
  1828   #ifdef UNIX
       
  1829 !     int		b_dev;		/* device number (-1 if not set) */
       
  1830       ino_t	b_ino;		/* inode number */
       
  1831   #endif
       
  1832   #ifdef FEAT_CW_EDITOR
       
  1833 --- 1166,1172 ----
       
  1834       char_u	*b_fname;	/* current file name */
       
  1835   
       
  1836   #ifdef UNIX
       
  1837 !     dev_t	b_dev;		/* device number (-1 if not set) */
       
  1838       ino_t	b_ino;		/* inode number */
       
  1839   #endif
       
  1840   #ifdef FEAT_CW_EDITOR
       
  1841 ***************
       
  1842 *** 1645,1651 ****
       
  1843 --- 1645,1655 ----
       
  1844   #endif
       
  1845   #ifdef FEAT_DIFF
       
  1846       diff_T	    *tp_first_diff;
       
  1847 + # ifdef S_SPLINT_S  /* splint doesn't understand the array of pointers */
       
  1848 +     buf_T	    **tp_diffbuf;
       
  1849 + # else
       
  1850       buf_T	    *(tp_diffbuf[DB_COUNT]);
       
  1851 + # endif
       
  1852       int		    tp_diff_invalid;	/* list of diffs is outdated */
       
  1853   #endif
       
  1854       frame_T	    *tp_snapshot;    /* window layout snapshot */
       
  1855 *** ../vim-7.2.166/src/version.c	2009-04-29 18:44:38.000000000 +0200
       
  1856 --- src/version.c	2009-05-13 12:06:36.000000000 +0200
       
  1857 ***************
       
  1858 *** 678,679 ****
       
  1859 --- 678,681 ----
       
  1860   {   /* Add new patch number below this line */
       
  1861 + /**/
       
  1862 +     167,
       
  1863   /**/
       
  1864 
       
  1865 -- 
       
  1866 Snoring is prohibited unless all bedroom windows are closed and securely
       
  1867 locked.
       
  1868 		[real standing law in Massachusetts, United States of America]
       
  1869 
       
  1870  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
  1871 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
  1872 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
  1873  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///