[vim] - patchlevel 341

Karsten Hopp karsten at fedoraproject.org
Fri Dec 23 21:30:17 UTC 2011


commit 53adffab25aed74b29c0308d1dc9adbe19d8a0e3
Author: Karsten Hopp <karsten at redhat.com>
Date:   Fri Dec 23 22:30:44 2011 +0100

    - patchlevel 341

 7.3.341 |  360 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 360 insertions(+), 0 deletions(-)
---
diff --git a/7.3.341 b/7.3.341
new file mode 100644
index 0000000..6ea3860
--- /dev/null
+++ b/7.3.341
@@ -0,0 +1,360 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.341
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.341
+Problem:    Local help files are only listed in help.txt, not in translated
+	    help files.
+Solution:   Also find translated help files. (Yasuhiro Matsumoto)
+Files:	    src/ex_cmds.c
+
+
+*** ../vim-7.3.340/src/ex_cmds.c	2011-09-30 17:30:27.000000000 +0200
+--- src/ex_cmds.c	2011-10-20 17:39:45.000000000 +0200
+***************
+*** 5982,5987 ****
+--- 5982,5988 ----
+      char_u	*line;
+      int		in_example = FALSE;
+      int		len;
++     char_u	*fname;
+      char_u	*p;
+      char_u	*rt;
+      int		mustfree;
+***************
+*** 6028,6151 ****
+      }
+  
+      /*
+!      * In the "help.txt" file, add the locally added help files.
+!      * This uses the very first line in the help file.
+       */
+!     if (fnamecmp(gettail(curbuf->b_fname), "help.txt") == 0)
+      {
+  	for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+  	{
+  	    line = ml_get_buf(curbuf, lnum, FALSE);
+! 	    if (strstr((char *)line, "*local-additions*") != NULL)
+  	    {
+! 		/* Go through all directories in 'runtimepath', skipping
+! 		 * $VIMRUNTIME. */
+! 		p = p_rtp;
+! 		while (*p != NUL)
+  		{
+! 		    copy_option_part(&p, NameBuff, MAXPATHL, ",");
+! 		    mustfree = FALSE;
+! 		    rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+! 		    if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+! 		    {
+! 			int	fcount;
+! 			char_u	**fnames;
+! 			FILE	*fd;
+! 			char_u	*s;
+! 			int	fi;
+  #ifdef FEAT_MBYTE
+! 			vimconv_T	vc;
+! 			char_u		*cp;
+  #endif
+  
+! 			/* Find all "doc/ *.txt" files in this directory. */
+! 			add_pathsep(NameBuff);
+! 			STRCAT(NameBuff, "doc/*.txt");
+! 			if (gen_expand_wildcards(1, &NameBuff, &fcount,
+! 					     &fnames, EW_FILE|EW_SILENT) == OK
+! 				&& fcount > 0)
+  			{
+! 			    for (fi = 0; fi < fcount; ++fi)
+  			    {
+! 				fd = mch_fopen((char *)fnames[fi], "r");
+! 				if (fd != NULL)
+  				{
+! 				    vim_fgets(IObuff, IOSIZE, fd);
+! 				    if (IObuff[0] == '*'
+! 					    && (s = vim_strchr(IObuff + 1, '*'))
+! 								      != NULL)
+! 				    {
+! #ifdef FEAT_MBYTE
+! 					int	this_utf = MAYBE;
+  #endif
+! 					/* Change tag definition to a
+! 					 * reference and remove <CR>/<NL>. */
+! 					IObuff[0] = '|';
+! 					*s = '|';
+! 					while (*s != NUL)
+! 					{
+! 					    if (*s == '\r' || *s == '\n')
+! 						*s = NUL;
+  #ifdef FEAT_MBYTE
+! 					    /* The text is utf-8 when a byte
+! 					     * above 127 is found and no
+! 					     * illegal byte sequence is found.
+! 					     */
+! 					    if (*s >= 0x80 && this_utf != FALSE)
+! 					    {
+! 						int	l;
+! 
+! 						this_utf = TRUE;
+! 						l = utf_ptr2len(s);
+! 						if (l == 1)
+! 						    this_utf = FALSE;
+! 						s += l - 1;
+! 					    }
+  #endif
+! 					    ++s;
+! 					}
+  #ifdef FEAT_MBYTE
+! 					/* The help file is latin1 or utf-8;
+! 					 * conversion to the current
+! 					 * 'encoding' may be required. */
+! 					vc.vc_type = CONV_NONE;
+! 					convert_setup(&vc, (char_u *)(
+! 						    this_utf == TRUE ? "utf-8"
+! 							  : "latin1"), p_enc);
+! 					if (vc.vc_type == CONV_NONE)
+! 					    /* No conversion needed. */
+! 					    cp = IObuff;
+! 					else
+  					{
+! 					    /* Do the conversion.  If it fails
+! 					     * use the unconverted text. */
+! 					    cp = string_convert(&vc, IObuff,
+! 									NULL);
+! 					    if (cp == NULL)
+! 						cp = IObuff;
+  					}
+! 					convert_setup(&vc, NULL, NULL);
+  
+! 					ml_append(lnum, cp, (colnr_T)0, FALSE);
+! 					if (cp != IObuff)
+! 					    vim_free(cp);
+  #else
+! 					ml_append(lnum, IObuff, (colnr_T)0,
+! 								       FALSE);
+  #endif
+! 					++lnum;
+! 				    }
+! 				    fclose(fd);
+  				}
+  			    }
+- 			    FreeWild(fcount, fnames);
+  			}
+  		    }
+- 		    if (mustfree)
+- 			vim_free(rt);
+  		}
+! 		break;
+  	    }
+  	}
+      }
+  }
+--- 6029,6215 ----
+      }
+  
+      /*
+!      * In the "help.txt" and "help.abx" file, add the locally added help
+!      * files.  This uses the very first line in the help file.
+       */
+!     fname = gettail(curbuf->b_fname);
+!     if (fnamecmp(fname, "help.txt") == 0
+! #ifdef FEAT_MULTI_LANG
+! 	|| (fnamencmp(fname, "help.", 5) == 0
+! 	    && ASCII_ISALPHA(fname[5])
+! 	    && ASCII_ISALPHA(fname[6])
+! 	    && TOLOWER_ASC(fname[7]) == 'x'
+! 	    && fname[8] == NUL)
+! #endif
+! 	)
+      {
+  	for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+  	{
+  	    line = ml_get_buf(curbuf, lnum, FALSE);
+! 	    if (strstr((char *)line, "*local-additions*") == NULL)
+! 		continue;
+! 
+! 	    /* Go through all directories in 'runtimepath', skipping
+! 	     * $VIMRUNTIME. */
+! 	    p = p_rtp;
+! 	    while (*p != NUL)
+  	    {
+! 		copy_option_part(&p, NameBuff, MAXPATHL, ",");
+! 		mustfree = FALSE;
+! 		rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+! 		if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+  		{
+! 		    int		fcount;
+! 		    char_u	**fnames;
+! 		    FILE	*fd;
+! 		    char_u	*s;
+! 		    int		fi;
+  #ifdef FEAT_MBYTE
+! 		    vimconv_T	vc;
+! 		    char_u	*cp;
+  #endif
+  
+! 		    /* Find all "doc/ *.txt" files in this directory. */
+! 		    add_pathsep(NameBuff);
+! #ifdef FEAT_MULTI_LANG
+! 		    STRCAT(NameBuff, "doc/*.??[tx]");
+! #else
+! 		    STRCAT(NameBuff, "doc/*.txt");
+! #endif
+! 		    if (gen_expand_wildcards(1, &NameBuff, &fcount,
+! 					 &fnames, EW_FILE|EW_SILENT) == OK
+! 			    && fcount > 0)
+! 		    {
+! #ifdef FEAT_MULTI_LANG
+! 			int	i1;
+! 			int	i2;
+! 			char_u	*f1;
+! 			char_u	*f2;
+! 			char_u	*t1;
+! 			char_u	*e1;
+! 			char_u	*e2;
+! 
+! 			/* If foo.abx is found use it instead of foo.txt in
+! 			 * the same directory. */
+! 			for (i1 = 0; i1 < fcount; ++i1)
+  			{
+! 			    for (i2 = 0; i2 < fcount; ++i2)
+  			    {
+! 				if (i1 == i2)
+! 				    continue;
+! 				if (fnames[i1] == NULL || fnames[i2] == NULL)
+! 				    continue;
+! 				f1 = fnames[i1];
+! 				f2 = fnames[i2];
+! 				t1 = gettail(f1);
+! 				if (fnamencmp(f1, f2, t1 - f1) != 0)
+! 				    continue;
+! 				e1 = vim_strrchr(t1, '.');
+! 				e2 = vim_strrchr(gettail(f2), '.');
+! 				if (e1 == NUL || e2 == NUL)
+! 				    continue;
+! 				if (fnamecmp(e1, ".txt") != 0
+! 				    && fnamecmp(e1, fname + 4) != 0)
+  				{
+! 				    /* Not .txt and not .abx, remove it. */
+! 				    vim_free(fnames[i1]);
+! 				    fnames[i1] = NULL;
+! 				    continue;
+! 				}
+! 				if (fnamencmp(f1, f2, e1 - f1) != 0)
+! 				    continue;
+! 				if (fnamecmp(e1, ".txt") == 0
+! 				    && fnamecmp(e2, fname + 4) == 0)
+! 				{
+! 				    /* use .abx instead of .txt */
+! 				    vim_free(fnames[i1]);
+! 				    fnames[i1] = NULL;
+! 				}
+! 			    }
+! 			}
+  #endif
+! 			for (fi = 0; fi < fcount; ++fi)
+! 			{
+! 			    if (fnames[fi] == NULL)
+! 				continue;
+! 			    fd = mch_fopen((char *)fnames[fi], "r");
+! 			    if (fd != NULL)
+! 			    {
+! 				vim_fgets(IObuff, IOSIZE, fd);
+! 				if (IObuff[0] == '*'
+! 					&& (s = vim_strchr(IObuff + 1, '*'))
+! 								  != NULL)
+! 				{
+  #ifdef FEAT_MBYTE
+! 				    int	this_utf = MAYBE;
+  #endif
+! 				    /* Change tag definition to a
+! 				     * reference and remove <CR>/<NL>. */
+! 				    IObuff[0] = '|';
+! 				    *s = '|';
+! 				    while (*s != NUL)
+! 				    {
+! 					if (*s == '\r' || *s == '\n')
+! 					    *s = NUL;
+  #ifdef FEAT_MBYTE
+! 					/* The text is utf-8 when a byte
+! 					 * above 127 is found and no
+! 					 * illegal byte sequence is found.
+! 					 */
+! 					if (*s >= 0x80 && this_utf != FALSE)
+  					{
+! 					    int	l;
+! 
+! 					    this_utf = TRUE;
+! 					    l = utf_ptr2len(s);
+! 					    if (l == 1)
+! 						this_utf = FALSE;
+! 					    s += l - 1;
+  					}
+! #endif
+! 					++s;
+! 				    }
+! #ifdef FEAT_MBYTE
+! 				    /* The help file is latin1 or utf-8;
+! 				     * conversion to the current
+! 				     * 'encoding' may be required. */
+! 				    vc.vc_type = CONV_NONE;
+! 				    convert_setup(&vc, (char_u *)(
+! 						this_utf == TRUE ? "utf-8"
+! 						      : "latin1"), p_enc);
+! 				    if (vc.vc_type == CONV_NONE)
+! 					/* No conversion needed. */
+! 					cp = IObuff;
+! 				    else
+! 				    {
+! 					/* Do the conversion.  If it fails
+! 					 * use the unconverted text. */
+! 					cp = string_convert(&vc, IObuff,
+! 								    NULL);
+! 					if (cp == NULL)
+! 					    cp = IObuff;
+! 				    }
+! 				    convert_setup(&vc, NULL, NULL);
+  
+! 				    ml_append(lnum, cp, (colnr_T)0, FALSE);
+! 				    if (cp != IObuff)
+! 					vim_free(cp);
+  #else
+! 				    ml_append(lnum, IObuff, (colnr_T)0,
+! 								   FALSE);
+  #endif
+! 				    ++lnum;
+  				}
++ 				fclose(fd);
+  			    }
+  			}
++ 			FreeWild(fcount, fnames);
+  		    }
+  		}
+! 		if (mustfree)
+! 		    vim_free(rt);
+  	    }
++ 	    break;
+  	}
+      }
+  }
+*** ../vim-7.3.340/src/version.c	2011-10-20 18:12:27.000000000 +0200
+--- src/version.c	2011-10-20 18:13:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     341,
+  /**/
+
+-- 
+From "know your smileys":
+ :-)-O	Smiling doctor with stethoscope
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list