Patch 8.2.3795
Problem:    Too many #ifdefs.
Solution:   Graduate the jumplist feature.
Files:      runtime/doc/various.txt, runtime/doc/motion.txt, src/feature.h,
            src/buffer.c, src/change.c, src/evalfunc.c, src/ex_docmd.c,
            src/mark.c, src/normal.c, src/undo.c, src/version.c,
            src/viminfo.c, src/window.c, src/structs.h,
            src/testdir/test_changelist.vim, src/testdir/test_jumplist.vim,
            src/testdir/test_normal.vim


*** ../vim-8.2.3794/runtime/doc/various.txt     2021-11-29 20:39:06.682101619 
+0000
--- runtime/doc/various.txt     2021-12-13 13:00:12.934311166 +0000
***************
*** 391,397 ****
  T  *+insert_expand*   |insert_expand| Insert mode completion
  m  *+ipv6*            Support for IPv6 networking |channel|
  m  *+job*             starting and stopping jobs |job|
! S  *+jumplist*                |jumplist|
  B  *+keymap*          |'keymap'|
  N  *+lambda*          |lambda| and |closure|
  B  *+langmap*         |'langmap'|
--- 391,397 ----
  T  *+insert_expand*   |insert_expand| Insert mode completion
  m  *+ipv6*            Support for IPv6 networking |channel|
  m  *+job*             starting and stopping jobs |job|
! T  *+jumplist*                |jumplist|; Always enabled since 8.2.3795
  B  *+keymap*          |'keymap'|
  N  *+lambda*          |lambda| and |closure|
  B  *+langmap*         |'langmap'|
*** ../vim-8.2.3794/runtime/doc/motion.txt      2021-01-31 16:02:06.254490174 
+0000
--- runtime/doc/motion.txt      2021-12-13 13:01:14.298084637 +0000
***************
*** 1030,1064 ****
                                                        *CTRL-O*
  CTRL-O                        Go to [count] Older cursor position in jump list
                        (not a motion command).
-                       {not available without the |+jumplist| feature}
  
  <Tab>         or                                      *CTRL-I* *<Tab>*
  CTRL-I                        Go to [count] newer cursor position in jump list
                        (not a motion command).
!                       {not available without the |+jumplist| feature}
  
                                                        *:ju* *:jumps*
  :ju[mps]              Print the jump list (not a motion command).
-                       {not available without the |+jumplist| feature}
  
                                                        *:cle* *:clearjumps*
  :cle[arjumps]         Clear the jump list of the current window.
-                       {not available without the |+jumplist| feature}
  
                                                        *jumplist*
  Jumps are remembered in a jump list.  With the CTRL-O and CTRL-I command you
  can go to cursor positions before older jumps, and back again.  Thus you can
  move up and down the list.  There is a separate jump list for each window.
  The maximum number of entries is fixed at 100.
- {not available without the |+jumplist| feature}
  
  For example, after three jump commands you have this jump list:
  
