diff --git a/7.3.426 b/7.3.426 new file mode 100644 index 0000000..76380af --- /dev/null +++ b/7.3.426 @@ -0,0 +1,279 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.426 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.426 +Problem: With '$' in 'cpoptions' the $ is not displayed in the first + column. +Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and + Hirohito Higashi) +Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c + + +*** ../vim-7.3.425/src/edit.c 2012-01-26 18:58:25.000000000 +0100 +--- src/edit.c 2012-02-04 23:23:45.000000000 +0100 +*************** +*** 1763,1771 **** + static void + undisplay_dollar() + { +! if (dollar_vcol) + { +! dollar_vcol = 0; + redrawWinline(curwin->w_cursor.lnum, FALSE); + } + } +--- 1763,1771 ---- + static void + undisplay_dollar() + { +! if (dollar_vcol >= 0) + { +! dollar_vcol = -1; + redrawWinline(curwin->w_cursor.lnum, FALSE); + } + } +*************** +*** 5441,5447 **** + compl_curr_match->cp_number); + edit_submode_extra = match_ref; + edit_submode_highl = HLF_R; +! if (dollar_vcol) + curs_columns(FALSE); + } + } +--- 5441,5447 ---- + compl_curr_match->cp_number); + edit_submode_extra = match_ref; + edit_submode_highl = HLF_R; +! if (dollar_vcol >= 0) + curs_columns(FALSE); + } + } +*************** +*** 8961,8967 **** + * We can emulate the vi behaviour by pretending there is a dollar + * displayed even when there isn't. + * --pkv Sun Jan 19 01:56:40 EST 2003 */ +! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0) + dollar_vcol = curwin->w_virtcol; + + #ifdef FEAT_FOLDING +--- 8961,8967 ---- + * We can emulate the vi behaviour by pretending there is a dollar + * displayed even when there isn't. + * --pkv Sun Jan 19 01:56:40 EST 2003 */ +! if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1) + dollar_vcol = curwin->w_virtcol; + + #ifdef FEAT_FOLDING +*** ../vim-7.3.425/src/globals.h 2011-05-10 16:41:13.000000000 +0200 +--- src/globals.h 2012-02-04 23:24:07.000000000 +0100 +*************** +*** 113,121 **** + * When '$' is included in 'cpoptions' option set: + * When a change command is given that deletes only part of a line, a dollar + * is put at the end of the changed text. dollar_vcol is set to the virtual +! * column of this '$'. + */ +! EXTERN colnr_T dollar_vcol INIT(= 0); + + #ifdef FEAT_INS_EXPAND + /* +--- 113,121 ---- + * When '$' is included in 'cpoptions' option set: + * When a change command is given that deletes only part of a line, a dollar + * is put at the end of the changed text. dollar_vcol is set to the virtual +! * column of this '$'. -1 is used to indicate no $ is being displayed. + */ +! EXTERN colnr_T dollar_vcol INIT(= -1); + + #ifdef FEAT_INS_EXPAND + /* +*** ../vim-7.3.425/src/move.c 2012-01-10 22:26:12.000000000 +0100 +--- src/move.c 2012-02-04 23:21:08.000000000 +0100 +*************** +*** 362,368 **** + #endif + ) + { +! dollar_vcol = 0; + if (curwin->w_skipcol != 0) + { + curwin->w_skipcol = 0; +--- 362,368 ---- + #endif + ) + { +! dollar_vcol = -1; + if (curwin->w_skipcol != 0) + { + curwin->w_skipcol = 0; +*************** +*** 966,972 **** + + /* remove '$' from change command when cursor moves onto it */ + if (startcol > dollar_vcol) +! dollar_vcol = 0; + + extra = curwin_col_off(); + curwin->w_wcol = curwin->w_virtcol + extra; +--- 966,972 ---- + + /* remove '$' from change command when cursor moves onto it */ + if (startcol > dollar_vcol) +! dollar_vcol = -1; + + extra = curwin_col_off(); + curwin->w_wcol = curwin->w_virtcol + extra; +*** ../vim-7.3.425/src/screen.c 2012-01-10 22:26:12.000000000 +0100 +--- src/screen.c 2012-02-04 23:22:44.000000000 +0100 +*************** +*** 1637,1647 **** + * When at start of changed lines: May scroll following lines + * up or down to minimize redrawing. + * Don't do this when the change continues until the end. +! * Don't scroll when dollar_vcol is non-zero, keep the "$". + */ + if (lnum == mod_top + && mod_bot != MAXLNUM +! && !(dollar_vcol != 0 && mod_bot == mod_top + 1)) + { + int old_rows = 0; + int new_rows = 0; +--- 1637,1647 ---- + * When at start of changed lines: May scroll following lines + * up or down to minimize redrawing. + * Don't do this when the change continues until the end. +! * Don't scroll when dollar_vcol >= 0, keep the "$". + */ + if (lnum == mod_top + && mod_bot != MAXLNUM +! && !(dollar_vcol >= 0 && mod_bot == mod_top + 1)) + { + int old_rows = 0; + int new_rows = 0; +*************** +*** 1868,1879 **** + if (row > wp->w_height) /* past end of screen */ + { + /* we may need the size of that too long line later on */ +! if (dollar_vcol == 0) + wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); + ++idx; + break; + } +! if (dollar_vcol == 0) + wp->w_lines[idx].wl_size = row - srow; + ++idx; + #ifdef FEAT_FOLDING +--- 1868,1879 ---- + if (row > wp->w_height) /* past end of screen */ + { + /* we may need the size of that too long line later on */ +! if (dollar_vcol == -1) + wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE); + ++idx; + break; + } +! if (dollar_vcol == -1) + wp->w_lines[idx].wl_size = row - srow; + ++idx; + #ifdef FEAT_FOLDING +*************** +*** 1990,1996 **** + } + #endif + } +! else if (dollar_vcol == 0) + wp->w_botline = lnum; + + /* make sure the rest of the screen is blank */ +--- 1990,1996 ---- + } + #endif + } +! else if (dollar_vcol == -1) + wp->w_botline = lnum; + + /* make sure the rest of the screen is blank */ +*************** +*** 2005,2011 **** + wp->w_old_botfill = wp->w_botfill; + #endif + +! if (dollar_vcol == 0) + { + /* + * There is a trick with w_botline. If we invalidate it on each +--- 2005,2011 ---- + wp->w_old_botfill = wp->w_botfill; + #endif + +! if (dollar_vcol == -1) + { + /* + * There is a trick with w_botline. If we invalidate it on each +*************** +*** 3564,3570 **** + } + + /* When still displaying '$' of change command, stop at cursor */ +! if (dollar_vcol != 0 && wp == curwin + && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol + #ifdef FEAT_DIFF + && filler_todo <= 0 +--- 3564,3570 ---- + } + + /* When still displaying '$' of change command, stop at cursor */ +! if (dollar_vcol >= 0 && wp == curwin + && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol + #ifdef FEAT_DIFF + && filler_todo <= 0 +*** ../vim-7.3.425/src/search.c 2012-01-26 20:58:21.000000000 +0100 +--- src/search.c 2012-02-04 23:23:10.000000000 +0100 +*************** +*** 2501,2508 **** + save_siso = p_siso; + /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", + * stop displaying the "$". */ +! if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol) +! dollar_vcol = 0; + ++curwin->w_virtcol; /* do display ')' just before "$" */ + update_screen(VALID); /* show the new char first */ + +--- 2501,2508 ---- + save_siso = p_siso; + /* Handle "$" in 'cpo': If the ')' is typed on top of the "$", + * stop displaying the "$". */ +! if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol) +! dollar_vcol = -1; + ++curwin->w_virtcol; /* do display ')' just before "$" */ + update_screen(VALID); /* show the new char first */ + +*** ../vim-7.3.425/src/version.c 2012-02-04 22:44:27.000000000 +0100 +--- src/version.c 2012-02-04 23:32:55.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 426, + /**/ + + +-- +I am also told that there is a logical proof out there somewhere +that demonstrates that there is no task which duct tape cannot handle. + -- Paul Brannan + + /// 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 ///