| To: vim-dev@vim.org |
| Subject: Patch 7.1.264 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=ISO-8859-1 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.1.264 |
| Problem: Crash when indenting lines. (Dominique Pelle) |
| Solution: Set the cursor column when changing the cursor line. |
| Files: src/ops.c, src/misc1.c |
| |
| |
| |
| |
| |
| *** 692,697 **** |
| --- 692,698 ---- |
| } |
| } |
| ++curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; /* make sure it's valid */ |
| } |
| |
| /* put cursor on first non-blank of indented line */ |
| |
| |
| |
| *** 6894,6899 **** |
| --- 6894,6900 ---- |
| if (trypos != NULL) |
| { |
| curwin->w_cursor.lnum = trypos->lnum + 1; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| |
| |
| *** 6954,6959 **** |
| --- 6955,6961 ---- |
| if (trypos != NULL) |
| { |
| curwin->w_cursor.lnum = trypos->lnum + 1; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| } |
| |
| *** 6991,6996 **** |
| --- 6993,6999 ---- |
| if ((trypos = find_start_comment(ind_maxcomment)) != NULL) |
| { |
| curwin->w_cursor.lnum = trypos->lnum + 1; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| |
| |
| *** 7114,7120 **** |
| --- 7117,7126 ---- |
| { |
| if (find_last_paren(l, '{', '}') && (trypos = |
| find_start_brace(ind_maxcomment)) != NULL) |
| + { |
| curwin->w_cursor.lnum = trypos->lnum + 1; |
| + curwin->w_cursor.col = 0; |
| + } |
| continue; |
| } |
| |
| |
| *** 7230,7240 **** |
| * case xx: if ( asdf && |
| * asdf) |
| */ |
| ! curwin->w_cursor.lnum = trypos->lnum; |
| l = ml_get_curline(); |
| if (cin_iscase(l) || cin_isscopedecl(l)) |
| { |
| ++curwin->w_cursor.lnum; |
| continue; |
| } |
| } |
| --- 7236,7247 ---- |
| * case xx: if ( asdf && |
| * asdf) |
| */ |
| ! curwin->w_cursor = *trypos; |
| l = ml_get_curline(); |
| if (cin_iscase(l) || cin_isscopedecl(l)) |
| { |
| ++curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| } |
| |
| *** 7254,7259 **** |
| --- 7261,7267 ---- |
| if (*l == NUL || l[STRLEN(l) - 1] != '\\') |
| break; |
| --curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; |
| } |
| } |
| |
| |
| *** 7587,7597 **** |
| * case xx: if ( asdf && |
| * asdf) |
| */ |
| ! curwin->w_cursor.lnum = trypos->lnum; |
| l = ml_get_curline(); |
| if (cin_iscase(l) || cin_isscopedecl(l)) |
| { |
| ++curwin->w_cursor.lnum; |
| continue; |
| } |
| } |
| --- 7595,7606 ---- |
| * case xx: if ( asdf && |
| * asdf) |
| */ |
| ! curwin->w_cursor = *trypos; |
| l = ml_get_curline(); |
| if (cin_iscase(l) || cin_isscopedecl(l)) |
| { |
| ++curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| } |
| |
| *** 7652,7664 **** |
| && (trypos = find_start_brace(ind_maxcomment)) |
| != NULL) /* XXX */ |
| { |
| ! curwin->w_cursor.lnum = trypos->lnum; |
| /* if not "else {" check for terminated again */ |
| /* but skip block for "} else {" */ |
| l = cin_skipcomment(ml_get_curline()); |
| if (*l == '}' || !cin_iselse(l)) |
| goto term_again; |
| ++curwin->w_cursor.lnum; |
| } |
| } |
| } |
| --- 7661,7674 ---- |
| && (trypos = find_start_brace(ind_maxcomment)) |
| != NULL) /* XXX */ |
| { |
| ! curwin->w_cursor = *trypos; |
| /* if not "else {" check for terminated again */ |
| /* but skip block for "} else {" */ |
| l = cin_skipcomment(ml_get_curline()); |
| if (*l == '}' || !cin_iselse(l)) |
| goto term_again; |
| ++curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; |
| } |
| } |
| } |
| |
| *** 7727,7732 **** |
| --- 7737,7743 ---- |
| if ((trypos = find_start_comment(ind_maxcomment)) != NULL) |
| { |
| curwin->w_cursor.lnum = trypos->lnum + 1; |
| + curwin->w_cursor.col = 0; |
| continue; |
| } |
| |
| |
| *** 7777,7783 **** |
| if (find_last_paren(l, '(', ')') |
| && (trypos = find_match_paren(ind_maxparen, |
| ind_maxcomment)) != NULL) |
| ! curwin->w_cursor.lnum = trypos->lnum; |
| |
| /* For a line ending in ',' that is a continuation line go |
| * back to the first line with a backslash: |
| --- 7788,7794 ---- |
| if (find_last_paren(l, '(', ')') |
| && (trypos = find_match_paren(ind_maxparen, |
| ind_maxcomment)) != NULL) |
| ! curwin->w_cursor = *trypos; |
| |
| /* For a line ending in ',' that is a continuation line go |
| * back to the first line with a backslash: |
| |
| *** 7791,7796 **** |
| --- 7802,7808 ---- |
| if (*l == NUL || l[STRLEN(l) - 1] != '\\') |
| break; |
| --curwin->w_cursor.lnum; |
| + curwin->w_cursor.col = 0; |
| } |
| |
| amount = get_indent(); /* XXX */ |
| |
| *** 7864,7870 **** |
| |
| if ((trypos = find_match_paren(ind_maxparen, |
| ind_maxcomment)) != NULL) |
| ! curwin->w_cursor.lnum = trypos->lnum; |
| amount = get_indent(); /* XXX */ |
| break; |
| } |
| --- 7876,7882 ---- |
| |
| if ((trypos = find_match_paren(ind_maxparen, |
| ind_maxcomment)) != NULL) |
| ! curwin->w_cursor = *trypos; |
| amount = get_indent(); /* XXX */ |
| break; |
| } |
| |
| |
| |
| *** 668,669 **** |
| --- 668,671 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 264, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 49. You never have to deal with busy signals when calling your ISP...because |
| you never log off. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ download, build and distribute -- http://www.A-A-P.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |