Karsten Hopp 94a1f8
To: vim_dev@googlegroups.com
Karsten Hopp 94a1f8
Subject: Patch 7.3.776
Karsten Hopp 94a1f8
Fcc: outbox
Karsten Hopp 94a1f8
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 94a1f8
Mime-Version: 1.0
Karsten Hopp 94a1f8
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 94a1f8
Content-Transfer-Encoding: 8bit
Karsten Hopp 94a1f8
------------
Karsten Hopp 94a1f8
Karsten Hopp 94a1f8
Patch 7.3.776
Karsten Hopp 94a1f8
Problem:    ml_get error when searching, caused by curwin not matching curbuf.
Karsten Hopp 94a1f8
Solution:   Avoid changing curbuf. (Lech Lorens)
Karsten Hopp 94a1f8
Files:	    src/charset.c, src/eval.c, src/mark.c, src/proto/charset.pro,
Karsten Hopp 94a1f8
	    src/proto/mark.pro, src/regexp.c, src/syntax.c
Karsten Hopp 94a1f8
Karsten Hopp 94a1f8
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/charset.c	2012-05-25 11:56:06.000000000 +0200
Karsten Hopp 94a1f8
--- src/charset.c	2013-01-23 15:43:37.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 905,910 ****
Karsten Hopp 94a1f8
--- 905,918 ----
Karsten Hopp 94a1f8
  vim_iswordc(c)
Karsten Hopp 94a1f8
      int c;
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
+     return vim_iswordc_buf(c, curbuf);
Karsten Hopp 94a1f8
+ }
Karsten Hopp 94a1f8
+ 
Karsten Hopp 94a1f8
+     int
Karsten Hopp 94a1f8
+ vim_iswordc_buf(c, buf)
Karsten Hopp 94a1f8
+     int		c;
Karsten Hopp 94a1f8
+     buf_T	*buf;
Karsten Hopp 94a1f8
+ {
Karsten Hopp 94a1f8
  #ifdef FEAT_MBYTE
Karsten Hopp 94a1f8
      if (c >= 0x100)
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 914,920 ****
Karsten Hopp 94a1f8
  	    return utf_class(c) >= 2;
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
!     return (c > 0 && c < 0x100 && GET_CHARTAB(curbuf, c) != 0);
Karsten Hopp 94a1f8
  }
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  /*
Karsten Hopp 94a1f8
--- 922,928 ----
Karsten Hopp 94a1f8
  	    return utf_class(c) >= 2;
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
!     return (c > 0 && c < 0x100 && GET_CHARTAB(buf, c) != 0);
Karsten Hopp 94a1f8
  }
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  /*
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 933,939 ****
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  #if defined(FEAT_SYN_HL) || defined(PROTO)
Karsten Hopp 94a1f8
      int
Karsten Hopp 94a1f8
! vim_iswordc_buf(p, buf)
Karsten Hopp 94a1f8
      char_u	*p;
Karsten Hopp 94a1f8
      buf_T	*buf;
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
--- 941,947 ----
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  #if defined(FEAT_SYN_HL) || defined(PROTO)
Karsten Hopp 94a1f8
      int
Karsten Hopp 94a1f8
! vim_iswordp_buf(p, buf)
Karsten Hopp 94a1f8
      char_u	*p;
Karsten Hopp 94a1f8
      buf_T	*buf;
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/eval.c	2012-12-05 16:10:21.000000000 +0100
Karsten Hopp 94a1f8
--- src/eval.c	2013-01-23 14:24:08.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 18884,18890 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
      if (name[0] == '\'')			/* mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	pp = getmark_fnum(name[1], FALSE, fnum);
Karsten Hopp 94a1f8
  	if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
Karsten Hopp 94a1f8
  	    return NULL;
Karsten Hopp 94a1f8
  	return pp;
Karsten Hopp 94a1f8
--- 18884,18890 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
      if (name[0] == '\'')			/* mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum);
Karsten Hopp 94a1f8
  	if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
Karsten Hopp 94a1f8
  	    return NULL;
Karsten Hopp 94a1f8
  	return pp;
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/mark.c	2012-07-06 17:51:24.000000000 +0200
Karsten Hopp 94a1f8
--- src/mark.c	2013-01-23 14:24:16.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 304,310 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  /*
Karsten Hopp 94a1f8
!  * Find mark "c".
Karsten Hopp 94a1f8
   * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc.
Karsten Hopp 94a1f8
   * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit
Karsten Hopp 94a1f8
   * another file.
Karsten Hopp 94a1f8
--- 304,310 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  /*
Karsten Hopp 94a1f8
!  * Find mark "c" in buffer pointed to by "buf".
Karsten Hopp 94a1f8
   * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc.
Karsten Hopp 94a1f8
   * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit
Karsten Hopp 94a1f8
   * another file.
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 315,329 ****
Karsten Hopp 94a1f8
   * - -1 if mark is in other file and jumped there (only if changefile is TRUE)
Karsten Hopp 94a1f8
   */