!   jump line  col file/text ~
!     3   1    0 some text ~
!     2  70    0 another line ~
!     1  1154   23 end. ~
!  > ~
  
  The "file/text" column shows the file name, or the text at the jump if it is
  in the current file (an indent is removed and a long line is truncated to fit
--- 1038,1073 ----
                                                        *CTRL-O*
  CTRL-O                        Go to [count] Older cursor position in jump list
                        (not a motion command).
  
  <Tab>         or                                      *CTRL-I* *<Tab>*
  CTRL-I                        Go to [count] newer cursor position in jump list
                        (not a motion command).
! 
!                       NOTE: In the GUI and in a terminal supporting
!                       |modifyOtherKeys|, CTRL-I can be mapped separately
!                       from <Tab>, on the condition that CTRL-I is
!                       mapped before <Tab>, otherwise the mapping applies to
!                       both.
  
                                                        *:ju* *:jumps*
  :ju[mps]              Print the jump list (not a motion command).
  
                                                        *:cle* *:clearjumps*
  :cle[arjumps]         Clear the jump list of the current window.
  
                                                        *jumplist*
  Jumps are remembered in a jump list.  With the CTRL-O and CTRL-I command you
  can go to cursor positions before older jumps, and back again.  Thus you can
  move up and down the list.  There is a separate jump list for each window.
  The maximum number of entries is fixed at 100.
  
  For example, after three jump commands you have this jump list:
  
!     jump line  col file/text ~
!       3         1    0 some text ~
!       2        70    0 another line ~
!       1  1154   23 end. ~
!    > ~
  
  The "file/text" column shows the file name, or the text at the jump if it is
  in the current file (an indent is removed and a long line is truncated to fit
***************
*** 1127,1139 ****
                        positions go to the oldest change.
                        If there is no older change an error message is given.
                        (not a motion command)
-                       {not available without the |+jumplist| feature}
  
                                                        *g,* *E663*
  g,                    Go to [count] newer cursor position in change list.
                        Just like |g;| but in the opposite direction.
                        (not a motion command)
-                       {not available without the |+jumplist| feature}
  
  When using a count you jump as far back or forward as possible.  Thus you can
  use "999g;" to go to the first change for which the position is still
--- 1136,1146 ----
*** ../vim-8.2.3794/src/feature.h       2021-11-29 20:39:06.666101630 +0000
--- src/feature.h       2021-12-13 12:56:36.763200945 +0000
***************
*** 110,115 ****
--- 110,116 ----
   * +modify_fname      modifiers for file name.  E.g., "%:p:h".
   * +comments          'comments' option.
   * +title             'title' and 'icon' options
+  * +jumplist          Jumplist, CTRL-O and CTRL-I commands.
   *
   * Obsolete:
   * +tag_old_static    Old style static tags: "file:tag  file  ..".
***************
*** 127,139 ****
  # define MAX_MSG_HIST_LEN 20
  #endif
  
- /*
-  * +jumplist          Jumplist, CTRL-O and CTRL-I commands.
-  */
- #ifdef FEAT_SMALL
- # define FEAT_JUMPLIST
- #endif
- 
  #if defined(FEAT_SMALL)
  # define FEAT_CMDWIN
  #endif
--- 128,133 ----
*** ../vim-8.2.3794/src/buffer.c        2021-12-05 22:19:22.832153464 +0000
--- src/buffer.c        2021-12-13 12:12:34.077685610 +0000
***************
*** 1416,1422 ****
        bp = NULL;      // used when no loaded buffer found
        if (au_new_curbuf.br_buf != NULL && bufref_valid(&au_new_curbuf))
            buf = au_new_curbuf.br_buf;
- #ifdef FEAT_JUMPLIST
        else if (curwin->w_jumplistlen > 0)
        {
            int     jumpidx;
--- 1416,1421 ----
***************
*** 1452,1458 ****
                    break;
            }
        }
- #endif
  
        if (buf == NULL)        // No previous buffer, Try 2'nd approach
        {
--- 1451,1456 ----
*** ../vim-8.2.3794/src/change.c        2021-12-12 19:10:39.629912018 +0000
--- src/change.c        2021-12-13 12:12:54.437667771 +0000
***************
*** 469,479 ****
      win_T     *wp;
      tabpage_T *tp;
      int               i;
- #ifdef FEAT_JUMPLIST
      int               cols;
      pos_T     *p;
      int               add;
- #endif
  
      // mark the buffer as modified
      changed();
--- 469,477 ----
***************
*** 492,498 ****
        curbuf->b_last_change.lnum = lnum;
        curbuf->b_last_change.col = col;
  
- #ifdef FEAT_JUMPLIST
        // Create a new entry if a new undo-able change was started or we
        // don't have an entry yet.
        if (curbuf->b_new_change || curbuf->b_changelistlen == 0)
--- 490,495 ----
***************
*** 552,558 ****
        // The current window is always after the last change, so that "g,"
        // takes you back to it.
        curwin->w_changelistidx = curbuf->b_changelistlen;
- #endif
      }
  
      FOR_ALL_TAB_WINDOWS(tp, wp)
--- 549,554 ----
*** ../vim-8.2.3794/src/evalfunc.c      2021-11-30 18:25:04.984458295 +0000
--- src/evalfunc.c      2021-12-13 12:53:01.504284605 +0000
***************
*** 4301,4312 ****
      static void
  f_getchangelist(typval_T *argvars, typval_T *rettv)
  {
- #ifdef FEAT_JUMPLIST
      buf_T     *buf;
      int               i;
      list_T    *l;
      dict_T    *d;
- #endif
  
      if (rettv_list_alloc(rettv) != OK)
        return;
--- 4301,4310 ----
***************
*** 4314,4320 ****
      if (in_vim9script() && check_for_opt_buffer_arg(argvars, 0) == FAIL)
        return;
  
- #ifdef FEAT_JUMPLIST
      if (argvars[0].v_type == VAR_UNKNOWN)
        buf = curbuf;
      else
--- 4312,4317 ----
***************
*** 4349,4355 ****
        dict_add_number(d, "col", (long)buf->b_changelist[i].col);
        dict_add_number(d, "coladd", (long)buf->b_changelist[i].coladd);
      }
- #endif
  }
  
      static void
