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.202
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

868 lines
21 KiB
Text

To: vim_dev@googlegroups.com
Subject: Patch 7.3.202
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.202
Problem: Cannot influence the indent inside a namespace.
Solution: Add the "N" 'cino' parameter. (Konstantin Lepa)
Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
src/testdir/test3.ok
*** ../mercurial/vim73/runtime/doc/indent.txt 2011-04-28 19:01:26.000000000 +0200
--- runtime/doc/indent.txt 2011-05-25 14:35:37.000000000 +0200
***************
*** 128,140 ****
used CTRL-T or CTRL-D.
*cinoptions-values*
! The 'cinoptions' option sets how Vim performs indentation. In the list below,
"N" represents a number of your choice (the number can be negative). When
there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
"1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a
! decimal point, too: "-0.5s" is minus half a 'shiftwidth'. The examples below
! assume a 'shiftwidth' of 4.
!
>N Amount added for "normal" indent. Used after a line that should
increase the indent (lines starting with "if", an opening brace,
etc.). (default 'shiftwidth').
--- 128,147 ----
used CTRL-T or CTRL-D.
*cinoptions-values*
! The 'cinoptions' option sets how Vim performs indentation. The value after
! the option character can be one of these (N is any number):
! N indent N spaces
! -N indent N spaces to the left
! Ns N times 'shiftwidth spaces
! -Ns N times 'shiftwidth spaces to the left
!
! In the list below,
"N" represents a number of your choice (the number can be negative). When
there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
"1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc. You can use a
! decimal point, too: "-0.5s" is minus half a 'shiftwidth'.
! The examples below assume a 'shiftwidth' of 4.
! *cino->*
>N Amount added for "normal" indent. Used after a line that should
increase the indent (lines starting with "if", an opening brace,
etc.). (default 'shiftwidth').
***************
*** 145,150 ****
--- 152,158 ----
foo; foo; foo;
} } }
<
+ *cino-e*
eN Add N to the prevailing indent inside a set of braces if the
opening brace at the End of the line (more precise: is not the
first character in a line). This is useful if you want a
***************
*** 160,165 ****
--- 168,174 ----
bar; bar; bar;
} } }
<
+ *cino-n*
nN Add N to the prevailing indent for a statement after an "if",
"while", etc., if it is NOT inside a set of braces. This is
useful if you want a different indent when there is no '{'
***************
*** 174,179 ****
--- 183,189 ----
bar; bar; bar;
} } }
<
+ *cino-f*
fN Place the first opening brace of a function or other block in
column N. This applies only for an opening brace that is not
inside other braces and is at the start of the line. What comes
***************
*** 184,189 ****
--- 194,200 ----
{ { {
int foo; int foo; int foo;
<
+ *cino-{*
{N Place opening braces N characters from the prevailing indent.
This applies only for opening braces that are inside other
braces. (default 0).
***************
*** 193,198 ****
--- 204,210 ----
{ { {
foo; foo; foo;
<
+ *cino-}*
}N Place closing braces N characters from the matching opening
brace. (default 0).
***************
*** 202,207 ****
--- 214,220 ----
foo; foo; foo;
} } }
<
+ *cino-^*
^N Add N to the prevailing indent inside a set of braces if the
opening brace is in column 0. This can specify a different
indent for whole of a function (some may like to set it to a
***************
*** 216,221 ****
--- 229,235 ----
} } }
} } }
<
+ *cino-L*
LN Controls placement of jump labels. If N is negative, the label
will be placed at column 1. If N is non-negative, the indent of
the label will be the prevailing indent minus N. (default -1).
***************
*** 229,234 ****
--- 243,249 ----
} } }
} } }
<
+ *cino-:*
:N Place case labels N characters from the indent of the switch().
(default 'shiftwidth').
***************
*** 240,245 ****
--- 255,261 ----
default: default:
} }
<
+ *cino-=*
=N Place statements occurring after a case label N characters from
the indent of the label. (default 'shiftwidth').
***************
*** 247,252 ****
--- 263,269 ----
case 11: case 11: a = a + 1;
a = a + 1; b = b + 1;
<
+ *cino-l*
lN If N != 0 Vim will align with a case label instead of the
statement after it in the same line.
***************
*** 256,261 ****
--- 273,279 ----
break; break;
} }
<
+ *cino-b*
bN If N != 0 Vim will align a final "break" with the case label,
so that case..break looks like a sort of block. (default: 0).
When using 1, consider adding "0=break" to 'cinkeys'.
***************
*** 272,277 ****
--- 290,296 ----
break; break;
} }
<
+ *cino-g*
gN Place C++ scope declarations N characters from the indent of the
block they are in. (default 'shiftwidth'). A scope declaration
can be "public:", "protected:" or "private:".
***************
*** 283,288 ****
--- 302,308 ----
private: private:
} }
<
+ *cino-h*
hN Place statements occurring after a C++ scope declaration N
characters from the indent of the label. (default
'shiftwidth').
***************
*** 291,296 ****
--- 311,331 ----
public: public: a = a + 1;
a = a + 1; b = b + 1;
<
+ *cino-N*
+ NN Indent inside C++ namespace N characters extra compared to a
+ normal block. (default 0).
+
+ cino= cino=N-s >
+ namespace { namespace {
+ void function(); void function();
+ } }
+
+ namespace my namespace my
+ { {
+ void function(); void function();
+ } }
+ <
+ *cino-p*
pN Parameter declarations for K&R-style function declarations will
be indented N characters from the margin. (default
'shiftwidth').
***************
*** 300,305 ****
--- 335,341 ----
int a; int a; int a;
char b; char b; char b;
<
+ *cino-t*
tN Indent a function return type declaration N characters from the
margin. (default 'shiftwidth').
***************
*** 307,312 ****
--- 343,349 ----
int int int
func() func() func()
<
+ *cino-i*
iN Indent C++ base class declarations and constructor
initializations, if they start in a new line (otherwise they
are aligned at the right side of the ':').
***************
*** 330,335 ****
--- 368,374 ----
a = b + 9 * a = b + 9 *
c; c;
<
+ *cino-c*
cN Indent comment lines after the comment opener, when there is no
other text with which to align, N characters from the comment
opener. (default 3). See also |format-comments|.
***************
*** 339,344 ****
--- 378,384 ----
text. text.
*/ */
<
+ *cino-C*
CN When N is non-zero, indent comment lines by the amount specified
with the c flag above even if there is other text behind the
comment opener. (default 0).
***************
*** 349,360 ****
--- 389,402 ----
********/ ********/
< (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
+ *cino-/*
/N Indent comment lines N characters extra. (default 0).
cino= cino=/4 >
a = b; a = b;
/* comment */ /* comment */
c = d; c = d;
<
+ *cino-(*
(N When in unclosed parentheses, indent N characters from the line
with the unclosed parentheses. Add a 'shiftwidth' for every
unclosed parentheses. When N is 0 or the unclosed parentheses
***************
*** 370,375 ****
--- 412,418 ----
(c2 || c3)) (c2 || c3))
{ {
<
+ *cino-u*
uN Same as (N, but for one level deeper. (default 'shiftwidth').
cino= cino=u2 >
***************
*** 377,382 ****
--- 420,426 ----
&& (c22345 && (c22345
|| c3)) || c3))
<
+ *cino-U*
UN When N is non-zero, do not ignore the indenting specified by
( or u in case that the unclosed parentheses is the first
non-white character in its line. (default 0).
***************
*** 388,393 ****
--- 432,438 ----
c3 c3
) && c4; ) && c4;
<
+ *cino-2*
wN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively, or using "U0" and the unclosed
parentheses is the first non-white character in its line, line
***************
*** 400,405 ****
--- 445,451 ----
|| c3)) || c3))
foo; foo;
<
+ *cino-W*
WN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively and the unclosed parentheses is
the last non-white character in its line and it is not the
***************
*** 414,419 ****
--- 460,466 ----
a_short_line(argument, a_short_line(argument,
argument); argument);
<
+ *cino-m*
mN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the line with the
matching opening parentheses. (default 0).
***************
*** 428,433 ****
--- 475,481 ----
) )
foo; foo;
<
+ *cino-M*
MN When N is non-zero, line up a line starting with a closing
parentheses with the first character of the previous line.
(default 0).
***************
*** 437,443 ****
cond2 cond2
) )
<
! *java-cinoptions* *java-indenting*
jN Indent java anonymous classes correctly. The value 'N' is
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
indent for example the following code snippet correctly: >
--- 485,491 ----
cond2 cond2
) )
<
! *java-cinoptions* *java-indenting* *cino-j*
jN Indent java anonymous classes correctly. The value 'N' is
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
indent for example the following code snippet correctly: >
***************
*** 448,454 ****
}
});
<
! *javascript-cinoptions* *javascript-indenting*
JN Indent JavaScript object declarations correctly by not confusing
them with labels. The value 'N' is currently unused but must be
non-zero (e.g. 'J1'). >
--- 496,502 ----
}
});
<
! *javascript-cinoptions* *javascript-indenting* *cino-J*
JN Indent JavaScript object declarations correctly by not confusing
them with labels. The value 'N' is currently unused but must be
non-zero (e.g. 'J1'). >
***************
*** 483,489 ****
The defaults, spelled out in full, are:
! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,
c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
Vim puts a line in column 1 if:
--- 534,540 ----
The defaults, spelled out in full, are:
! cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
Vim puts a line in column 1 if:
*** ../mercurial/vim73/src/misc1.c 2011-05-25 13:33:59.000000000 +0200
--- src/misc1.c 2011-05-25 14:57:31.000000000 +0200
***************
*** 4959,4964 ****
--- 4959,4965 ----
static int corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos));
static int find_last_paren __ARGS((char_u *l, int start, int end));
static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment));
+ static int cin_is_cpp_namespace __ARGS((char_u *));
static int ind_hash_comment = 0; /* # starts a comment */
***************
*** 5221,5226 ****
--- 5222,5271 ----
return (*(s = cin_skipcomment(s + i)) == ':' && s[1] != ':');
}
+ /* Maximum number of lines to search back for a "namespace" line. */
+ #define FIND_NAMESPACE_LIM 20
+
+ /*
+ * Recognize a "namespace" scope declaration.
+ */
+ static int
+ cin_is_cpp_namespace(s)
+ char_u *s;
+ {
+ char_u *p;
+ int has_name = FALSE;
+
+ s = cin_skipcomment(s);
+ if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9])))
+ {
+ p = cin_skipcomment(skipwhite(s + 9));
+ while (*p != NUL)
+ {
+ if (vim_iswhite(*p))
+ {
+ has_name = TRUE; /* found end of a name */
+ p = cin_skipcomment(skipwhite(p));
+ }
+ else if (*p == '{')
+ {
+ break;
+ }
+ else if (vim_iswordc(*p))
+ {
+ if (has_name)
+ return FALSE; /* word character after skipping past name */
+ ++p;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }
+ return FALSE;
+ }
+
/*
* Return a pointer to the first non-empty non-comment character after a ':'.
* Return NULL if not found.
***************
*** 6296,6301 ****
--- 6341,6351 ----
*/
int ind_keep_case_label = 0;
+ /*
+ * handle C++ namespace
+ */
+ int ind_cpp_namespace = 0;
+
pos_T cur_curpos;
int amount;
int scope_amount;
***************
*** 6336,6341 ****
--- 6386,6392 ----
int n;
int iscase;
int lookfor_break;
+ int lookfor_cpp_namespace = FALSE;
int cont_amount = 0; /* amount for continuation line */
int original_line_islabel;
***************
*** 6409,6414 ****
--- 6460,6466 ----
case 'J': ind_js = n; break;
case 'l': ind_keep_case_label = n; break;
case '#': ind_hash_comment = n; break;
+ case 'N': ind_cpp_namespace = n; break;
}
if (*options == ',')
++options;
***************
*** 6976,6986 ****
--- 7028,7051 ----
if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */
{
amount = ind_open_left_imag;
+ lookfor_cpp_namespace = TRUE;
+ }
+ else if (start_brace == BRACE_AT_START &&
+ lookfor_cpp_namespace) /* '{' is at start */
+ {
+
+ lookfor_cpp_namespace = TRUE;
}
else
{
if (start_brace == BRACE_AT_END) /* '{' is at end of line */
+ {
amount += ind_open_imag;
+
+ l = skipwhite(ml_get_curline());
+ if (cin_is_cpp_namespace(l))
+ amount += ind_cpp_namespace;
+ }
else
{
/* Compensate for adding ind_open_extra later. */
***************
*** 7151,7156 ****
--- 7216,7261 ----
else
amount += ind_continuation;
}
+ else if (lookfor_cpp_namespace)
+ {
+ if (curwin->w_cursor.lnum == ourscope)
+ continue;
+
+ if (curwin->w_cursor.lnum == 0
+ || curwin->w_cursor.lnum
+ < ourscope - FIND_NAMESPACE_LIM)
+ break;
+
+ l = ml_get_curline();
+
+ /*
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+ trypos = find_start_comment(ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+ continue;
+ }
+
+ /*
+ * Skip preprocessor directives and blank lines.
+ */
+ if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
+ continue;
+
+ if (cin_is_cpp_namespace(l))
+ {
+ amount += ind_cpp_namespace;
+ break;
+ }
+
+ if (cin_nocode(l))
+ continue;
+
+ }
else if (lookfor != LOOKFOR_TERM
&& lookfor != LOOKFOR_CPP_BASECLASS)
{
*** ../mercurial/vim73/src/testdir/test3.in 2011-05-25 13:33:59.000000000 +0200
--- src/testdir/test3.in 2011-05-25 14:47:31.000000000 +0200
***************
*** 799,804 ****
--- 799,867 ----
df */
hello
}
+
+ /* valid namespaces with normal indent */
+ namespace
+ {
+ {
+ 111111111111;
+ }
+ }
+ namespace /* test */
+ {
+ 11111111111111111;
+ }
+ namespace // test
+ {
+ 111111111111111111;
+ }
+ namespace
+ {
+ 111111111111111111;
+ }
+ namespace test
+ {
+ 111111111111111111;
+ }
+ namespace{
+ 111111111111111111;
+ }
+ namespace test{
+ 111111111111111111;
+ }
+ namespace {
+ 111111111111111111;
+ }
+ namespace test {
+ 111111111111111111;
+ namespace test2 {
+ 22222222222222222;
+ }
+ }
+
+ /* invalid namespaces use block indent */
+ namespace test test2 {
+ 111111111111111111111;
+ }
+ namespace11111111111 {
+ 111111111111;
+ }
+ namespace() {
+ 1111111111111;
+ }
+ namespace()
+ {
+ 111111111111111111;
+ }
+ namespace test test2
+ {
+ 1111111111111111111;
+ }
+ namespace111111111
+ {
+ 111111111111111111;
+ }
+
/* end of AUTO */
STARTTEST
***************
*** 1428,1433 ****
--- 1491,1566 ----
}
STARTTEST
+ :set cino=N-s
+ /namespaces
+ =/^NAMESPACEEND
+ ENDTEST
+
+ /* valid namespaces with normal indent */
+ namespace
+ {
+ {
+ 111111111111;
+ }
+ }
+ namespace /* test */
+ {
+ 11111111111111111;
+ }
+ namespace // test
+ {
+ 111111111111111111;
+ }
+ namespace
+ {
+ 111111111111111111;
+ }
+ namespace test
+ {
+ 111111111111111111;
+ }
+ namespace{
+ 111111111111111111;
+ }
+ namespace test{
+ 111111111111111111;
+ }
+ namespace {
+ 111111111111111111;
+ }
+ namespace test {
+ 111111111111111111;
+ namespace test2 {
+ 22222222222222222;
+ }
+ }
+
+ /* invalid namespaces use block indent */
+ namespace test test2 {
+ 111111111111111111111;
+ }
+ namespace11111111111 {
+ 111111111111;
+ }
+ namespace() {
+ 1111111111111;
+ }
+ namespace()
+ {
+ 111111111111111111;
+ }
+ namespace test test2
+ {
+ 1111111111111111111;
+ }
+ namespace111111111
+ {
+ 111111111111111111;
+ }
+ NAMESPACEEND
+
+
+ STARTTEST
:g/^STARTTEST/.,/^ENDTEST/d
:1;/start of AUTO/,$wq! test.out
ENDTEST
*** ../mercurial/vim73/src/testdir/test3.ok 2011-05-25 13:33:59.000000000 +0200
--- src/testdir/test3.ok 2011-05-25 14:48:02.000000000 +0200
***************
*** 787,792 ****
--- 787,855 ----
df */
hello
}
+
+ /* valid namespaces with normal indent */
+ namespace
+ {
+ {
+ 111111111111;
+ }
+ }
+ namespace /* test */
+ {
+ 11111111111111111;
+ }
+ namespace // test
+ {
+ 111111111111111111;
+ }
+ namespace
+ {
+ 111111111111111111;
+ }
+ namespace test
+ {
+ 111111111111111111;
+ }
+ namespace{
+ 111111111111111111;
+ }
+ namespace test{
+ 111111111111111111;
+ }
+ namespace {
+ 111111111111111111;
+ }
+ namespace test {
+ 111111111111111111;
+ namespace test2 {
+ 22222222222222222;
+ }
+ }
+
+ /* invalid namespaces use block indent */
+ namespace test test2 {
+ 111111111111111111111;
+ }
+ namespace11111111111 {
+ 111111111111;
+ }
+ namespace() {
+ 1111111111111;
+ }
+ namespace()
+ {
+ 111111111111111111;
+ }
+ namespace test test2
+ {
+ 1111111111111111111;
+ }
+ namespace111111111
+ {
+ 111111111111111111;
+ }
+
/* end of AUTO */
***************
*** 1273,1275 ****
--- 1336,1403 ----
baz();
}
+
+ /* valid namespaces with normal indent */
+ namespace
+ {
+ {
+ 111111111111;
+ }
+ }
+ namespace /* test */
+ {
+ 11111111111111111;
+ }
+ namespace // test
+ {
+ 111111111111111111;
+ }
+ namespace
+ {
+ 111111111111111111;
+ }
+ namespace test
+ {
+ 111111111111111111;
+ }
+ namespace{
+ 111111111111111111;
+ }
+ namespace test{
+ 111111111111111111;
+ }
+ namespace {
+ 111111111111111111;
+ }
+ namespace test {
+ 111111111111111111;
+ namespace test2 {
+ 22222222222222222;
+ }
+ }
+
+ /* invalid namespaces use block indent */
+ namespace test test2 {
+ 111111111111111111111;
+ }
+ namespace11111111111 {
+ 111111111111;
+ }
+ namespace() {
+ 1111111111111;
+ }
+ namespace()
+ {
+ 111111111111111111;
+ }
+ namespace test test2
+ {
+ 1111111111111111111;
+ }
+ namespace111111111
+ {
+ 111111111111111111;
+ }
+ NAMESPACEEND
+
+
*** ../vim-7.3.201/src/version.c 2011-05-25 13:33:59.000000000 +0200
--- src/version.c 2011-05-25 15:14:20.000000000 +0200
***************
*** 711,712 ****
--- 711,714 ----
{ /* Add new patch number below this line */
+ /**/
+ 202,
/**/
--
hundred-and-one symptoms of being an internet addict:
107. When using your phone you forget that you don't have to use your
keyboard.
/// 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 ///