Karsten Hopp 94a1f8
      pos_T *
Karsten Hopp 94a1f8
  getmark(c, changefile)
Karsten Hopp 94a1f8
      int		c;
Karsten Hopp 94a1f8
      int		changefile;
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
!     return getmark_fnum(c, changefile, NULL);
Karsten Hopp 94a1f8
  }
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      pos_T *
Karsten Hopp 94a1f8
! getmark_fnum(c, changefile, fnum)
Karsten Hopp 94a1f8
      int		c;
Karsten Hopp 94a1f8
      int		changefile;
Karsten Hopp 94a1f8
      int		*fnum;
Karsten Hopp 94a1f8
--- 315,339 ----
Karsten Hopp 94a1f8
   * - -1 if mark is in other file and jumped there (only if changefile is TRUE)
Karsten Hopp 94a1f8
   */
Karsten Hopp 94a1f8
      pos_T *
Karsten Hopp 94a1f8
+ getmark_buf(buf, c, changefile)
Karsten Hopp 94a1f8
+     buf_T	*buf;
Karsten Hopp 94a1f8
+     int		c;
Karsten Hopp 94a1f8
+     int		changefile;
Karsten Hopp 94a1f8
+ {
Karsten Hopp 94a1f8
+     return getmark_buf_fnum(buf, c, changefile, NULL);
Karsten Hopp 94a1f8
+ }
Karsten Hopp 94a1f8
+ 
Karsten Hopp 94a1f8
+     pos_T *
Karsten Hopp 94a1f8
  getmark(c, changefile)
Karsten Hopp 94a1f8
      int		c;
Karsten Hopp 94a1f8
      int		changefile;
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
!     return getmark_buf_fnum(curbuf, c, changefile, NULL);
Karsten Hopp 94a1f8
  }
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      pos_T *
Karsten Hopp 94a1f8
! getmark_buf_fnum(buf, c, changefile, fnum)
Karsten Hopp 94a1f8
!     buf_T	*buf;
Karsten Hopp 94a1f8
      int		c;
Karsten Hopp 94a1f8
      int		changefile;
Karsten Hopp 94a1f8
      int		*fnum;
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 351,365 ****
Karsten Hopp 94a1f8
  	posp = &pos_copy;		/*   w_pcmark may be changed soon */
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
      else if (c == '"')			/* to pos when leaving buffer */
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_last_cursor);
Karsten Hopp 94a1f8
      else if (c == '^')			/* to where Insert mode stopped */
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_last_insert);
Karsten Hopp 94a1f8
      else if (c == '.')			/* to where last change was made */
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_last_change);
Karsten Hopp 94a1f8
      else if (c == '[')			/* to start of previous operator */
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_op_start);
Karsten Hopp 94a1f8
      else if (c == ']')			/* to end of previous operator */
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_op_end);
Karsten Hopp 94a1f8
      else if (c == '{' || c == '}')	/* to previous/next paragraph */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
  	pos_T	pos;
