home *** CD-ROM | disk | FTP | other *** search
- 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 ':').
- ***************
- *** 320,325 ****
- --- 357,363 ----
- BaseClass(3) BaseClass(3)
- {} {}
- <
- + *cino-+*
- +N Indent a continuation line (a line that spills onto the next)
- inside a function N additional characters. (default
- 'shiftwidth').
- ***************
- *** 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'). >
- ***************
- *** 466,481 ****
- --- 514,532 ----
- }
- }
- <
- + *cino-)*
- )N Vim searches for unclosed parentheses at most N lines away.
- This limits the time needed to search for parentheses. (default
- 20 lines).
-
- + *cino-star*
- *N Vim searches for unclosed comments at most N lines away. This
- limits the time needed to search for the start of a comment.
- If your /* */ comments stop indenting afer N lines this is the
- value you will want to change.
- (default 70 lines).
-
- + *cino-#*
- #N When N is non-zero recognize shell/Perl comments, starting with
- '#'. Default N is zero: don't recognizes '#' comments. Note
- that lines starting with # will still be seen as preprocessor
- ***************
- *** 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 ///
-