forked from aniani/vim
Add the 'L' item to 'cinoptions'. (Manuel Konig)
This commit is contained in:
parent
76b96fc08b
commit
02c707a87d
@ -215,6 +215,19 @@ assume a 'shiftwidth' of 4.
|
|||||||
a = b; a = b; a = b;
|
a = b; a = b; a = b;
|
||||||
} } }
|
} } }
|
||||||
} } }
|
} } }
|
||||||
|
<
|
||||||
|
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).
|
||||||
|
|
||||||
|
cino= cino=L2 cino=Ls >
|
||||||
|
func() func() func()
|
||||||
|
{ { {
|
||||||
|
{ { {
|
||||||
|
stmt; stmt; stmt;
|
||||||
|
LABEL: LABEL: LABEL:
|
||||||
|
} } }
|
||||||
|
} } }
|
||||||
<
|
<
|
||||||
:N Place case labels N characters from the indent of the switch().
|
:N Place case labels N characters from the indent of the switch().
|
||||||
(default 'shiftwidth').
|
(default 'shiftwidth').
|
||||||
@ -464,13 +477,14 @@ assume a 'shiftwidth' of 4.
|
|||||||
|
|
||||||
|
|
||||||
The defaults, spelled out in full, are:
|
The defaults, spelled out in full, are:
|
||||||
cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0,
|
cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,
|
||||||
/0,(2s,us,U0,w0,W0,m0,j0,)20,*70,#0
|
c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
|
||||||
|
|
||||||
Vim puts a line in column 1 if:
|
Vim puts a line in column 1 if:
|
||||||
- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
|
- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
|
||||||
- It starts with a label (a keyword followed by ':', other than "case" and
|
- It starts with a label (a keyword followed by ':', other than "case" and
|
||||||
"default").
|
"default") and 'cinoptions' does not contain an 'L' entry with a positive
|
||||||
|
value.
|
||||||
- Any combination of indentations causes the line to have less than 0
|
- Any combination of indentations causes the line to have less than 0
|
||||||
indentation.
|
indentation.
|
||||||
|
|
||||||
|
@ -1095,9 +1095,6 @@ Before release 7.3:
|
|||||||
|
|
||||||
Vim 7.3:
|
Vim 7.3:
|
||||||
Patches to possibly include:
|
Patches to possibly include:
|
||||||
- Patch for adding "J" flag to 'cinoptions': placement of jump label. (Manuel
|
|
||||||
Konig, 2010 Feb 19) Update by Lech Lorens, Feb 22.
|
|
||||||
Need another name, "J" is now used for Javascript.
|
|
||||||
- Patch for Python 3 support. (Roland Puntaier, 2009 Sep 22)
|
- Patch for Python 3 support. (Roland Puntaier, 2009 Sep 22)
|
||||||
Includes changes for omnicompletion.
|
Includes changes for omnicompletion.
|
||||||
Needs some more testing.
|
Needs some more testing.
|
||||||
|
20
src/misc1.c
20
src/misc1.c
@ -6061,6 +6061,12 @@ get_c_indent()
|
|||||||
*/
|
*/
|
||||||
int ind_open_left_imag = 0;
|
int ind_open_left_imag = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Spaces jump labels should be shifted to the left if N is non-negative,
|
||||||
|
* otherwise the jump label will be put to column 1.
|
||||||
|
*/
|
||||||
|
int ind_jump_label = -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* spaces from the switch() indent a "case xx" label should be located
|
* spaces from the switch() indent a "case xx" label should be located
|
||||||
*/
|
*/
|
||||||
@ -6232,6 +6238,7 @@ get_c_indent()
|
|||||||
int iscase;
|
int iscase;
|
||||||
int lookfor_break;
|
int lookfor_break;
|
||||||
int cont_amount = 0; /* amount for continuation line */
|
int cont_amount = 0; /* amount for continuation line */
|
||||||
|
int original_line_islabel;
|
||||||
|
|
||||||
for (options = curbuf->b_p_cino; *options; )
|
for (options = curbuf->b_p_cino; *options; )
|
||||||
{
|
{
|
||||||
@ -6277,6 +6284,7 @@ get_c_indent()
|
|||||||
case '{': ind_open_extra = n; break;
|
case '{': ind_open_extra = n; break;
|
||||||
case '}': ind_close_extra = n; break;
|
case '}': ind_close_extra = n; break;
|
||||||
case '^': ind_open_left_imag = n; break;
|
case '^': ind_open_left_imag = n; break;
|
||||||
|
case 'L': ind_jump_label = n; break;
|
||||||
case ':': ind_case = n; break;
|
case ':': ind_case = n; break;
|
||||||
case '=': ind_case_code = n; break;
|
case '=': ind_case_code = n; break;
|
||||||
case 'b': ind_case_break = n; break;
|
case 'b': ind_case_break = n; break;
|
||||||
@ -6339,6 +6347,8 @@ get_c_indent()
|
|||||||
|
|
||||||
curwin->w_cursor.col = 0;
|
curwin->w_cursor.col = 0;
|
||||||
|
|
||||||
|
original_line_islabel = cin_islabel(ind_maxcomment); /* XXX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* #defines and so on always go at the left when included in 'cinkeys'.
|
* #defines and so on always go at the left when included in 'cinkeys'.
|
||||||
*/
|
*/
|
||||||
@ -6348,9 +6358,11 @@ get_c_indent()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Is it a non-case label? Then that goes at the left margin too unless JS flag is set.
|
* Is it a non-case label? Then that goes at the left margin too unless:
|
||||||
|
* - JS flag is set.
|
||||||
|
* - 'L' item has a positive value.
|
||||||
*/
|
*/
|
||||||
else if (!ind_js && cin_islabel(ind_maxcomment)) /* XXX */
|
else if (original_line_islabel && !ind_js && ind_jump_label < 0)
|
||||||
{
|
{
|
||||||
amount = 0;
|
amount = 0;
|
||||||
}
|
}
|
||||||
@ -7743,6 +7755,10 @@ term_again:
|
|||||||
/* add extra indent for a comment */
|
/* add extra indent for a comment */
|
||||||
if (cin_iscomment(theline))
|
if (cin_iscomment(theline))
|
||||||
amount += ind_comment;
|
amount += ind_comment;
|
||||||
|
|
||||||
|
/* subtract extra left-shift for jump labels */
|
||||||
|
if (ind_jump_label > 0 && original_line_islabel)
|
||||||
|
amount -= ind_jump_label;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user