Karsten Hopp 94a1f8
--- 361,375 ----
Karsten Hopp 94a1f8
  	posp = &pos_copy;		/*   w_pcmark may be changed soon */
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
      else if (c == '"')			/* to pos when leaving buffer */
Karsten Hopp 94a1f8
! 	posp = &(buf->b_last_cursor);
Karsten Hopp 94a1f8
      else if (c == '^')			/* to where Insert mode stopped */
Karsten Hopp 94a1f8
! 	posp = &(buf->b_last_insert);
Karsten Hopp 94a1f8
      else if (c == '.')			/* to where last change was made */
Karsten Hopp 94a1f8
! 	posp = &(buf->b_last_change);
Karsten Hopp 94a1f8
      else if (c == '[')			/* to start of previous operator */
Karsten Hopp 94a1f8
! 	posp = &(buf->b_op_start);
Karsten Hopp 94a1f8
      else if (c == ']')			/* to end of previous operator */
Karsten Hopp 94a1f8
! 	posp = &(buf->b_op_end);
Karsten Hopp 94a1f8
      else if (c == '{' || c == '}')	/* to previous/next paragraph */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
  	pos_T	pos;
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 395,402 ****
Karsten Hopp 94a1f8
  #ifdef FEAT_VISUAL
Karsten Hopp 94a1f8
      else if (c == '<' || c == '>')	/* start/end of visual area */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	startp = &curbuf->b_visual.vi_start;
Karsten Hopp 94a1f8
! 	endp = &curbuf->b_visual.vi_end;
Karsten Hopp 94a1f8
  	if ((c == '<') == lt(*startp, *endp))
Karsten Hopp 94a1f8
  	    posp = startp;
Karsten Hopp 94a1f8
  	else
Karsten Hopp 94a1f8
--- 405,412 ----
Karsten Hopp 94a1f8
  #ifdef FEAT_VISUAL
Karsten Hopp 94a1f8
      else if (c == '<' || c == '>')	/* start/end of visual area */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	startp = &buf->b_visual.vi_start;
Karsten Hopp 94a1f8
! 	endp = &buf->b_visual.vi_end;
Karsten Hopp 94a1f8
  	if ((c == '<') == lt(*startp, *endp))
Karsten Hopp 94a1f8
  	    posp = startp;
Karsten Hopp 94a1f8
  	else
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 404,410 ****
Karsten Hopp 94a1f8
  	/*
Karsten Hopp 94a1f8
  	 * For Visual line mode, set mark at begin or end of line
Karsten Hopp 94a1f8
  	 */
