1
0
Fork 0
mirror of git://slackware.nl/current.git synced 2025-02-15 08:50:09 +01:00
slackware-current/source/ap/vim/patches/7.3.180
Patrick J Volkerding 9664bee729 Slackware 14.0
Wed Sep 26 01:10:42 UTC 2012
Slackware 14.0 x86_64 stable is released!

We're perfectionists here at Slackware, so this release has been a long
time a-brewing.  But we think you'll agree that it was worth the wait.
Slackware 14.0 combines modern components, ease of use, and flexible
configuration... our "KISS" philosophy demands it.

The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD.  Please consider supporting the Slackware
project by picking up a copy from store.slackware.com.  We're taking
pre-orders now, and offer a discount if you sign up for a subscription.

Thanks to everyone who helped make this happen.  The Slackware team, the
upstream developers, and (of course) the awesome Slackware user
community.

Have fun!  :-)
2018-05-31 22:51:55 +02:00

295 lines
8.2 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

To: vim_dev@googlegroups.com
Subject: Patch 7.3.180
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.3.180
Problem: When both a middle part of 'comments' matches and an end part, the
middle part was used errornously.
Solution: After finding the middle part match continue looking for a better
end part match. (partly by Lech Lorens)
Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200
--- src/misc1.c 2011-05-10 13:24:38.000000000 +0200
***************
*** 1561,1566 ****
--- 1561,1569 ----
char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */
char_u *string; /* pointer to comment string */
char_u *list;
+ int middle_match_len = 0;
+ char_u *prev_list;
+ char_u *saved_flags;
i = 0;
while (vim_iswhite(line[i])) /* leading white space is ignored */
***************
*** 1569,1575 ****
/*
* Repeat to match several nested comment strings.
*/
! while (line[i])
{
/*
* scan through the 'comments' option for a match
--- 1572,1578 ----
/*
* Repeat to match several nested comment strings.
*/
! while (line[i] != NUL)
{
/*
* scan through the 'comments' option for a match
***************
*** 1577,1658 ****
found_one = FALSE;
for (list = curbuf->b_p_com; *list; )
{
! /*
! * Get one option part into part_buf[]. Advance list to next one.
! * put string at start of string.
! */
! if (!got_com && flags != NULL) /* remember where flags started */
! *flags = list;
(void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
string = vim_strchr(part_buf, ':');
if (string == NULL) /* missing ':', ignore this part */
continue;
*string++ = NUL; /* isolate flags from string */
! /*
! * When already found a nested comment, only accept further
! * nested comments.
! */
if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
continue;
! /* When 'O' flag used don't use for "O" command */
if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
continue;
! /*
! * Line contents and string must match.
* When string starts with white space, must have some white space
* (but the amount does not need to match, there might be a mix of
! * TABs and spaces).
! */
if (vim_iswhite(string[0]))
{
if (i == 0 || !vim_iswhite(line[i - 1]))
! continue;
while (vim_iswhite(string[0]))
++string;
}
for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
;
if (string[j] != NUL)
! continue;
! /*
! * When 'b' flag used, there must be white space or an
! * end-of-line after the string in the line.
! */
if (vim_strchr(part_buf, COM_BLANK) != NULL
&& !vim_iswhite(line[i + j]) && line[i + j] != NUL)
continue;
! /*
! * We have found a match, stop searching.
! */
! i += j;
! got_com = TRUE;
found_one = TRUE;
break;
}
! /*
! * No match found, stop scanning.
! */
if (!found_one)
break;
! /*
! * Include any trailing white space.
! */
while (vim_iswhite(line[i]))
++i;
! /*
! * If this comment doesn't nest, stop here.
! */
if (vim_strchr(part_buf, COM_NEST) == NULL)
break;
}
return (got_com ? i : 0);
}
#endif
--- 1580,1683 ----
found_one = FALSE;
for (list = curbuf->b_p_com; *list; )
{
! /* Get one option part into part_buf[]. Advance "list" to next
! * one. Put "string" at start of string. */
! if (!got_com && flags != NULL)
! *flags = list; /* remember where flags started */
! prev_list = list;
(void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
string = vim_strchr(part_buf, ':');
if (string == NULL) /* missing ':', ignore this part */
continue;
*string++ = NUL; /* isolate flags from string */
! /* If we found a middle match previously, use that match when this
! * is not a middle or end. */
! if (middle_match_len != 0
! && vim_strchr(part_buf, COM_MIDDLE) == NULL
! && vim_strchr(part_buf, COM_END) == NULL)
! break;
!
! /* When we already found a nested comment, only accept further
! * nested comments. */
if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
continue;
! /* When 'O' flag present and using "O" command skip this one. */
if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
continue;
! /* Line contents and string must match.
* When string starts with white space, must have some white space
* (but the amount does not need to match, there might be a mix of
! * TABs and spaces). */
if (vim_iswhite(string[0]))
{
if (i == 0 || !vim_iswhite(line[i - 1]))
! continue; /* missing shite space */
while (vim_iswhite(string[0]))
++string;
}
for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
;
if (string[j] != NUL)
! continue; /* string doesn't match */
! /* When 'b' flag used, there must be white space or an
! * end-of-line after the string in the line. */
if (vim_strchr(part_buf, COM_BLANK) != NULL
&& !vim_iswhite(line[i + j]) && line[i + j] != NUL)
continue;
! /* We have found a match, stop searching unless this is a middle
! * comment. The middle comment can be a substring of the end
! * comment in which case it's better to return the length of the
! * end comment and its flags. Thus we keep searching with middle
! * and end matches and use an end match if it matches better. */
! if (vim_strchr(part_buf, COM_MIDDLE) != NULL)
! {
! if (middle_match_len == 0)
! {
! middle_match_len = j;
! saved_flags = prev_list;
! }
! continue;
! }
! if (middle_match_len != 0 && j > middle_match_len)
! /* Use this match instead of the middle match, since it's a
! * longer thus better match. */
! middle_match_len = 0;
!
! if (middle_match_len == 0)
! i += j;
found_one = TRUE;
break;
}
! if (middle_match_len != 0)
! {
! /* Use the previously found middle match after failing to find a
! * match with an end. */
! if (!got_com && flags != NULL)
! *flags = saved_flags;
! i += middle_match_len;
! found_one = TRUE;
! }
!
! /* No match found, stop scanning. */
if (!found_one)
break;
! /* Include any trailing white space. */
while (vim_iswhite(line[i]))
++i;
! /* If this comment doesn't nest, stop here. */
! got_com = TRUE;
if (vim_strchr(part_buf, COM_NEST) == NULL)
break;
}
+
return (got_com ? i : 0);
}
#endif
*** ../vim-7.3.179/src/testdir/test3.in 2011-05-10 11:56:26.000000000 +0200
--- src/testdir/test3.in 2011-05-10 12:05:50.000000000 +0200
***************
*** 1373,1378 ****
--- 1373,1390 ----
}
STARTTEST
+ :set com=s1:/*,m:*,ex:*/
+ ]]3jofoo();
+ ENDTEST
+
+ void func(void)
+ {
+ /*
+ * This is a comment.
+ */
+ }
+
+ STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST
*** ../vim-7.3.179/src/testdir/test3.ok 2011-05-10 11:56:26.000000000 +0200
--- src/testdir/test3.ok 2011-05-10 12:05:50.000000000 +0200
***************
*** 1225,1227 ****
--- 1225,1236 ----
<< "c";
}
+
+ void func(void)
+ {
+ /*
+ * This is a comment.
+ */
+ foo();
+ }
+
*** ../vim-7.3.179/src/version.c 2011-05-10 11:56:26.000000000 +0200
--- src/version.c 2011-05-10 13:37:28.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 180,
/**/
--
"Thou shalt not follow the Null Pointer, for at its end Chaos and
Madness lie."
/// Bram Moolenaar -- Bram@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 ///