| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.426 |
| 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.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 |
| |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 |
| /* |
| |
| |
| |
| *** 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; |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 */ |
| |
| |
| |
| |
| *** 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 /// |