--- 4346,4351 ----
***************
*** 4525,4536 ****
      static void
  f_getjumplist(typval_T *argvars, typval_T *rettv)
  {
- #ifdef FEAT_JUMPLIST
      win_T     *wp;
      int               i;
      list_T    *l;
      dict_T    *d;
- #endif
  
      if (rettv_list_alloc(rettv) != OK)
        return;
--- 4521,4530 ----
***************
*** 4541,4547 ****
                    && check_for_opt_number_arg(argvars, 1) == FAIL)))
        return;
  
- #ifdef FEAT_JUMPLIST
      wp = find_tabwin(&argvars[0], &argvars[1], NULL);
      if (wp == NULL)
        return;
--- 4535,4540 ----
***************
*** 4571,4577 ****
        if (wp->w_jumplist[i].fname != NULL)
            dict_add_string(d, "filename", wp->w_jumplist[i].fname);
      }
- #endif
  }
  
  /*
--- 4564,4569 ----
***************
*** 5322,5334 ****
                0
  #endif
                },
!       {"jumplist",
! #ifdef FEAT_JUMPLIST
!               1
! #else
!               0
! #endif
!               },
        {"keymap",
  #ifdef FEAT_KEYMAP
                1
--- 5314,5320 ----
                0
  #endif
                },
!       {"jumplist", 1},
        {"keymap",
  #ifdef FEAT_KEYMAP
                1
*** ../vim-8.2.3794/src/ex_docmd.c      2021-12-11 12:26:55.924402407 +0000
--- src/ex_docmd.c      2021-12-13 12:53:20.292179840 +0000
***************
*** 359,370 ****
  # define ex_nbstart           ex_ni
  #endif
  
- #ifndef FEAT_JUMPLIST
- # define ex_jumps             ex_ni
- # define ex_clearjumps                ex_ni
- # define ex_changes           ex_ni
- #endif
- 
  #ifndef FEAT_PROFILE
  # define ex_profile           ex_ni
  #endif
--- 359,364 ----
*** ../vim-8.2.3794/src/mark.c  2021-12-05 22:19:22.832153464 +0000
--- src/mark.c  2021-12-13 12:54:21.071855474 +0000
***************
*** 136,145 ****
      void
  setpcmark(void)
  {
- #ifdef FEAT_JUMPLIST
      int               i;
      xfmark_T  *fm;
- #endif
  
      // for :global the mark is set only once
      if (global_busy || listcmd_busy || (cmdmod.cmod_flags & CMOD_KEEPJUMPS))
--- 136,143 ----
***************
*** 148,154 ****
      curwin->w_prev_pcmark = curwin->w_pcmark;
      curwin->w_pcmark = curwin->w_cursor;
  
- #ifdef FEAT_JUMPLIST
      // If jumplist is full: remove oldest entry
      if (++curwin->w_jumplistlen > JUMPLISTSIZE)
      {
--- 146,151 ----
***************
*** 163,171 ****
      fm->fmark.mark = curwin->w_pcmark;
      fm->fmark.fnum = curbuf->b_fnum;
      fm->fname = NULL;
! # ifdef FEAT_VIMINFO
      fm->time_set = vim_time();
- # endif
  #endif
  }
  
--- 160,167 ----
      fm->fmark.mark = curwin->w_pcmark;
      fm->fmark.fnum = curbuf->b_fnum;
      fm->fname = NULL;
! #ifdef FEAT_VIMINFO
      fm->time_set = vim_time();
  #endif
  }
  
***************
*** 185,191 ****
      curwin->w_prev_pcmark.lnum = 0;           // it has been checked
  }
  
- #if defined(FEAT_JUMPLIST) || defined(PROTO)
  /*
   * move "count" positions in the jump list (count may be negative)
   */
--- 181,186 ----
***************
*** 274,280 ****
      curwin->w_changelistidx = n;
      return curbuf->b_changelist + n;
  }
