summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.071
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches/7.4.071')
-rw-r--r--patches/source/vim/patches/7.4.0711302
1 files changed, 1302 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.071 b/patches/source/vim/patches/7.4.071
new file mode 100644
index 000000000..71b2984e5
--- /dev/null
+++ b/patches/source/vim/patches/7.4.071
@@ -0,0 +1,1302 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.071
+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.4.071 (after 7.4.069)
+Problem: Passing limits around too often.
+Solution: Use limits from buffer.
+Files: src/edit.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.4.070/src/edit.c 2013-11-05 07:12:59.000000000 +0100
+--- src/edit.c 2013-11-06 03:19:10.000000000 +0100
+***************
+*** 7857,7864 ****
+ if (try_match && keytyped == ':')
+ {
+ p = ml_get_curline();
+! if (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel(30))
+ return TRUE;
+ /* Need to get the line again after cin_islabel(). */
+ p = ml_get_curline();
+--- 7857,7863 ----
+ if (try_match && keytyped == ':')
+ {
+ p = ml_get_curline();
+! if (cin_iscase(p, FALSE) || cin_isscopedecl(p) || cin_islabel())
+ return TRUE;
+ /* Need to get the line again after cin_islabel(). */
+ p = ml_get_curline();
+***************
+*** 7868,7874 ****
+ {
+ p[curwin->w_cursor.col - 1] = ' ';
+ i = (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel(30));
+ p = ml_get_curline();
+ p[curwin->w_cursor.col - 1] = ':';
+ if (i)
+--- 7867,7873 ----
+ {
+ p[curwin->w_cursor.col - 1] = ' ';
+ i = (cin_iscase(p, FALSE) || cin_isscopedecl(p)
+! || cin_islabel());
+ p = ml_get_curline();
+ p[curwin->w_cursor.col - 1] = ':';
+ if (i)
+*** ../vim-7.4.070/src/misc1.c 2013-11-05 07:12:59.000000000 +0100
+--- src/misc1.c 2013-11-06 03:46:59.000000000 +0100
+***************
+*** 5191,5201 ****
+--- 5191,5208 ----
+ #if defined(FEAT_CINDENT) || defined(FEAT_SYN_HL)
+
+ static char_u *skip_string __ARGS((char_u *p));
++ static pos_T *ind_find_start_comment __ARGS((void));
+
+ /*
+ * Find the start of a comment, not knowing if we are in a comment right now.
+ * Search starts at w_cursor.lnum and goes backwards.
+ */
++ static pos_T *
++ ind_find_start_comment() /* XXX */
++ {
++ return find_start_comment(curbuf->b_ind_maxcomment);
++ }
++
+ pos_T *
+ find_start_comment(ind_maxcomment) /* XXX */
+ int ind_maxcomment;
+***************
+*** 5313,5319 ****
+ static int cin_isdefault __ARGS((char_u *));
+ static char_u *after_label __ARGS((char_u *l));
+ static int get_indent_nolabel __ARGS((linenr_T lnum));
+! static int skip_label __ARGS((linenr_T, char_u **pp, int ind_maxcomment));
+ static int cin_first_id_amount __ARGS((void));
+ static int cin_get_equal_amount __ARGS((linenr_T lnum));
+ static int cin_ispreproc __ARGS((char_u *));
+--- 5320,5326 ----
+ static int cin_isdefault __ARGS((char_u *));
+ static char_u *after_label __ARGS((char_u *l));
+ static int get_indent_nolabel __ARGS((linenr_T lnum));
+! static int skip_label __ARGS((linenr_T, char_u **pp));
+ static int cin_first_id_amount __ARGS((void));
+ static int cin_get_equal_amount __ARGS((linenr_T lnum));
+ static int cin_ispreproc __ARGS((char_u *));
+***************
+*** 5322,5345 ****
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+! static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int));
+ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset));
+! static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment));
+ static int cin_isbreak __ARGS((char_u *));
+ static int cin_is_cpp_baseclass __ARGS((colnr_T *col));
+! static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass));
+ static int cin_ends_in __ARGS((char_u *, char_u *, char_u *));
+ static int cin_starts_with __ARGS((char_u *s, char *word));
+ static int cin_skip2pos __ARGS((pos_T *trypos));
+! static pos_T *find_start_brace __ARGS((int));
+! static pos_T *find_match_paren __ARGS((int, int));
+! 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 *));
+
+ /*
+--- 5329,5352 ----
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+! static int cin_iswhileofdo __ARGS((char_u *, linenr_T));
+ static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset));
+! static int cin_iswhileofdo_end __ARGS((int terminated));
+ static int cin_isbreak __ARGS((char_u *));
+ static int cin_is_cpp_baseclass __ARGS((colnr_T *col));
+! static int get_baseclass_amount __ARGS((int col));
+ static int cin_ends_in __ARGS((char_u *, char_u *, char_u *));
+ static int cin_starts_with __ARGS((char_u *s, char *word));
+ static int cin_skip2pos __ARGS((pos_T *trypos));
+! static pos_T *find_start_brace __ARGS((void));
+! static pos_T *find_match_paren __ARGS((int));
+! static int corr_ind_maxparen __ARGS((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));
+ static int cin_is_cpp_namespace __ARGS((char_u *));
+
+ /*
+***************
+*** 5444,5451 ****
+ * Note: curwin->w_cursor must be where we are looking for the label.
+ */
+ int
+! cin_islabel(ind_maxcomment) /* XXX */
+! int ind_maxcomment;
+ {
+ char_u *s;
+
+--- 5451,5457 ----
+ * Note: curwin->w_cursor must be where we are looking for the label.
+ */
+ int
+! cin_islabel() /* XXX */
+ {
+ char_u *s;
+
+***************
+*** 5479,5485 ****
+ * If we're in a comment now, skip to the start of the comment.
+ */
+ curwin->w_cursor.col = 0;
+! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) /* XXX */
+ curwin->w_cursor = *trypos;
+
+ line = ml_get_curline();
+--- 5485,5491 ----
+ * If we're in a comment now, skip to the start of the comment.
+ */
+ curwin->w_cursor.col = 0;
+! if ((trypos = ind_find_start_comment()) != NULL) /* XXX */
+ curwin->w_cursor = *trypos;
+
+ line = ml_get_curline();
+***************
+*** 5725,5734 ****
+ * ^
+ */
+ static int
+! skip_label(lnum, pp, ind_maxcomment)
+ linenr_T lnum;
+ char_u **pp;
+- int ind_maxcomment;
+ {
+ char_u *l;
+ int amount;
+--- 5731,5739 ----
+ * ^
+ */
+ static int
+! skip_label(lnum, pp)
+ linenr_T lnum;
+ char_u **pp;
+ {
+ char_u *l;
+ int amount;
+***************
+*** 5738,5745 ****
+ curwin->w_cursor.lnum = lnum;
+ l = ml_get_curline();
+ /* XXX */
+! if (cin_iscase(l, FALSE) || cin_isscopedecl(l)
+! || cin_islabel(ind_maxcomment))
+ {
+ amount = get_indent_nolabel(lnum);
+ l = after_label(ml_get_curline());
+--- 5743,5749 ----
+ curwin->w_cursor.lnum = lnum;
+ l = ml_get_curline();
+ /* XXX */
+! if (cin_iscase(l, FALSE) || cin_isscopedecl(l) || cin_islabel())
+ {
+ amount = get_indent_nolabel(lnum);
+ l = after_label(ml_get_curline());
+***************
+*** 5983,5994 ****
+ * "min_lnum" is the line before which we will not be looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment)
+ char_u **sp;
+ linenr_T first_lnum;
+ linenr_T min_lnum;
+- int ind_maxparen;
+- int ind_maxcomment;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+--- 5987,5996 ----
+ * "min_lnum" is the line before which we will not be looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum)
+ char_u **sp;
+ linenr_T first_lnum;
+ linenr_T min_lnum;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+***************
+*** 6002,6008 ****
+ s = *sp;
+
+ if (find_last_paren(s, '(', ')')
+! && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL)
+ {
+ lnum = trypos->lnum;
+ if (lnum < min_lnum)
+--- 6004,6010 ----
+ s = *sp;
+
+ if (find_last_paren(s, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ {
+ lnum = trypos->lnum;
+ if (lnum < min_lnum)
+***************
+*** 6110,6119 ****
+ * ')' and ';'. The condition may be spread over several lines.
+ */
+ static int
+! cin_iswhileofdo(p, lnum, ind_maxparen) /* XXX */
+ char_u *p;
+ linenr_T lnum;
+- int ind_maxparen;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6112,6120 ----
+ * ')' and ';'. The condition may be spread over several lines.
+ */
+ static int
+! cin_iswhileofdo(p, lnum) /* XXX */
+ char_u *p;
+ linenr_T lnum;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6133,6139 ****
+ ++p;
+ ++curwin->w_cursor.col;
+ }
+! if ((trypos = findmatchlimit(NULL, 0, 0, ind_maxparen)) != NULL
+ && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';')
+ retval = TRUE;
+ curwin->w_cursor = cursor_save;
+--- 6134,6141 ----
+ ++p;
+ ++curwin->w_cursor.col;
+ }
+! if ((trypos = findmatchlimit(NULL, 0, 0,
+! curbuf->b_ind_maxparen)) != NULL
+ && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';')
+ retval = TRUE;
+ curwin->w_cursor = cursor_save;
+***************
+*** 6196,6205 ****
+ * Adjust the cursor to the line with "while".
+ */
+ static int
+! cin_iswhileofdo_end(terminated, ind_maxparen, ind_maxcomment)
+ int terminated;
+- int ind_maxparen;
+- int ind_maxcomment;
+ {
+ char_u *line;
+ char_u *p;
+--- 6198,6205 ----
+ * Adjust the cursor to the line with "while".
+ */
+ static int
+! cin_iswhileofdo_end(terminated)
+ int terminated;
+ {
+ char_u *line;
+ char_u *p;
+***************
+*** 6223,6229 ****
+ * before the matching '('. XXX */
+ i = (int)(p - line);
+ curwin->w_cursor.col = i;
+! trypos = find_match_paren(ind_maxparen, ind_maxcomment);
+ if (trypos != NULL)
+ {
+ s = cin_skipcomment(ml_get(trypos->lnum));
+--- 6223,6229 ----
+ * before the matching '('. XXX */
+ i = (int)(p - line);
+ curwin->w_cursor.col = i;
+! trypos = find_match_paren(curbuf->b_ind_maxparen);
+ if (trypos != NULL)
+ {
+ s = cin_skipcomment(ml_get(trypos->lnum));
+***************
+*** 6415,6425 ****
+ }
+
+ static int
+! get_baseclass_amount(col, ind_maxparen, ind_maxcomment, ind_cpp_baseclass)
+ int col;
+- int ind_maxparen;
+- int ind_maxcomment;
+- int ind_cpp_baseclass;
+ {
+ int amount;
+ colnr_T vcol;
+--- 6415,6422 ----
+ }
+
+ static int
+! get_baseclass_amount(col)
+ int col;
+ {
+ int amount;
+ colnr_T vcol;
+***************
+*** 6429,6439 ****
+ {
+ amount = get_indent();
+ if (find_last_paren(ml_get_curline(), '(', ')')
+! && (trypos = find_match_paren(ind_maxparen,
+! ind_maxcomment)) != NULL)
+ amount = get_indent_lnum(trypos->lnum); /* XXX */
+ if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL))
+! amount += ind_cpp_baseclass;
+ }
+ else
+ {
+--- 6426,6435 ----
+ {
+ amount = get_indent();
+ if (find_last_paren(ml_get_curline(), '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ amount = get_indent_lnum(trypos->lnum); /* XXX */
+ if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL))
+! amount += curbuf->b_ind_cpp_baseclass;
+ }
+ else
+ {
+***************
+*** 6441,6448 ****
+ getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+ amount = (int)vcol;
+ }
+! if (amount < ind_cpp_baseclass)
+! amount = ind_cpp_baseclass;
+ return amount;
+ }
+
+--- 6437,6444 ----
+ getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+ amount = (int)vcol;
+ }
+! if (amount < curbuf->b_ind_cpp_baseclass)
+! amount = curbuf->b_ind_cpp_baseclass;
+ return amount;
+ }
+
+***************
+*** 6526,6533 ****
+ /* } */
+
+ static pos_T *
+! find_start_brace(ind_maxcomment) /* XXX */
+! int ind_maxcomment;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6522,6528 ----
+ /* } */
+
+ static pos_T *
+! find_start_brace() /* XXX */
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6543,6549 ****
+ pos = NULL;
+ /* ignore the { if it's in a // or / * * / comment */
+ if ((colnr_T)cin_skip2pos(trypos) == trypos->col
+! && (pos = find_start_comment(ind_maxcomment)) == NULL) /* XXX */
+ break;
+ if (pos != NULL)
+ curwin->w_cursor.lnum = pos->lnum;
+--- 6538,6544 ----
+ pos = NULL;
+ /* ignore the { if it's in a // or / * * / comment */
+ if ((colnr_T)cin_skip2pos(trypos) == trypos->col
+! && (pos = ind_find_start_comment()) == NULL) /* XXX */
+ break;
+ if (pos != NULL)
+ curwin->w_cursor.lnum = pos->lnum;
+***************
+*** 6557,6565 ****
+ * Return NULL if no match found.
+ */
+ static pos_T *
+! find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */
+ int ind_maxparen;
+- int ind_maxcomment;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+--- 6552,6559 ----
+ * Return NULL if no match found.
+ */
+ static pos_T *
+! find_match_paren(ind_maxparen) /* XXX */
+ int ind_maxparen;
+ {
+ pos_T cursor_save;
+ pos_T *trypos;
+***************
+*** 6576,6582 ****
+ pos_copy = *trypos; /* copy trypos, findmatch will change it */
+ trypos = &pos_copy;
+ curwin->w_cursor = *trypos;
+! if (find_start_comment(ind_maxcomment) != NULL) /* XXX */
+ trypos = NULL;
+ }
+ }
+--- 6570,6576 ----
+ pos_copy = *trypos; /* copy trypos, findmatch will change it */
+ trypos = &pos_copy;
+ curwin->w_cursor = *trypos;
+! if (ind_find_start_comment() != NULL) /* XXX */
+ trypos = NULL;
+ }
+ }
+***************
+*** 6591,6605 ****
+ * looking a few lines further.
+ */
+ static int
+! corr_ind_maxparen(ind_maxparen, startpos)
+! int ind_maxparen;
+ pos_T *startpos;
+ {
+ long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum;
+
+! if (n > 0 && n < ind_maxparen / 2)
+! return ind_maxparen - (int)n;
+! return ind_maxparen;
+ }
+
+ /*
+--- 6585,6598 ----
+ * looking a few lines further.
+ */
+ static int
+! corr_ind_maxparen(startpos)
+ pos_T *startpos;
+ {
+ long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum;
+
+! if (n > 0 && n < curbuf->b_ind_maxparen / 2)
+! return curbuf->b_ind_maxparen - (int)n;
+! return curbuf->b_ind_maxparen;
+ }
+
+ /*
+***************
+*** 6937,6943 ****
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(curbuf->b_ind_maxcomment); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+--- 6930,6936 ----
+
+ curwin->w_cursor.col = 0;
+
+! original_line_islabel = cin_islabel(); /* XXX */
+
+ /*
+ * #defines and so on always go at the left when included in 'cinkeys'.
+***************
+*** 6973,6979 ****
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = find_start_comment(curbuf->b_ind_maxcomment)) != NULL)
+ /* XXX */
+ {
+ int lead_start_len = 2;
+--- 6966,6972 ----
+ * comment, try using the 'comments' option.
+ */
+ else if (!cin_iscomment(theline)
+! && (trypos = ind_find_start_comment()) != NULL)
+ /* XXX */
+ {
+ int lead_start_len = 2;
+***************
+*** 7126,7136 ****
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL
+ && curbuf->b_ind_java == 0)
+! || (tryposBrace =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+--- 7119,7127 ----
+ /*
+ * Are we inside parentheses or braces?
+ */ /* XXX */
+! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL
+ && curbuf->b_ind_java == 0)
+! || (tryposBrace = find_start_brace()) != NULL
+ || trypos != NULL)
+ {
+ if (trypos != NULL && tryposBrace != NULL)
+***************
+*** 7170,7177 ****
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+--- 7161,7167 ----
+ curwin->w_cursor.lnum = lnum;
+
+ /* Skip a comment. XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ lnum = trypos->lnum + 1;
+ continue;
+***************
+*** 7179,7186 ****
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen, &cur_curpos),
+! curbuf->b_ind_maxcomment)) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+--- 7169,7175 ----
+
+ /* XXX */
+ if ((trypos = find_match_paren(
+! corr_ind_maxparen(&cur_curpos))) != NULL
+ && trypos->lnum == our_paren_pos.lnum
+ && trypos->col == our_paren_pos.col)
+ {
+***************
+*** 7223,7230 ****
+ curwin->w_cursor.lnum = outermost.lnum;
+ curwin->w_cursor.col = outermost.col;
+
+! trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+ } while (trypos && trypos->lnum == outermost.lnum);
+
+ curwin->w_cursor = cursor_save;
+--- 7212,7218 ----
+ curwin->w_cursor.lnum = outermost.lnum;
+ curwin->w_cursor.col = outermost.col;
+
+! trypos = find_match_paren(curbuf->b_ind_maxparen);
+ } while (trypos && trypos->lnum == outermost.lnum);
+
+ curwin->w_cursor = cursor_save;
+***************
+*** 7235,7242 ****
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look,
+! curbuf->b_ind_maxcomment);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+--- 7223,7229 ----
+ cin_is_if_for_while_before_offset(line, &outermost.col);
+ }
+
+! amount = skip_label(our_paren_pos.lnum, &look);
+ look = skipwhite(look);
+ if (*look == '(')
+ {
+***************
+*** 7366,7373 ****
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) != NULL)
+ amount += curbuf->b_ind_unclosed2;
+ else
+ {
+--- 7353,7359 ----
+ {
+ curwin->w_cursor.lnum = our_paren_pos.lnum;
+ curwin->w_cursor.col = col;
+! if (find_match_paren(curbuf->b_ind_maxparen) != NULL)
+ amount += curbuf->b_ind_unclosed2;
+ else
+ {
+***************
+*** 7435,7442 ****
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ lnum = trypos->lnum;
+
+ /*
+--- 7421,7428 ----
+ */
+ lnum = ourscope;
+ if (find_last_paren(start, '(', ')')
+! && (trypos = find_match_paren(curbuf->b_ind_maxparen))
+! != NULL)
+ lnum = trypos->lnum;
+
+ /*
+***************
+*** 7449,7455 ****
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l, curbuf->b_ind_maxcomment);
+
+ start_brace = BRACE_AT_END;
+ }
+--- 7435,7441 ----
+ && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+ amount = get_indent();
+ else
+! amount = skip_label(lnum, &l);
+
+ start_brace = BRACE_AT_END;
+ }
+***************
+*** 7478,7491 ****
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum,
+! curbuf->b_ind_maxparen)) /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+--- 7464,7475 ----
+ lookfor = LOOKFOR_INITIAL;
+ if (cin_iselse(theline))
+ lookfor = LOOKFOR_IF;
+! else if (cin_iswhileofdo(theline, cur_curpos.lnum)) /* XXX */
+ lookfor = LOOKFOR_DO;
+ if (lookfor != LOOKFOR_INITIAL)
+ {
+ curwin->w_cursor.lnum = cur_curpos.lnum;
+! if (find_match(lookfor, ourscope) == OK)
+ {
+ amount = get_indent(); /* XXX */
+ goto theend;
+***************
+*** 7611,7617 ****
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+! trypos = find_start_comment(curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+--- 7595,7601 ----
+ * If we're in a comment now, skip to the start of the
+ * comment.
+ */
+! trypos = ind_find_start_comment();
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7636,7644 ****
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+! 0, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+--- 7620,7626 ----
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+***************
+*** 7670,7681 ****
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+ trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(
+! curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 7652,7661 ----
+ trypos = NULL;
+ if (find_last_paren(l, '(', ')'))
+ trypos = find_match_paren(
+! curbuf->b_ind_maxparen);
+
+ if (trypos == NULL && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace();
+
+ if (trypos != NULL)
+ {
+***************
+*** 7733,7740 ****
+
+ /* If we're in a comment now, skip to the start of
+ * the comment. */
+! trypos = find_start_comment(
+! curbuf->b_ind_maxcomment);
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+--- 7713,7719 ----
+
+ /* If we're in a comment now, skip to the start of
+ * the comment. */
+! trypos = ind_find_start_comment();
+ if (trypos != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+***************
+*** 7764,7771 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment))
+! != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7743,7749 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7819,7826 ****
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+ || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+--- 7797,7803 ----
+ * Check that this case label is not for another
+ * switch()
+ */ /* XXX */
+! if ((trypos = find_start_brace()) == NULL
+ || trypos->lnum == ourscope)
+ {
+ amount = get_indent(); /* XXX */
+***************
+*** 7894,7901 ****
+ */
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+! if (find_last_paren(l, '{', '}') && (trypos =
+! find_start_brace(curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 7871,7878 ----
+ */
+ if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL)
+ {
+! if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 7906,7912 ****
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!curbuf->b_ind_js && cin_islabel(curbuf->b_ind_maxcomment))
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+--- 7883,7889 ----
+ /*
+ * Ignore jump labels with nothing after them.
+ */
+! if (!curbuf->b_ind_js && cin_islabel())
+ {
+ l = after_label(ml_get_curline());
+ if (l == NULL || cin_nocode(l))
+***************
+*** 7952,7961 ****
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+--- 7929,7935 ----
+ }
+ else
+ /* XXX */
+! amount = get_baseclass_amount(col);
+ break;
+ }
+ else if (lookfor == LOOKFOR_CPP_BASECLASS)
+***************
+*** 7997,8005 ****
+ * matching it will take us back to the start of the line.
+ */
+ (void)find_last_paren(l, '(', ')');
+! trypos = find_match_paren(
+! corr_ind_maxparen(curbuf->b_ind_maxparen,
+! &cur_curpos), curbuf->b_ind_maxcomment);
+
+ /*
+ * If we are looking for ',', we also look for matching
+--- 7971,7977 ----
+ * matching it will take us back to the start of the line.
+ */
+ (void)find_last_paren(l, '(', ')');
+! trypos = find_match_paren(corr_ind_maxparen(&cur_curpos));
+
+ /*
+ * If we are looking for ',', we also look for matching
+***************
+*** 8007,8013 ****
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace(curbuf->b_ind_maxcomment);
+
+ if (trypos != NULL)
+ {
+--- 7979,7985 ----
+ */
+ if (trypos == NULL && terminated == ','
+ && find_last_paren(l, '{', '}'))
+! trypos = find_start_brace();
+
+ if (trypos != NULL)
+ {
+***************
+*** 8051,8058 ****
+ * ignoring any jump label. XXX
+ */
+ if (!curbuf->b_ind_js)
+! cur_amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+ else
+ cur_amount = get_indent();
+ /*
+--- 8023,8029 ----
+ * ignoring any jump label. XXX
+ */
+ if (!curbuf->b_ind_js)
+! cur_amount = skip_label(curwin->w_cursor.lnum, &l);
+ else
+ cur_amount = get_indent();
+ /*
+***************
+*** 8162,8172 ****
+ curwin->w_cursor.col =
+ (colnr_T)(l - ml_get_curline()) + 1;
+
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ }
+ }
+--- 8133,8141 ----
+ curwin->w_cursor.col =
+ (colnr_T)(l - ml_get_curline()) + 1;
+
+! if ((trypos = find_start_brace()) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum)
+! == FAIL)
+ break;
+ }
+ }
+***************
+*** 8261,8268 ****
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+--- 8230,8236 ----
+ * If so: Ignore until the matching "do".
+ */
+ /* XXX */
+! else if (cin_iswhileofdo_end(terminated))
+ {
+ /*
+ * Found an unterminated line after a while ();, line up
+***************
+*** 8380,8387 ****
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+--- 8348,8354 ----
+ l = ml_get_curline();
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen)) != NULL)
+ {
+ /*
+ * Check if we are on a case label now. This is
+***************
+*** 8415,8422 ****
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+! amount = skip_label(curwin->w_cursor.lnum,
+! &l, curbuf->b_ind_maxcomment);
+
+ if (theline[0] == '{')
+ amount += curbuf->b_ind_open_extra;
+--- 8382,8388 ----
+ * Get indent and pointer to text for current line,
+ * ignoring any jump label.
+ */
+! amount = skip_label(curwin->w_cursor.lnum, &l);
+
+ if (theline[0] == '{')
+ amount += curbuf->b_ind_open_extra;
+***************
+*** 8439,8449 ****
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment) == FAIL)
+ break;
+ continue;
+ }
+--- 8405,8413 ----
+ && cin_iselse(l)
+ && whilelevel == 0)
+ {
+! if ((trypos = find_start_brace()) == NULL
+! || find_match(LOOKFOR_IF, trypos->lnum)
+! == FAIL)
+ break;
+ continue;
+ }
+***************
+*** 8453,8461 ****
+ * that block.
+ */
+ l = ml_get_curline();
+! if (find_last_paren(l, '{', '}')
+! && (trypos = find_start_brace(
+! curbuf->b_ind_maxcomment)) != NULL) /* XXX */
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+--- 8417,8424 ----
+ * that block.
+ */
+ l = ml_get_curline();
+! if (find_last_paren(l, '{', '}') /* XXX */
+! && (trypos = find_start_brace()) != NULL)
+ {
+ curwin->w_cursor = *trypos;
+ /* if not "else {" check for terminated again */
+***************
+*** 8516,8524 ****
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+ && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+! cur_curpos.lnum + 1,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = curbuf->b_ind_func_type;
+--- 8479,8485 ----
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+ && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+! cur_curpos.lnum + 1)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = curbuf->b_ind_func_type;
+***************
+*** 8540,8547 ****
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = find_start_comment(
+! curbuf->b_ind_maxcomment)) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+--- 8501,8507 ----
+ /*
+ * If we're in a comment now, skip to the start of the comment.
+ */ /* XXX */
+! if ((trypos = ind_find_start_comment()) != NULL)
+ {
+ curwin->w_cursor.lnum = trypos->lnum + 1;
+ curwin->w_cursor.col = 0;
+***************
+*** 8561,8569 ****
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col, curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment,
+! curbuf->b_ind_cpp_baseclass);
+ break;
+ }
+
+--- 8521,8527 ----
+ if (n)
+ {
+ /* XXX */
+! amount = get_baseclass_amount(col);
+ break;
+ }
+
+***************
+*** 8595,8602 ****
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+--- 8553,8559 ----
+ /* take us back to opening paren */
+ if (find_last_paren(l, '(', ')')
+ && (trypos = find_match_paren(
+! curbuf->b_ind_maxparen)) != NULL)
+ curwin->w_cursor = *trypos;
+
+ /* For a line ending in ',' that is a continuation line go
+***************
+*** 8627,8635 ****
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+--- 8584,8590 ----
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+***************
+*** 8677,8685 ****
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment))
+ {
+ amount = curbuf->b_ind_param;
+ break;
+--- 8632,8638 ----
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0))
+ {
+ amount = curbuf->b_ind_param;
+ break;
+***************
+*** 8710,8717 ****
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(curbuf->b_ind_maxparen,
+! curbuf->b_ind_maxcomment)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+--- 8663,8669 ----
+ */
+ find_last_paren(l, '(', ')');
+
+! if ((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL)
+ curwin->w_cursor = *trypos;
+ amount = get_indent(); /* XXX */
+ break;
+***************
+*** 8754,8764 ****
+ }
+
+ static int
+! find_match(lookfor, ourscope, ind_maxparen, ind_maxcomment)
+ int lookfor;
+ linenr_T ourscope;
+- int ind_maxparen;
+- int ind_maxcomment;
+ {
+ char_u *look;
+ pos_T *theirscope;
+--- 8706,8714 ----
+ }
+
+ static int
+! find_match(lookfor, ourscope)
+ int lookfor;
+ linenr_T ourscope;
+ {
+ char_u *look;
+ pos_T *theirscope;
+***************
+*** 8788,8800 ****
+ if (cin_iselse(look)
+ || cin_isif(look)
+ || cin_isdo(look) /* XXX */
+! || cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen))
+ {
+ /*
+ * if we've gone outside the braces entirely,
+ * we must be out of scope...
+ */
+! theirscope = find_start_brace(ind_maxcomment); /* XXX */
+ if (theirscope == NULL)
+ break;
+
+--- 8738,8750 ----
+ if (cin_iselse(look)
+ || cin_isif(look)
+ || cin_isdo(look) /* XXX */
+! || cin_iswhileofdo(look, curwin->w_cursor.lnum))
+ {
+ /*
+ * if we've gone outside the braces entirely,
+ * we must be out of scope...
+ */
+! theirscope = find_start_brace(); /* XXX */
+ if (theirscope == NULL)
+ break;
+
+***************
+*** 8832,8838 ****
+ * if it was a "while" then we need to go back to
+ * another "do", so increment whilelevel. XXX
+ */
+! if (cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen))
+ {
+ ++whilelevel;
+ continue;
+--- 8782,8788 ----
+ * if it was a "while" then we need to go back to
+ * another "do", so increment whilelevel. XXX
+ */
+! if (cin_iswhileofdo(look, curwin->w_cursor.lnum))
+ {
+ ++whilelevel;
+ continue;
+*** ../vim-7.4.070/src/proto/misc1.pro 2013-11-05 07:12:59.000000000 +0100
+--- src/proto/misc1.pro 2013-11-06 03:19:45.000000000 +0100
+***************
+*** 81,87 ****
+ char_u *FullName_save __ARGS((char_u *fname, int force));
+ pos_T *find_start_comment __ARGS((int ind_maxcomment));
+ void do_c_expr_indent __ARGS((void));
+! int cin_islabel __ARGS((int ind_maxcomment));
+ int cin_iscase __ARGS((char_u *s, int strict));
+ int cin_isscopedecl __ARGS((char_u *s));
+ void parse_cino __ARGS((buf_T *buf));
+--- 81,87 ----
+ char_u *FullName_save __ARGS((char_u *fname, int force));
+ pos_T *find_start_comment __ARGS((int ind_maxcomment));
+ void do_c_expr_indent __ARGS((void));
+! int cin_islabel __ARGS((void));
+ int cin_iscase __ARGS((char_u *s, int strict));
+ int cin_isscopedecl __ARGS((char_u *s));
+ void parse_cino __ARGS((buf_T *buf));
+*** ../vim-7.4.070/src/version.c 2013-11-05 17:40:47.000000000 +0100
+--- src/version.c 2013-11-06 03:43:44.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 71,
+ /**/
+
+--
+A law to reduce crime states: "It is mandatory for a motorist with criminal
+intentions to stop at the city limits and telephone the chief of police as he
+is entering the town.
+ [real standing law in Washington, United States of America]
+
+ /// 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 ///