To: [email protected]
Subject: Patch 5.6a.001
Fcc: outbox
From: Bram Moolenaar <[email protected]>
------------

Patch 5.6a.001
Problem:    Using <C-End> with a count doesn't work like it does with "G".
           (Benji Fisher)
Solution:   Accept a count for <C-End> and <C-Home>.
Files:      src/normal.c


*** ../vim-5.6a/src/normal.c    Sun Dec 19 19:45:34 1999
--- src/normal.c        Mon Dec 20 09:45:46 1999
***************
*** 87,93 ****
 static void   nv_wordcmd __ARGS((CMDARG *cap, int type));
 static void   adjust_for_sel __ARGS((CMDARG *cap));
 static void   unadjust_for_sel __ARGS((void));
! static void   nv_goto __ARGS((OPARG *oap, long lnum));
 static void   nv_select __ARGS((CMDARG *cap));
 static void   nv_normal __ARGS((CMDARG *cap));
 static void   nv_esc __ARGS((CMDARG *oap, linenr_t opnum));
--- 87,93 ----
 static void   nv_wordcmd __ARGS((CMDARG *cap, int type));
 static void   adjust_for_sel __ARGS((CMDARG *cap));
 static void   unadjust_for_sel __ARGS((void));
! static void   nv_goto __ARGS((CMDARG *cap, linenr_t lnum));
 static void   nv_select __ARGS((CMDARG *cap));
 static void   nv_normal __ARGS((CMDARG *cap));
 static void   nv_esc __ARGS((CMDARG *oap, linenr_t opnum));
***************
*** 712,719 ****
  * 3. Cursor motions
  */
     case 'G':
!       nv_goto(oap, ca.count0 == 0 ? (long)curbuf->b_ml.ml_line_count
!                                   : ca.count0);
       break;

     case 'H':
--- 712,718 ----
  * 3. Cursor motions
  */
     case 'G':
!       nv_goto(&ca, curbuf->b_ml.ml_line_count);
       break;

     case 'H':
***************
*** 806,812 ****
     case K_S_HOME:
       if ((mod_mask & MOD_MASK_CTRL))     /* CTRL-HOME = goto line 1 */
       {
!           nv_goto(oap, 1L);
           break;
       }
       ca.count0 = 1;
--- 805,811 ----
     case K_S_HOME:
       if ((mod_mask & MOD_MASK_CTRL))     /* CTRL-HOME = goto line 1 */
       {
!           nv_goto(&ca, (linenr_t)1);
           break;
       }
       ca.count0 = 1;
***************
*** 852,858 ****
     case K_XEND:
     case K_S_END:
       if ((mod_mask & MOD_MASK_CTRL))     /* CTRL-END = goto last line */
!           nv_goto(oap, curbuf->b_ml.ml_line_count);
       /* FALLTHROUGH */

     case '$':
--- 851,860 ----
     case K_XEND:
     case K_S_END:
       if ((mod_mask & MOD_MASK_CTRL))     /* CTRL-END = goto last line */
!       {
!           nv_goto(&ca, curbuf->b_ml.ml_line_count);
!           ca.count1 = 1;      /* to end of current line */
!       }
       /* FALLTHROUGH */

     case '$':
***************
*** 5308,5314 ****
      * that line number like for "G". -- webb
      */
     case 'g':
!       nv_goto(oap, cap->count0);      /* nv_goto() will change 0 into 1 */
       break;

     /*
--- 5310,5316 ----
      * that line number like for "G". -- webb
      */
     case 'g':
!       nv_goto(cap, (linenr_t)1);
       break;

     /*
***************
*** 5638,5650 ****
     }
 }

     static void
! nv_goto(oap, lnum)
!     OPARG   *oap;
!     long    lnum;
 {
!     oap->motion_type = MLINE;
     setpcmark();
     if (lnum < 1L)
       lnum = 1L;
     else if (lnum > curbuf->b_ml.ml_line_count)
--- 5640,5659 ----
     }
 }

+ /*
+  * "G", "gg", CTRL-END, CTRL-HOME.
+  */
     static void
! nv_goto(cap, lnum)
!     CMDARG    *cap;
!     linenr_t  lnum;
 {
!     cap->oap->motion_type = MLINE;
     setpcmark();
+
+     /* When a count is given, use it instead of the default lnum */
+     if (cap->count0 != 0)
+       lnum = cap->count0;
     if (lnum < 1L)
       lnum = 1L;
     else if (lnum > curbuf->b_ml.ml_line_count)
*** ../vim-5.6a/src/version.c   Sun Dec 19 19:45:19 1999
--- src/version.c       Mon Dec 20 09:50:04 1999
***************
*** 420,421 ****
--- 420,423 ----
 {   /* Add new patch number below this line */
+ /**/
+     1,
 /**/

--
ARTHUR:  No, hang on!  Just answer the five questions ...
GALAHAD: Three questions ...
ARTHUR:  Three questions ...  And we shall watch ... and pray.
                "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

--/-/---- Bram Moolenaar ---- [email protected] ---- [email protected] ---\-\--
 \ \    www.vim.org/iccf      www.moolenaar.net       www.vim.org    / /