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

Patch 7.1.182

Expand Messages
  • Bram Moolenaar
    Patch 7.1.182 Problem: When using tab pages and an argument list the session file may contain wrong next commands. (Alexander Bluem) Solution: Use
    Message 1 of 1 , Jan 2, 2008
    • 0 Attachment
      Patch 7.1.182
      Problem: When using tab pages and an argument list the session file may
      contain wrong "next" commands. (Alexander Bluem)
      Solution: Use "argu" commands and only when needed.
      Files: src/ex_docmd.c


      *** ../vim-7.1.181/src/ex_docmd.c Sun Dec 9 19:37:37 2007
      --- src/ex_docmd.c Mon Dec 31 18:24:16 2007
      ***************
      *** 372,378 ****
      static char_u *arg_all __ARGS((void));
      #ifdef FEAT_SESSION
      static int makeopens __ARGS((FILE *fd, char_u *dirnow));
      ! static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp));
      static void ex_loadview __ARGS((exarg_T *eap));
      static char_u *get_view_file __ARGS((int c));
      static int did_lcd; /* whether ":lcd" was produced for a session */
      --- 372,378 ----
      static char_u *arg_all __ARGS((void));
      #ifdef FEAT_SESSION
      static int makeopens __ARGS((FILE *fd, char_u *dirnow));
      ! static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp, int current_arg_idx));
      static void ex_loadview __ARGS((exarg_T *eap));
      static char_u *get_view_file __ARGS((int c));
      static int did_lcd; /* whether ":lcd" was produced for a session */
      ***************
      *** 8762,8768 ****
      }
      else
      {
      ! failed |= (put_view(fd, curwin, !using_vdir, flagp) == FAIL);
      }
      if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save")
      == FAIL)
      --- 8762,8769 ----
      }
      else
      {
      ! failed |= (put_view(fd, curwin, !using_vdir, flagp,
      ! -1) == FAIL);
      }
      if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save")
      == FAIL)
      ***************
      *** 9761,9766 ****
      --- 9762,9769 ----
      int tabnr;
      win_T *tab_firstwin;
      frame_T *tab_topframe;
      + int cur_arg_idx = 0;
      + int next_arg_idx;

      if (ssop_flags & SSOP_BUFFERS)
      only_save_windows = FALSE; /* Save ALL buffers */
      ***************
      *** 9976,9987 ****
      {
      if (!ses_do_win(wp))
      continue;
      ! if (put_view(fd, wp, wp != edited_win, &ssop_flags) == FAIL)
      return FAIL;
      if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
      return FAIL;
      }

      /*
      * Restore cursor to the current window if it's not the first one.
      */
      --- 9979,9997 ----
      {
      if (!ses_do_win(wp))
      continue;
      ! if (put_view(fd, wp, wp != edited_win, &ssop_flags,
      ! cur_arg_idx) == FAIL)
      return FAIL;
      if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
      return FAIL;
      + next_arg_idx = wp->w_arg_idx;
      }

      + /* The argument index in the first tab page is zero, need to set it in
      + * each window. For further tab pages it's the window where we do
      + * "tabedit". */
      + cur_arg_idx = next_arg_idx;
      +
      /*
      * Restore cursor to the current window if it's not the first one.
      */
      ***************
      *** 10190,10200 ****
      * Caller must make sure 'scrolloff' is zero.
      */
      static int
      ! put_view(fd, wp, add_edit, flagp)
      FILE *fd;
      win_T *wp;
      int add_edit; /* add ":edit" command to view */
      unsigned *flagp; /* vop_flags or ssop_flags */
      {
      win_T *save_curwin;
      int f;
      --- 10200,10212 ----
      * Caller must make sure 'scrolloff' is zero.
      */
      static int
      ! put_view(fd, wp, add_edit, flagp, current_arg_idx)
      FILE *fd;
      win_T *wp;
      int add_edit; /* add ":edit" command to view */
      unsigned *flagp; /* vop_flags or ssop_flags */
      + int current_arg_idx; /* current argument index of the window, use
      + * -1 if unknown */
      {
      win_T *save_curwin;
      int f;
      ***************
      *** 10224,10233 ****

      /* Only when part of a session: restore the argument index. Some
      * arguments may have been deleted, check if the index is valid. */
      ! if (wp->w_arg_idx != 0 && wp->w_arg_idx <= WARGCOUNT(wp)
      && flagp == &ssop_flags)
      {
      ! if (fprintf(fd, "%ldnext", (long)wp->w_arg_idx) < 0
      || put_eol(fd) == FAIL)
      return FAIL;
      did_next = TRUE;
      --- 10236,10245 ----

      /* Only when part of a session: restore the argument index. Some
      * arguments may have been deleted, check if the index is valid. */
      ! if (wp->w_arg_idx != current_arg_idx && wp->w_arg_idx <= WARGCOUNT(wp)
      && flagp == &ssop_flags)
      {
      ! if (fprintf(fd, "%ldargu", (long)wp->w_arg_idx + 1) < 0
      || put_eol(fd) == FAIL)
      return FAIL;
      did_next = TRUE;
      *** ../vim-7.1.181/src/version.c Wed Jan 2 13:58:17 2008
      --- src/version.c Wed Jan 2 15:10:01 2008
      ***************
      *** 668,669 ****
      --- 668,671 ----
      { /* Add new patch number below this line */
      + /**/
      + 182,
      /**/

      --
      You were lucky. We lived for three months in a brown paper bag in a
      septic tank. We used to have to get up at six o'clock in the morning,
      clean the bag, eat a crust of stale bread, go to work down mill for
      fourteen hours a day week in-week out. When we got home, our Dad
      would thrash us to sleep with his belt!

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ download, build and distribute -- http://www.A-A-P.org ///
      \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    Your message has been successfully submitted and would be delivered to recipients shortly.