Loading ...
Sorry, an error occurred while loading the content.

Patch 7.3.862

Expand Messages
  • Bram Moolenaar
    Patch 7.3.862 Problem: Dragging the status line can be slow. Solution: Look ahead and drop the drag event if there is a next one. Files: src/eval.c,
    Message 1 of 3 , Mar 16, 2013
    • 0 Attachment
      Patch 7.3.862
      Problem: Dragging the status line can be slow.
      Solution: Look ahead and drop the drag event if there is a next one.
      Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c


      *** ../vim-7.3.861/src/eval.c 2013-02-26 21:43:28.000000000 +0100
      --- src/eval.c 2013-03-16 14:02:36.000000000 +0100
      ***************
      *** 11238,11264 ****
      rettv->vval.v_string = vim_strsave(temp);

      #ifdef FEAT_MOUSE
      ! if (n == K_LEFTMOUSE
      ! || n == K_LEFTMOUSE_NM
      ! || n == K_LEFTDRAG
      ! || n == K_LEFTRELEASE
      ! || n == K_LEFTRELEASE_NM
      ! || n == K_MIDDLEMOUSE
      ! || n == K_MIDDLEDRAG
      ! || n == K_MIDDLERELEASE
      ! || n == K_RIGHTMOUSE
      ! || n == K_RIGHTDRAG
      ! || n == K_RIGHTRELEASE
      ! || n == K_X1MOUSE
      ! || n == K_X1DRAG
      ! || n == K_X1RELEASE
      ! || n == K_X2MOUSE
      ! || n == K_X2DRAG
      ! || n == K_X2RELEASE
      ! || n == K_MOUSELEFT
      ! || n == K_MOUSERIGHT
      ! || n == K_MOUSEDOWN
      ! || n == K_MOUSEUP)
      {
      int row = mouse_row;
      int col = mouse_col;
      --- 11238,11244 ----
      rettv->vval.v_string = vim_strsave(temp);

      #ifdef FEAT_MOUSE
      ! if (is_mouse_key(n))
      {
      int row = mouse_row;
      int col = mouse_col;
      *** ../vim-7.3.861/src/misc1.c 2013-03-13 17:01:47.000000000 +0100
      --- src/misc1.c 2013-03-16 14:08:05.000000000 +0100
      ***************
      *** 3288,3293 ****
      --- 3288,3325 ----
      return r;
      }

      + #if defined(FEAT_MOUSE) || defined(PROTO)
      + /*
      + * Return TRUE if "c" is a mouse key.
      + */
      + int
      + is_mouse_key(c)
      + int c;
      + {
      + return c == K_LEFTMOUSE
      + || c == K_LEFTMOUSE_NM
      + || c == K_LEFTDRAG
      + || c == K_LEFTRELEASE
      + || c == K_LEFTRELEASE_NM
      + || c == K_MIDDLEMOUSE
      + || c == K_MIDDLEDRAG
      + || c == K_MIDDLERELEASE
      + || c == K_RIGHTMOUSE
      + || c == K_RIGHTDRAG
      + || c == K_RIGHTRELEASE
      + || c == K_MOUSEDOWN
      + || c == K_MOUSEUP
      + || c == K_MOUSELEFT
      + || c == K_MOUSERIGHT
      + || c == K_X1MOUSE
      + || c == K_X1DRAG
      + || c == K_X1RELEASE
      + || c == K_X2MOUSE
      + || c == K_X2DRAG
      + || c == K_X2RELEASE;
      + }
      + #endif
      +
      /*
      * Get a key stroke directly from the user.
      * Ignores mouse clicks and scrollbar events, except a click for the left
      ***************
      *** 3373,3403 ****
      n = TO_SPECIAL(buf[1], buf[2]);
      if (buf[1] == KS_MODIFIER
      || n == K_IGNORE
      ! #ifdef FEAT_MOUSE
      ! || n == K_LEFTMOUSE_NM
      ! || n == K_LEFTDRAG
      ! || n == K_LEFTRELEASE
      ! || n == K_LEFTRELEASE_NM
      ! || n == K_MIDDLEMOUSE
      ! || n == K_MIDDLEDRAG
      ! || n == K_MIDDLERELEASE
      ! || n == K_RIGHTMOUSE
      ! || n == K_RIGHTDRAG
      ! || n == K_RIGHTRELEASE
      ! || n == K_MOUSEDOWN
      ! || n == K_MOUSEUP
      ! || n == K_MOUSELEFT
      ! || n == K_MOUSERIGHT
      ! || n == K_X1MOUSE
      ! || n == K_X1DRAG
      ! || n == K_X1RELEASE
      ! || n == K_X2MOUSE
      ! || n == K_X2DRAG
      ! || n == K_X2RELEASE
      ! # ifdef FEAT_GUI
      || n == K_VER_SCROLLBAR
      || n == K_HOR_SCROLLBAR
      - # endif
      #endif
      )
      {
      --- 3405,3414 ----
      n = TO_SPECIAL(buf[1], buf[2]);
      if (buf[1] == KS_MODIFIER
      || n == K_IGNORE
      ! || (is_mouse_key(n) && n != K_LEFTMOUSE)
      ! #ifdef FEAT_GUI
      || n == K_VER_SCROLLBAR
      || n == K_HOR_SCROLLBAR
      #endif
      )
      {
      *** ../vim-7.3.861/src/proto/misc1.pro 2012-11-20 16:56:49.000000000 +0100
      --- src/proto/misc1.pro 2013-03-16 14:02:33.000000000 +0100
      ***************
      *** 42,47 ****
      --- 42,48 ----
      void check_status __ARGS((buf_T *buf));
      void change_warning __ARGS((int col));
      int ask_yesno __ARGS((char_u *str, int direct));
      + int is_mouse_key __ARGS((int c));
      int get_keystroke __ARGS((void));
      int get_number __ARGS((int colon, int *mouse_used));
      int prompt_for_number __ARGS((int *mouse_used));
      *** ../vim-7.3.861/src/normal.c 2013-03-13 19:02:37.000000000 +0100
      --- src/normal.c 2013-03-16 14:09:34.000000000 +0100
      ***************
      *** 2443,2449 ****
      return FALSE;
      }

      ! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag);

      #ifdef FEAT_MOUSESHAPE
      /* May have stopped dragging the status or separator line. The pointer is
      --- 2443,2473 ----
      return FALSE;
      }

      ! for (;;)
      ! {
      ! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag);
      ! if (is_drag)
      ! {
      ! /* If the next character is the same mouse event then use that
      ! * one. Speeds up dragging the status line. */
      ! if (vpeekc() != NUL)
      ! {
      ! int nc;
      ! int save_mouse_row = mouse_row;
      ! int save_mouse_col = mouse_col;
      !
      ! /* Need to get the character, peeking doesn't get the actual
      ! * one. */
      ! nc = safe_vgetc();
      ! if (c == nc)
      ! continue;
      ! vungetc(nc);
      ! mouse_row = save_mouse_row;
      ! mouse_col = save_mouse_col;
      ! }
      ! }
      ! break;
      ! }

      #ifdef FEAT_MOUSESHAPE
      /* May have stopped dragging the status or separator line. The pointer is
      *** ../vim-7.3.861/src/version.c 2013-03-13 20:42:28.000000000 +0100
      --- src/version.c 2013-03-16 14:18:36.000000000 +0100
      ***************
      *** 730,731 ****
      --- 730,733 ----
      { /* Add new patch number below this line */
      + /**/
      + 862,
      /**/

      --
      hundred-and-one symptoms of being an internet addict:
      53. To find out what time it is, you send yourself an e-mail and check the
      "Date:" field.

      /// Bram Moolenaar -- Bram@... -- 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

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Ike Devolder
      ... src/normal.c ... 16:56:49.000000000 ... building vim tiny fails after this: objects/misc1.o: In function `get_keystroke : misc1.c:(.text+0x2331): undefined
      Message 2 of 3 , Mar 16, 2013
      • 0 Attachment
        Op zaterdag 16 maart 2013 14:21:23 schreef Bram Moolenaar:
        > Patch 7.3.862
        > Problem: Dragging the status line can be slow.
        > Solution: Look ahead and drop the drag event if there is a next one.
        > Files: src/eval.c, src/misc1.c, src/proto/misc1.pro,
        src/normal.c
        >
        >
        > *** ../vim-7.3.861/src/eval.c 2013-02-26 21:43:28.000000000 +0100
        > --- src/eval.c 2013-03-16 14:02:36.000000000 +0100
        > ***************
        > *** 11238,11264 ****
        > rettv->vval.v_string = vim_strsave(temp);
        >
        > #ifdef FEAT_MOUSE
        > ! if (n == K_LEFTMOUSE
        > ! || n == K_LEFTMOUSE_NM
        > ! || n == K_LEFTDRAG
        > ! || n == K_LEFTRELEASE
        > ! || n == K_LEFTRELEASE_NM
        > ! || n == K_MIDDLEMOUSE
        > ! || n == K_MIDDLEDRAG
        > ! || n == K_MIDDLERELEASE
        > ! || n == K_RIGHTMOUSE
        > ! || n == K_RIGHTDRAG
        > ! || n == K_RIGHTRELEASE
        > ! || n == K_X1MOUSE
        > ! || n == K_X1DRAG
        > ! || n == K_X1RELEASE
        > ! || n == K_X2MOUSE
        > ! || n == K_X2DRAG
        > ! || n == K_X2RELEASE
        > ! || n == K_MOUSELEFT
        > ! || n == K_MOUSERIGHT
        > ! || n == K_MOUSEDOWN
        > ! || n == K_MOUSEUP)
        > {
        > int row = mouse_row;
        > int col = mouse_col;
        > --- 11238,11244 ----
        > rettv->vval.v_string = vim_strsave(temp);
        >
        > #ifdef FEAT_MOUSE
        > ! if (is_mouse_key(n))
        > {
        > int row = mouse_row;
        > int col = mouse_col;
        > *** ../vim-7.3.861/src/misc1.c 2013-03-13 17:01:47.000000000 +0100
        > --- src/misc1.c 2013-03-16 14:08:05.000000000 +0100
        > ***************
        > *** 3288,3293 ****
        > --- 3288,3325 ----
        > return r;
        > }
        >
        > + #if defined(FEAT_MOUSE) || defined(PROTO)
        > + /*
        > + * Return TRUE if "c" is a mouse key.
        > + */
        > + int
        > + is_mouse_key(c)
        > + int c;
        > + {
        > + return c == K_LEFTMOUSE
        > + || c == K_LEFTMOUSE_NM
        > + || c == K_LEFTDRAG
        > + || c == K_LEFTRELEASE
        > + || c == K_LEFTRELEASE_NM
        > + || c == K_MIDDLEMOUSE
        > + || c == K_MIDDLEDRAG
        > + || c == K_MIDDLERELEASE
        > + || c == K_RIGHTMOUSE
        > + || c == K_RIGHTDRAG
        > + || c == K_RIGHTRELEASE
        > + || c == K_MOUSEDOWN
        > + || c == K_MOUSEUP
        > + || c == K_MOUSELEFT
        > + || c == K_MOUSERIGHT
        > + || c == K_X1MOUSE
        > + || c == K_X1DRAG
        > + || c == K_X1RELEASE
        > + || c == K_X2MOUSE
        > + || c == K_X2DRAG
        > + || c == K_X2RELEASE;
        > + }
        > + #endif
        > +
        > /*
        > * Get a key stroke directly from the user.
        > * Ignores mouse clicks and scrollbar events, except a click for the
        > left ***************
        > *** 3373,3403 ****
        > n = TO_SPECIAL(buf[1], buf[2]);
        > if (buf[1] == KS_MODIFIER
        >
        > || n == K_IGNORE
        >
        > ! #ifdef FEAT_MOUSE
        > ! || n == K_LEFTMOUSE_NM
        > ! || n == K_LEFTDRAG
        > ! || n == K_LEFTRELEASE
        > ! || n == K_LEFTRELEASE_NM
        > ! || n == K_MIDDLEMOUSE
        > ! || n == K_MIDDLEDRAG
        > ! || n == K_MIDDLERELEASE
        > ! || n == K_RIGHTMOUSE
        > ! || n == K_RIGHTDRAG
        > ! || n == K_RIGHTRELEASE
        > ! || n == K_MOUSEDOWN
        > ! || n == K_MOUSEUP
        > ! || n == K_MOUSELEFT
        > ! || n == K_MOUSERIGHT
        > ! || n == K_X1MOUSE
        > ! || n == K_X1DRAG
        > ! || n == K_X1RELEASE
        > ! || n == K_X2MOUSE
        > ! || n == K_X2DRAG
        > ! || n == K_X2RELEASE
        > ! # ifdef FEAT_GUI
        >
        > || n == K_VER_SCROLLBAR
        > || n == K_HOR_SCROLLBAR
        >
        > - # endif
        > #endif
        > )
        > {
        > --- 3405,3414 ----
        > n = TO_SPECIAL(buf[1], buf[2]);
        > if (buf[1] == KS_MODIFIER
        >
        > || n == K_IGNORE
        >
        > ! || (is_mouse_key(n) && n != K_LEFTMOUSE)
        > ! #ifdef FEAT_GUI
        >
        > || n == K_VER_SCROLLBAR
        > || n == K_HOR_SCROLLBAR
        >
        > #endif
        > )
        > {
        > *** ../vim-7.3.861/src/proto/misc1.pro 2012-11-20
        16:56:49.000000000
        > +0100 --- src/proto/misc1.pro 2013-03-16 14:02:33.000000000 +0100
        > ***************
        > *** 42,47 ****
        > --- 42,48 ----
        > void check_status __ARGS((buf_T *buf));
        > void change_warning __ARGS((int col));
        > int ask_yesno __ARGS((char_u *str, int direct));
        > + int is_mouse_key __ARGS((int c));
        > int get_keystroke __ARGS((void));
        > int get_number __ARGS((int colon, int *mouse_used));
        > int prompt_for_number __ARGS((int *mouse_used));
        > *** ../vim-7.3.861/src/normal.c 2013-03-13 19:02:37.000000000 +0100
        > --- src/normal.c 2013-03-16 14:09:34.000000000 +0100
        > ***************
        > *** 2443,2449 ****
        > return FALSE;
        > }
        >
        > ! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click,
        > &is_drag);
        >
        > #ifdef FEAT_MOUSESHAPE
        > /* May have stopped dragging the status or separator line. The
        > pointer is --- 2443,2473 ----
        > return FALSE;
        > }
        >
        > ! for (;;)
        > ! {
        > ! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click,
        > &is_drag); ! if (is_drag)
        > ! {
        > ! /* If the next character is the same mouse event then use that
        > ! * one. Speeds up dragging the status line. */
        > ! if (vpeekc() != NUL)
        > ! {
        > ! int nc;
        > ! int save_mouse_row = mouse_row;
        > ! int save_mouse_col = mouse_col;
        > !
        > ! /* Need to get the character, peeking doesn't get the actual
        > ! * one. */
        > ! nc = safe_vgetc();
        > ! if (c == nc)
        > ! continue;
        > ! vungetc(nc);
        > ! mouse_row = save_mouse_row;
        > ! mouse_col = save_mouse_col;
        > ! }
        > ! }
        > ! break;
        > ! }
        >
        > #ifdef FEAT_MOUSESHAPE
        > /* May have stopped dragging the status or separator line. The
        > pointer is *** ../vim-7.3.861/src/version.c 2013-03-13
        > 20:42:28.000000000 +0100 --- src/version.c 2013-03-16
        > 14:18:36.000000000 +0100
        > ***************
        > *** 730,731 ****
        > --- 730,733 ----
        > { /* Add new patch number below this line */
        > + /**/
        > + 862,
        > /**/
        >
        > --
        > hundred-and-one symptoms of being an internet addict:
        > 53. To find out what time it is, you send yourself an e-mail and check
        > the "Date:" field.
        >
        > /// Bram Moolenaar -- Bram@... -- 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
        >
        > ---
        > You received this message because you are subscribed to the Google
        > Groups "vim_dev" group. To unsubscribe from this group and stop
        > receiving emails from it, send an email to
        > vim_dev+unsubscribe@.... For more options, visit
        > https://groups.google.com/groups/opt_out.

        building vim tiny fails after this:
        objects/misc1.o: In function `get_keystroke':
        misc1.c:(.text+0x2331): undefined reference to `is_mouse_key'
        misc1.c:(.text+0x23d1): undefined reference to `is_mouse_key'
        collect2: error: ld returned 1 exit status
        link.sh: Linking failed

        patch attached to fix this.
        --
        Ike

        --
        --
        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

        ---
        You received this message because you are subscribed to the Google Groups "vim_dev" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Bram Moolenaar
        ... Thanks! -- Over the years, I ve developed my sense of deja vu so acutely that now I can remember things that *have* happened before ... /// Bram Moolenaar
        Message 3 of 3 , Mar 16, 2013
        • 0 Attachment
          Ike Devolder wrote:

          > Op zaterdag 16 maart 2013 14:21:23 schreef Bram Moolenaar:
          > > Patch 7.3.862
          > > Problem: Dragging the status line can be slow.
          > > Solution: Look ahead and drop the drag event if there is a next one.
          > > Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c
          > >
          > [...]
          >
          >
          > building vim tiny fails after this:
          > objects/misc1.o: In function `get_keystroke':
          > misc1.c:(.text+0x2331): undefined reference to `is_mouse_key'
          > misc1.c:(.text+0x23d1): undefined reference to `is_mouse_key'
          > collect2: error: ld returned 1 exit status
          > link.sh: Linking failed
          >
          > patch attached to fix this.

          Thanks!

          --
          Over the years, I've developed my sense of deja vu so acutely that now
          I can remember things that *have* happened before ...

          /// Bram Moolenaar -- Bram@... -- 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

          ---
          You received this message because you are subscribed to the Google Groups "vim_dev" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        Your message has been successfully submitted and would be delivered to recipients shortly.