diff options
author | vimboss <devnull@localhost> | 2009-05-26 09:02:10 +0000 |
---|---|---|
committer | vimboss <devnull@localhost> | 2009-05-26 09:02:10 +0000 |
commit | c861d7e38fa6e70356465a955fb7b5f307ca5237 (patch) | |
tree | bee8975a107325d4443dd1d1c71fc21fc29c7af3 | |
parent | ba89fe33539992b9b1bd8d935a88dce1ab4745c2 (diff) | |
download | vim-c861d7e38fa6e70356465a955fb7b5f307ca5237.tar.gz |
-rw-r--r-- | src/edit.c | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 10 insertions, 3 deletions
@@ -6420,13 +6420,17 @@ stop_insert(end_insert_pos, esc) /* If we just did an auto-indent, remove the white space from the end * of the line, and put the cursor back. - * Do this when ESC was used or moving the cursor up/down. */ + * Do this when ESC was used or moving the cursor up/down. + * Check for the old position still being valid, just in case the text + * got changed unexpectedly. */ if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL - && curwin->w_cursor.lnum != end_insert_pos->lnum))) + && curwin->w_cursor.lnum != end_insert_pos->lnum)) + && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count) { pos_T tpos = curwin->w_cursor; curwin->w_cursor = *end_insert_pos; + check_cursor_col(); /* make sure it is not past the line */ for (;;) { if (gchar_cursor() == NUL && curwin->w_cursor.col > 0) @@ -6434,7 +6438,8 @@ stop_insert(end_insert_pos, esc) cc = gchar_cursor(); if (!vim_iswhite(cc)) break; - (void)del_char(TRUE); + if (del_char(TRUE) == FAIL) + break; /* should not happen */ } if (curwin->w_cursor.lnum != tpos.lnum) curwin->w_cursor = tpos; diff --git a/src/version.c b/src/version.c index f9860ecb..d744a023 100644 --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 189, +/**/ 188, /**/ 187, |