To: vim-dev@vim.org Subject: Patch 7.1.264 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.1.263/src/ops.c Wed Feb 6 14:43:50 2008 --- src/ops.c Sun Feb 24 14:56:38 2008 *************** *** 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 */ *** ../vim-7.1.263/src/misc1.c Wed Feb 13 10:57:11 2008 --- src/misc1.c Sun Feb 24 15:04:27 2008 *************** *** 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; } *** ../vim-7.1.263/src/version.c Mon Feb 25 20:45:46 2008 --- src/version.c Mon Feb 25 21:51:20 2008 *************** *** 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 ///