- #endif
  
  /*
   * Find mark "c" in buffer pointed to by "buf".
--- 269,274 ----
***************
*** 532,540 ****
  {
      char_u    *name;
      int               i;
- #ifdef FEAT_JUMPLIST
      win_T     *wp;
- #endif
  
      if (buf->b_ffname == NULL)
        return;
--- 526,532 ----
***************
*** 546,558 ****
      for (i = 0; i < NMARKS + EXTRA_MARKS; ++i)
        fmarks_check_one(&namedfm[i], name, buf);
  
- #ifdef FEAT_JUMPLIST
      FOR_ALL_WINDOWS(wp)
      {
        for (i = 0; i < wp->w_jumplistlen; ++i)
            fmarks_check_one(&wp->w_jumplist[i], name, buf);
      }
- #endif
  
      vim_free(name);
  }
--- 538,548 ----
***************
*** 626,634 ****
      buf->b_last_cursor.coladd = 0;
      buf->b_last_insert.lnum = 0;      // '^ mark cleared
      buf->b_last_change.lnum = 0;      // '. mark cleared
- #ifdef FEAT_JUMPLIST
      buf->b_changelistlen = 0;
- #endif
  }
  
  /*
--- 616,622 ----
***************
*** 867,873 ****
      }
  }
  
- #if defined(FEAT_JUMPLIST) || defined(PROTO)
  /*
   * print the jumplist
   */
--- 855,860 ----
***************
*** 965,971 ****
      if (curwin->w_changelistidx == curbuf->b_changelistlen)
        msg_puts("\n>");
  }
- #endif
  
  #define one_adjust(add) \
      { \
--- 952,957 ----
***************
*** 1071,1081 ****
            one_adjust(&(curbuf->b_last_cursor.lnum));
  
  
- #ifdef FEAT_JUMPLIST
        // list of change positions
        for (i = 0; i < curbuf->b_changelistlen; ++i)
            one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
- #endif
  
        // Visual area
        one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
--- 1057,1065 ----
***************
*** 1109,1122 ****
       */
      FOR_ALL_TAB_WINDOWS(tab, win)
      {
- #ifdef FEAT_JUMPLIST
        if ((cmdmod.cmod_flags & CMOD_LOCKMARKS) == 0)
            // Marks in the jumplist.  When deleting lines, this may create
            // duplicate marks in the jumplist, they will be removed later.
            for (i = 0; i < win->w_jumplistlen; ++i)
                if (win->w_jumplist[i].fmark.fnum == fnum)
                    one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
- #endif
  
        if (win->w_buffer == curbuf)
        {
--- 1093,1104 ----
***************
*** 1249,1259 ****
      // last change position
      col_adjust(&(curbuf->b_last_change));
  
- #ifdef FEAT_JUMPLIST
      // list of change positions
      for (i = 0; i < curbuf->b_changelistlen; ++i)
        col_adjust(&(curbuf->b_changelist[i]));
- #endif
  
      // Visual area
      col_adjust(&(curbuf->b_visual.vi_start));
--- 1231,1239 ----
***************
*** 1273,1284 ****
       */
      FOR_ALL_WINDOWS(win)
      {
- #ifdef FEAT_JUMPLIST
        // marks in the jumplist
        for (i = 0; i < win->w_jumplistlen; ++i)
            if (win->w_jumplist[i].fmark.fnum == fnum)
                col_adjust(&(win->w_jumplist[i].fmark.mark));
- #endif
  
        if (win->w_buffer == curbuf)
        {
--- 1253,1262 ----
***************
*** 1294,1300 ****
      }
  }
  
- #ifdef FEAT_JUMPLIST
  /*
   * When deleting lines, this may create duplicate marks in the
   * jumplist. They will be removed here for the specified window.
--- 1272,1277 ----
***************
*** 1371,1377 ****
      for (i = 0; i < wp->w_jumplistlen; ++i)
        vim_free(wp->w_jumplist[i].fname);
  }
- #endif // FEAT_JUMPLIST
  
      void
  set_last_cursor(win_T *win)
--- 1348,1353 ----
*** ../vim-8.2.3794/src/normal.c        2021-12-12 14:16:34.989862195 +0000
--- src/normal.c        2021-12-13 12:54:49.319711714 +0000
***************
*** 5593,5604 ****
      static void
  nv_pcmark(cmdarg_T *cap)
  {
- #ifdef FEAT_JUMPLIST
      pos_T     *pos;
! # ifdef FEAT_FOLDING
      linenr_T  lnum = curwin->w_cursor.lnum;
      int               old_KeyTyped = KeyTyped;    // getting file may reset it
! # endif
  
      if (!checkclearopq(cap->oap))
      {
--- 5593,5603 ----
      static void
  nv_pcmark(cmdarg_T *cap)
  {
      pos_T     *pos;
! #ifdef FEAT_FOLDING
      linenr_T  lnum = curwin->w_cursor.lnum;
      int               old_KeyTyped = KeyTyped;    // getting file may reset it
! #endif
  
      if (!checkclearopq(cap->oap))
      {
***************
*** 5638,5646 ****
            foldOpenCursor();
  # endif
      }
- #else
-     clearopbeep(cap->oap);
- #endif
  }
  
  /*
--- 5637,5642 ----
***************
*** 6444,6450 ****
            do_exmode(TRUE);
        break;
  
- #ifdef FEAT_JUMPLIST
      case ',':
        nv_pcmark(cap);
        break;
--- 6440,6445 ----
***************
*** 6453,6459 ****
        cap->count1 = -cap->count1;
        nv_pcmark(cap);
        break;
- #endif
  
      case 't':
        if (!checkclearop(oap))
--- 6448,6453 ----
*** ../vim-8.2.3794/src/undo.c  2021-10-14 17:52:19.016102283 +0100
--- src/undo.c  2021-12-13 12:54:58.227667267 +0000
***************
*** 240,246 ****
  
  /*
   * Save the lines between "top" and "bot" for both the "u" and "U" command.
!  * "top" may be 0 and bot may be curbuf->b_ml.ml_line_count + 1.
   * Careful: may trigger autocommands that reload the buffer.
   * Returns FAIL when lines could not be saved, OK otherwise.
   */
--- 240,246 ----
  
  /*
   * Save the lines between "top" and "bot" for both the "u" and "U" command.
!  * "top" may be 0 and "bot" may be curbuf->b_ml.ml_line_count + 1.
   * Careful: may trigger autocommands that reload the buffer.
   * Returns FAIL when lines could not be saved, OK otherwise.
   */
***************
*** 497,506 ****
       */
      if (curbuf->b_u_synced)
      {
- #ifdef FEAT_JUMPLIST
        // Need to create new entry in b_changelist.
        curbuf->b_new_change = TRUE;
- #endif
  
        if (get_undolevel() >= 0)
        {
--- 497,504 ----
*** ../vim-8.2.3794/src/version.c       2021-12-13 11:31:00.488529501 +0000
--- src/version.c       2021-12-13 12:55:06.763625034 +0000
***************
*** 312,322 ****
  #else
        "-job",
  #endif
- #ifdef FEAT_JUMPLIST
        "+jumplist",
- #else
-       "-jumplist",
- #endif
  #ifdef FEAT_KEYMAP
        "+keymap",
  #else
--- 312,318 ----
*** ../vim-8.2.3794/src/viminfo.c       2021-08-11 16:13:49.544650243 +0100
--- src/viminfo.c       2021-12-13 12:56:02.631357453 +0000
***************
*** 1947,1956 ****
   */
  
  static xfmark_T *vi_namedfm = NULL;
- #ifdef FEAT_JUMPLIST
  static xfmark_T *vi_jumplist = NULL;
  static int vi_jumplist_len = 0;
- #endif
  
      static void
  write_one_mark(FILE *fp_out, int c, pos_T *pos)
--- 1947,1954 ----
***************
*** 1978,1984 ****
      write_one_mark(fp_out, '"', &buf->b_last_cursor);
      write_one_mark(fp_out, '^', &buf->b_last_insert);
      write_one_mark(fp_out, '.', &buf->b_last_change);
- #ifdef FEAT_JUMPLIST
      // changelist positions are stored oldest first
      for (i = 0; i < buf->b_changelistlen; ++i)
      {
--- 1976,1981 ----
***************
*** 1987,1993 ****
                                                         buf->b_changelist[i]))
            write_one_mark(fp_out, '+', &buf->b_changelist[i]);
      }
- #endif
      for (i = 0; i < NMARKS; i++)
        write_one_mark(fp_out, 'a' + i, &buf->b_namedm[i]);
  }
--- 1984,1989 ----
***************
*** 2173,2179 ****
        write_one_filemark(fp, fm, '\'', i - NMARKS + '0');
      }
  
- #ifdef FEAT_JUMPLIST
      // Write the jumplist with -'
      fputs(_("\n# Jumplist (newest first):\n"), fp);
      setpcmark();      // add current cursor position
--- 2169,2174 ----
***************
*** 2201,2207 ****
                    && !skip_for_viminfo(buf)))
            write_one_filemark(fp, fm, '-', '\'');
      }
- #endif
  }
  
  /*
--- 2196,2201 ----
***************
*** 2412,2418 ****
                        case '^': curbuf->b_last_insert = pos; break;
                        case '.': curbuf->b_last_change = pos; break;
                        case '+':
- #ifdef FEAT_JUMPLIST
                                  // changelist positions are stored oldest
                                  // first
                                  if (curbuf->b_changelistlen == JUMPLISTSIZE)
--- 2406,2411 ----
***************
*** 2424,2430 ****
                                      ++curbuf->b_changelistlen;
                                  curbuf->b_changelist[
                                           curbuf->b_changelistlen - 1] = pos;
- #endif
                                  break;
  
                                  // Using the line number for the last-used
--- 2417,2422 ----
***************
*** 2442,2448 ****
  
        if (load_marks)
        {
- #ifdef FEAT_JUMPLIST
            win_T       *wp;
  
            FOR_ALL_WINDOWS(wp)
--- 2434,2439 ----
***************
*** 2450,2456 ****
                if (wp->w_buffer == curbuf)
                    wp->w_changelistidx = curbuf->b_changelistlen;
            }
- #endif
            if (flags & VIF_ONLY_CURBUF)
                break;
        }
--- 2441,2446 ----
***************
*** 2504,2510 ****
      {
        if (*str == '\'')
        {
- #ifdef FEAT_JUMPLIST
            // If the jumplist isn't full insert fmark as oldest entry
            if (curwin->w_jumplistlen == JUMPLISTSIZE)
                fm = NULL;
--- 2494,2499 ----
***************
*** 2518,2526 ****
                fm->fmark.mark.lnum = 0;
                fm->fname = NULL;
            }
- #else
-           fm = NULL;
- #endif
        }
        else if (VIM_ISDIGIT(*str))
            fm = &namedfm_p[*str - '0' + NMARKS];
--- 2507,2512 ----
***************
*** 2551,2560 ****
  prepare_viminfo_marks(void)
  {
      vi_namedfm = ALLOC_CLEAR_MULT(xfmark_T, NMARKS + EXTRA_MARKS);
- #ifdef FEAT_JUMPLIST
      vi_jumplist = ALLOC_CLEAR_MULT(xfmark_T, JUMPLISTSIZE);
      vi_jumplist_len = 0;
- #endif
  }
  
      static void
--- 2537,2544 ----
***************
*** 2568,2581 ****
            vim_free(vi_namedfm[i].fname);
        VIM_CLEAR(vi_namedfm);
      }
- #ifdef FEAT_JUMPLIST
      if (vi_jumplist != NULL)
      {
        for (i = 0; i < vi_jumplist_len; ++i)
            vim_free(vi_jumplist[i].fname);
        VIM_CLEAR(vi_jumplist);
      }
- #endif
  }
  
  /*
--- 2552,2563 ----
***************
*** 2612,2618 ****
  
      if (name == '\'')
      {
- #ifdef FEAT_JUMPLIST
        if (vi_jumplist != NULL)
        {
            if (vi_jumplist_len < JUMPLISTSIZE)
--- 2594,2599 ----
***************
*** 2667,2673 ****
                fm->time_set = 0;
            }
        }
- #endif
      }
      else
      {
--- 2648,2653 ----
*** ../vim-8.2.3794/src/window.c        2021-12-10 13:40:05.060213928 +0000
--- src/window.c        2021-12-13 12:56:25.447252270 +0000
***************
*** 1332,1341 ****
            p_wh = size;
      }
  
- #ifdef FEAT_JUMPLIST
      // Keep same changelist position in new window.
      wp->w_changelistidx = oldwin->w_changelistidx;
- #endif
  
      /*
       * make the new window the current window
--- 1332,1339 ----
***************
*** 1383,1391 ****
      newp->w_wrow = oldp->w_wrow;
      newp->w_fraction = oldp->w_fraction;
      newp->w_prev_fraction_row = oldp->w_prev_fraction_row;
- #ifdef FEAT_JUMPLIST
      copy_jumplist(oldp, newp);
- #endif
  #ifdef FEAT_QUICKFIX
      if (flags & WSP_NEWLOC)
      {
--- 1381,1387 ----
***************
*** 5161,5169 ****
      clear_matches(wp);
  #endif
  
- #ifdef FEAT_JUMPLIST
      free_jumplist(wp);
- #endif
  
  #ifdef FEAT_QUICKFIX
      qf_free_all(wp);
--- 5157,5163 ----
*** ../vim-8.2.3794/src/structs.h       2021-12-11 16:13:32.227721221 +0000
--- src/structs.h       2021-12-13 12:56:54.655120868 +0000
***************
*** 2763,2776 ****
      pos_T     b_last_insert;  // where Insert mode was left
      pos_T     b_last_change;  // position of last change: '. mark
  
- #ifdef FEAT_JUMPLIST
      /*
       * the changelist contains old change positions
       */
      pos_T     b_changelist[JUMPLISTSIZE];
      int               b_changelistlen;        // number of active entries
      int               b_new_change;           // set by u_savecommon()
- #endif
  
      /*
       * Character table, only used in charset.c for 'iskeyword'
--- 2763,2774 ----
***************
*** 3730,3736 ****
      pos_T     w_pcmark;       // previous context mark
      pos_T     w_prev_pcmark;  // previous w_pcmark
  
- #ifdef FEAT_JUMPLIST
      /*
       * the jumplist contains old cursor positions
       */
--- 3728,3733 ----
***************
*** 3739,3745 ****
      int               w_jumplistidx;          // current position
  
      int               w_changelistidx;        // current position in 
b_changelist
- #endif
  
  #ifdef FEAT_SEARCH_EXTRA
      matchitem_T       *w_match_head;          // head of match list
--- 3736,3741 ----
*** ../vim-8.2.3794/src/testdir/test_changelist.vim     2020-08-12 
17:50:31.871655841 +0100
--- src/testdir/test_changelist.vim     2021-12-13 12:57:30.978962284 +0000
***************
*** 1,11 ****
  " Tests for the changelist functionality
  
- source check.vim
- 
  " Tests for the getchangelist() function
  func Test_getchangelist()
-   CheckFeature jumplist
- 
    bwipe!
    enew
    call assert_equal([], 10->getchangelist())
--- 1,7 ----
*** ../vim-8.2.3794/src/testdir/test_jumplist.vim       2020-08-12 
17:50:31.879655802 +0100
--- src/testdir/test_jumplist.vim       2021-12-13 12:58:05.278817085 +0000
***************
*** 1,11 ****
  " Tests for the jumplist functionality
  
- source check.vim
- 
  " Tests for the getjumplist() function
  func Test_getjumplist()
-   CheckFeature jumplist
- 
    %bwipe
    clearjumps
    call assert_equal([[], 0], getjumplist())
--- 1,7 ----
*** ../vim-8.2.3794/src/testdir/test_normal.vim 2021-12-12 20:07:58.724337327 
+0000
--- src/testdir/test_normal.vim 2021-12-13 12:58:47.090645699 +0000
***************
*** 2336,2342 ****
  " Test for g`, g;, g,, g&, gv, gk, gj, gJ, g0, g^, g_, gm, g$, gM, g CTRL-G,
  " gi and gI commands
  func Test_normal33_g_cmd2()
-   CheckFeature jumplist
    call Setup_NewWindow()
    " Test for g`
    clearjumps
--- 2336,2341 ----
***************
*** 3270,3276 ****
  
  " Tests for g cmds
  func Test_normal_gdollar_cmd()
-   CheckFeature jumplist
    call Setup_NewWindow()
    " Make long lines that will wrap
    %s/$/\=repeat(' foobar', 10)/
--- 3269,3274 ----
*** ../vim-8.2.3794/src/version.c       2021-12-13 11:31:00.488529501 +0000
--- src/version.c       2021-12-13 12:55:06.763625034 +0000
***************
*** 755,756 ****
--- 751,754 ----
  {   /* Add new patch number below this line */
+ /**/
+     3795,
  /**/

-- 
The History of every major Galactic Civilization tends to pass through
three distinct and recognizable phases, those of Survival, Inquiry and
Sophistication, otherwise known as the How, Why and Where phases.
For instance, the first phase is characterized by the question 'How can
we eat?' the second by the question 'Why do we eat?' and the third by
the question 'Where shall we have lunch?'
                -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20211213134548.128001C0D69%40moolenaar.net.

Raspunde prin e-mail lui