Karsten Hopp 94a1f8
! 	if (curbuf->b_visual.vi_mode == 'V')
Karsten Hopp 94a1f8
  	{
Karsten Hopp 94a1f8
  	    pos_copy = *posp;
Karsten Hopp 94a1f8
  	    posp = &pos_copy;
Karsten Hopp 94a1f8
--- 414,420 ----
Karsten Hopp 94a1f8
  	/*
Karsten Hopp 94a1f8
  	 * For Visual line mode, set mark at begin or end of line
Karsten Hopp 94a1f8
  	 */
Karsten Hopp 94a1f8
! 	if (buf->b_visual.vi_mode == 'V')
Karsten Hopp 94a1f8
  	{
Karsten Hopp 94a1f8
  	    pos_copy = *posp;
Karsten Hopp 94a1f8
  	    posp = &pos_copy;
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 420,426 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
      else if (ASCII_ISLOWER(c))		/* normal named mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	posp = &(curbuf->b_namedm[c - 'a']);
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
      else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c))	/* named file mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
--- 430,436 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
      else if (ASCII_ISLOWER(c))		/* normal named mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
! 	posp = &(buf->b_namedm[c - 'a']);
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
      else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c))	/* named file mark */
Karsten Hopp 94a1f8
      {
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 435,441 ****
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  	if (fnum != NULL)
Karsten Hopp 94a1f8
  	    *fnum = namedfm[c].fmark.fnum;
Karsten Hopp 94a1f8
! 	else if (namedfm[c].fmark.fnum != curbuf->b_fnum)
Karsten Hopp 94a1f8
  	{
Karsten Hopp 94a1f8
  	    /* mark is in another file */
Karsten Hopp 94a1f8
  	    posp = &pos_copy;
Karsten Hopp 94a1f8
--- 445,451 ----
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
  	if (fnum != NULL)
Karsten Hopp 94a1f8
  	    *fnum = namedfm[c].fmark.fnum;
Karsten Hopp 94a1f8
! 	else if (namedfm[c].fmark.fnum != buf->b_fnum)
Karsten Hopp 94a1f8
  	{
Karsten Hopp 94a1f8
  	    /* mark is in another file */
Karsten Hopp 94a1f8
  	    posp = &pos_copy;
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/proto/charset.pro	2010-08-15 21:57:28.000000000 +0200
Karsten Hopp 94a1f8
--- src/proto/charset.pro	2013-01-23 15:43:25.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 19,26 ****
Karsten Hopp 94a1f8
  int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
Karsten Hopp 94a1f8
  int vim_isIDc __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_iswordc __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_iswordp __ARGS((char_u *p));
Karsten Hopp 94a1f8
! int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
Karsten Hopp 94a1f8
  int vim_isfilec __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_isfilec_or_wc __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_isprintc __ARGS((int c));
Karsten Hopp 94a1f8
--- 19,27 ----
Karsten Hopp 94a1f8
  int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
Karsten Hopp 94a1f8
  int vim_isIDc __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_iswordc __ARGS((int c));
Karsten Hopp 94a1f8
+ int vim_iswordc_buf __ARGS((int c, buf_T *buf));
Karsten Hopp 94a1f8
  int vim_iswordp __ARGS((char_u *p));
Karsten Hopp 94a1f8
! int vim_iswordp_buf __ARGS((char_u *p, buf_T *buf));
Karsten Hopp 94a1f8
  int vim_isfilec __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_isfilec_or_wc __ARGS((int c));
Karsten Hopp 94a1f8
  int vim_isprintc __ARGS((int c));
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/proto/mark.pro	2010-08-15 21:57:28.000000000 +0200
Karsten Hopp 94a1f8
--- src/proto/mark.pro	2013-01-23 14:24:23.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 5,12 ****
Karsten Hopp 94a1f8
  void checkpcmark __ARGS((void));
Karsten Hopp 94a1f8
  pos_T *movemark __ARGS((int count));
Karsten Hopp 94a1f8
  pos_T *movechangelist __ARGS((int count));
Karsten Hopp 94a1f8
  pos_T *getmark __ARGS((int c, int changefile));
Karsten Hopp 94a1f8
! pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum));
Karsten Hopp 94a1f8
  pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
Karsten Hopp 94a1f8
  void fmarks_check_names __ARGS((buf_T *buf));
Karsten Hopp 94a1f8
  int check_mark __ARGS((pos_T *pos));
Karsten Hopp 94a1f8
--- 5,13 ----
Karsten Hopp 94a1f8
  void checkpcmark __ARGS((void));
Karsten Hopp 94a1f8
  pos_T *movemark __ARGS((int count));
Karsten Hopp 94a1f8
  pos_T *movechangelist __ARGS((int count));
Karsten Hopp 94a1f8
+ pos_T *getmark_buf __ARGS((buf_T *buf, int c, int changefile));
Karsten Hopp 94a1f8
  pos_T *getmark __ARGS((int c, int changefile));
Karsten Hopp 94a1f8
! pos_T *getmark_buf_fnum __ARGS((buf_T *buf, int c, int changefile, int *fnum));
Karsten Hopp 94a1f8
  pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line));
Karsten Hopp 94a1f8
  void fmarks_check_names __ARGS((buf_T *buf));
Karsten Hopp 94a1f8
  int check_mark __ARGS((pos_T *pos));
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/regexp.c	2011-07-20 17:58:14.000000000 +0200
Karsten Hopp 94a1f8
--- src/regexp.c	2013-01-23 14:19:15.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 3623,3629 ****
Karsten Hopp 94a1f8
      proftime_T	*tm;		/* timeout limit or NULL */
Karsten Hopp 94a1f8
  {
Karsten Hopp 94a1f8
      long	r;
Karsten Hopp 94a1f8
-     buf_T	*save_curbuf = curbuf;
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      reg_match = NULL;
Karsten Hopp 94a1f8
      reg_mmatch = rmp;
Karsten Hopp 94a1f8
--- 3623,3628 ----
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 3638,3647 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
      ireg_maxcol = rmp->rmm_maxcol;
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
-     /* Need to switch to buffer "buf" to make vim_iswordc() work. */
Karsten Hopp 94a1f8
-     curbuf = buf;
Karsten Hopp 94a1f8
      r = vim_regexec_both(NULL, col, tm);
Karsten Hopp 94a1f8
-     curbuf = save_curbuf;
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      return r;
Karsten Hopp 94a1f8
  }
Karsten Hopp 94a1f8
--- 3637,3643 ----
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 4185,4191 ****
Karsten Hopp 94a1f8
  		int	cmp = OPERAND(scan)[1];
Karsten Hopp 94a1f8
  		pos_T	*pos;
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
! 		pos = getmark(mark, FALSE);
Karsten Hopp 94a1f8
  		if (pos == NULL		     /* mark doesn't exist */
Karsten Hopp 94a1f8
  			|| pos->lnum <= 0    /* mark isn't set (in curbuf) */
Karsten Hopp 94a1f8
  			|| (pos->lnum == reglnum + reg_firstlnum
Karsten Hopp 94a1f8
--- 4181,4187 ----
Karsten Hopp 94a1f8
  		int	cmp = OPERAND(scan)[1];
Karsten Hopp 94a1f8
  		pos_T	*pos;
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
! 		pos = getmark_buf(reg_buf, mark, FALSE);
Karsten Hopp 94a1f8
  		if (pos == NULL		     /* mark doesn't exist */
Karsten Hopp 94a1f8
  			|| pos->lnum <= 0    /* mark isn't set (in curbuf) */
Karsten Hopp 94a1f8
  			|| (pos->lnum == reglnum + reg_firstlnum
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 4315,4322 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    else
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
! 		if (!vim_iswordc(c)
Karsten Hopp 94a1f8
! 			|| (reginput > regline && vim_iswordc(reginput[-1])))
Karsten Hopp 94a1f8
  		    status = RA_NOMATCH;
Karsten Hopp 94a1f8
  	    }
Karsten Hopp 94a1f8
  	    break;
Karsten Hopp 94a1f8
--- 4311,4318 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    else
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
! 		if (!vim_iswordc_buf(c, reg_buf)
Karsten Hopp 94a1f8
! 			|| (reginput > regline && vim_iswordc_buf(reginput[-1], reg_buf)))
Karsten Hopp 94a1f8
  		    status = RA_NOMATCH;
Karsten Hopp 94a1f8
  	    }
Karsten Hopp 94a1f8
  	    break;
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 4339,4346 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    else
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
! 		if (!vim_iswordc(reginput[-1])
Karsten Hopp 94a1f8
! 			|| (reginput[0] != NUL && vim_iswordc(c)))
Karsten Hopp 94a1f8
  		    status = RA_NOMATCH;
Karsten Hopp 94a1f8
  	    }
Karsten Hopp 94a1f8
  	    break; /* Matched with EOW */
Karsten Hopp 94a1f8
--- 4335,4342 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    else
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
! 		if (!vim_iswordc_buf(reginput[-1], reg_buf)
Karsten Hopp 94a1f8
! 			|| (reginput[0] != NUL && vim_iswordc_buf(c, reg_buf)))
Karsten Hopp 94a1f8
  		    status = RA_NOMATCH;
Karsten Hopp 94a1f8
  	    }
Karsten Hopp 94a1f8
  	    break; /* Matched with EOW */
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/syntax.c	2012-10-21 21:25:17.000000000 +0200
Karsten Hopp 94a1f8
--- src/syntax.c	2013-01-23 14:19:15.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 1954,1962 ****
Karsten Hopp 94a1f8
  	    if (do_keywords)
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
  	      line = syn_getcurline();
Karsten Hopp 94a1f8
! 	      if (vim_iswordc_buf(line + current_col, syn_buf)
Karsten Hopp 94a1f8
  		      && (current_col == 0
Karsten Hopp 94a1f8
! 			  || !vim_iswordc_buf(line + current_col - 1
Karsten Hopp 94a1f8
  #ifdef FEAT_MBYTE
Karsten Hopp 94a1f8
  			      - (has_mbyte
Karsten Hopp 94a1f8
  				  ? (*mb_head_off)(line, line + current_col - 1)
Karsten Hopp 94a1f8
--- 1954,1962 ----
Karsten Hopp 94a1f8
  	    if (do_keywords)
Karsten Hopp 94a1f8
  	    {
Karsten Hopp 94a1f8
  	      line = syn_getcurline();
Karsten Hopp 94a1f8
! 	      if (vim_iswordp_buf(line + current_col, syn_buf)
Karsten Hopp 94a1f8
  		      && (current_col == 0
Karsten Hopp 94a1f8
! 			  || !vim_iswordp_buf(line + current_col - 1
Karsten Hopp 94a1f8
  #ifdef FEAT_MBYTE
Karsten Hopp 94a1f8
  			      - (has_mbyte
Karsten Hopp 94a1f8
  				  ? (*mb_head_off)(line, line + current_col - 1)
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 3280,3286 ****
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    ++kwlen;
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
!     while (vim_iswordc_buf(kwp + kwlen, syn_buf));
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      if (kwlen > MAXKEYWLEN)
Karsten Hopp 94a1f8
  	return 0;
Karsten Hopp 94a1f8
--- 3280,3286 ----
Karsten Hopp 94a1f8
  #endif
Karsten Hopp 94a1f8
  	    ++kwlen;
Karsten Hopp 94a1f8
      }
Karsten Hopp 94a1f8
!     while (vim_iswordp_buf(kwp + kwlen, syn_buf));
Karsten Hopp 94a1f8
  
Karsten Hopp 94a1f8
      if (kwlen > MAXKEYWLEN)
Karsten Hopp 94a1f8
  	return 0;
Karsten Hopp 94a1f8
*** ../vim-7.3.775/src/version.c	2013-01-23 13:55:16.000000000 +0100
Karsten Hopp 94a1f8
--- src/version.c	2013-01-23 14:19:44.000000000 +0100
Karsten Hopp 94a1f8
***************
Karsten Hopp 94a1f8
*** 727,728 ****
Karsten Hopp 94a1f8
--- 727,730 ----
Karsten Hopp 94a1f8
  {   /* Add new patch number below this line */
Karsten Hopp 94a1f8
+ /**/
Karsten Hopp 94a1f8
+     776,
Karsten Hopp 94a1f8
  /**/
Karsten Hopp 94a1f8
Karsten Hopp 94a1f8
-- 
Karsten Hopp 94a1f8
Q: How does a UNIX Guru do Sex ?
Karsten Hopp 94a1f8
A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep
Karsten Hopp 94a1f8
Karsten Hopp 94a1f8
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 94a1f8
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 94a1f8
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 94a1f8
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///