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 -- [email protected] -- 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    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui