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

Patch 7.3.618

Expand Messages
  • Bram Moolenaar
    Patch 7.3.618 (after 7.3.616) Problem: Still doesn t compile with small features. Solution: Move current_search() out of #ifdef. (Dominique Pelle) Files:
    Message 1 of 1 , Jul 29, 2012
    • 0 Attachment
      Patch 7.3.618 (after 7.3.616)
      Problem: Still doesn't compile with small features.
      Solution: Move current_search() out of #ifdef. (Dominique Pelle)
      Files: src/normal.c, src/search.c


      *** ../vim-7.3.617/src/normal.c 2012-07-27 21:05:51.000000000 +0200
      --- src/normal.c 2012-07-28 13:34:13.000000000 +0200
      ***************
      *** 7995,8000 ****
      --- 7995,8001 ----
      cap->arg = TRUE;
      nv_visual(cap);
      break;
      + #endif /* FEAT_VISUAL */

      /* "gn", "gN" visually select next/previous search match
      * "gn" selects next match
      ***************
      *** 8006,8014 ****
      if (!current_search(cap->count1, cap->nchar == 'n'))
      #endif
      beep_flush();
      -
      break;
      - #endif /* FEAT_VISUAL */

      /*
      * "gj" and "gk" two new funny movement keys -- up and down
      --- 8007,8013 ----
      *** ../vim-7.3.617/src/search.c 2012-07-25 15:06:20.000000000 +0200
      --- src/search.c 2012-07-28 13:37:19.000000000 +0200
      ***************
      *** 3397,3547 ****
      return OK;
      }

      - #if defined(FEAT_VISUAL) || defined(PROTO)
      - /*
      - * Find next search match under cursor, cursor at end.
      - * Used while an operator is pending, and in Visual mode.
      - * TODO: redo only works when used in operator pending mode
      - */
      - int
      - current_search(count, forward)
      - long count;
      - int forward; /* move forward or backwards */
      - {
      - pos_T start_pos; /* position before the pattern */
      - pos_T orig_pos; /* position of the cursor at beginning */
      - pos_T pos; /* position after the pattern */
      - int i;
      - int dir;
      - int result; /* result of various function calls */
      - char_u old_p_ws = p_ws;
      - int visual_active = FALSE;
      - int flags = 0;
      - pos_T save_VIsual;
      -
      -
      - /* wrapping should not occur */
      - p_ws = FALSE;
      -
      - /* Correct cursor when 'selection' is exclusive */
      - if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
      - dec_cursor();
      -
      - if (VIsual_active)
      - {
      - orig_pos = curwin->w_cursor;
      - save_VIsual = VIsual;
      - visual_active = TRUE;
      -
      - /* just started visual selection, only one character */
      - if (equalpos(VIsual, curwin->w_cursor))
      - visual_active = FALSE;
      -
      - pos = curwin->w_cursor;
      - start_pos = VIsual;
      -
      - /* make sure, searching further will extend the match */
      - if (VIsual_active)
      - {
      - if (forward)
      - incl(&pos);
      - else
      - decl(&pos);
      - }
      - }
      - else
      - orig_pos = pos = start_pos = curwin->w_cursor;
      -
      - /*
      - * The trick is to first search backwards and then search forward again,
      - * so that a match at the current cursor position will be correctly
      - * captured.
      - */
      - for (i = 0; i < 2; i++)
      - {
      - if (i && count == 1)
      - flags = SEARCH_START;
      -
      - if (forward)
      - dir = i;
      - else
      - dir = !i;
      - result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
      - spats[last_idx].pat, (long) (i ? count : 1),
      - SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
      - RE_SEARCH, 0, NULL);
      -
      - /* First search may fail, but then start searching from the
      - * beginning of the file (cursor might be on the search match)
      - * except when Visual mode is active, so that extending the visual
      - * selection works. */
      - if (!result && i) /* not found, abort */
      - {
      - curwin->w_cursor = orig_pos;
      - if (VIsual_active)
      - VIsual = save_VIsual;
      - p_ws = old_p_ws;
      - return FAIL;
      - }
      - else if (!i && !result && !visual_active)
      - {
      - if (forward) /* try again from start of buffer */
      - {
      - clearpos(&pos);
      - }
      - else /* try again from end of buffer */
      - {
      - /* searching backwards, so set pos to last line and col */
      - pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
      - pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
      - }
      - }
      -
      - }
      -
      - start_pos = pos;
      - flags = (forward ? SEARCH_END : 0);
      -
      - /* move to match */
      - result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
      - spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
      -
      - if (!VIsual_active)
      - VIsual = start_pos;
      -
      - p_ws = old_p_ws;
      - curwin->w_cursor = pos;
      - VIsual_active = TRUE;
      - VIsual_mode = 'v';
      -
      - if (VIsual_active)
      - {
      - redraw_curbuf_later(INVERTED); /* update the inversion */
      - if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
      - inc_cursor();
      - }
      -
      - #ifdef FEAT_FOLDING
      - if (fdo_flags & FDO_SEARCH && KeyTyped)
      - foldOpenCursor();
      - #endif
      -
      - may_start_select('c');
      - #ifdef FEAT_MOUSE
      - setmouse();
      - #endif
      - #ifdef FEAT_CLIPBOARD
      - /* Make sure the clipboard gets updated. Needed because start and
      - * end are still the same, and the selection needs to be owned */
      - clip_star.vmode = NUL;
      - #endif
      - redraw_curbuf_later(INVERTED);
      - showmode();
      -
      - return OK;
      - }
      - #endif /* FEAT_VISUAL */
      -
      /*
      * Find sentence(s) under the cursor, cursor at end.
      * When Visual active, extend it by one or more sentences.
      --- 3397,3402 ----
      ***************
      *** 4670,4675 ****
      --- 4525,4675 ----

      #endif /* FEAT_TEXTOBJ */

      + #if defined(FEAT_VISUAL) || defined(PROTO)
      + /*
      + * Find next search match under cursor, cursor at end.
      + * Used while an operator is pending, and in Visual mode.
      + * TODO: redo only works when used in operator pending mode
      + */
      + int
      + current_search(count, forward)
      + long count;
      + int forward; /* move forward or backwards */
      + {
      + pos_T start_pos; /* position before the pattern */
      + pos_T orig_pos; /* position of the cursor at beginning */
      + pos_T pos; /* position after the pattern */
      + int i;
      + int dir;
      + int result; /* result of various function calls */
      + char_u old_p_ws = p_ws;
      + int visual_active = FALSE;
      + int flags = 0;
      + pos_T save_VIsual;
      +
      +
      + /* wrapping should not occur */
      + p_ws = FALSE;
      +
      + /* Correct cursor when 'selection' is exclusive */
      + if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
      + dec_cursor();
      +
      + if (VIsual_active)
      + {
      + orig_pos = curwin->w_cursor;
      + save_VIsual = VIsual;
      + visual_active = TRUE;
      +
      + /* just started visual selection, only one character */
      + if (equalpos(VIsual, curwin->w_cursor))
      + visual_active = FALSE;
      +
      + pos = curwin->w_cursor;
      + start_pos = VIsual;
      +
      + /* make sure, searching further will extend the match */
      + if (VIsual_active)
      + {
      + if (forward)
      + incl(&pos);
      + else
      + decl(&pos);
      + }
      + }
      + else
      + orig_pos = pos = start_pos = curwin->w_cursor;
      +
      + /*
      + * The trick is to first search backwards and then search forward again,
      + * so that a match at the current cursor position will be correctly
      + * captured.
      + */
      + for (i = 0; i < 2; i++)
      + {
      + if (i && count == 1)
      + flags = SEARCH_START;
      +
      + if (forward)
      + dir = i;
      + else
      + dir = !i;
      + result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
      + spats[last_idx].pat, (long) (i ? count : 1),
      + SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
      + RE_SEARCH, 0, NULL);
      +
      + /* First search may fail, but then start searching from the
      + * beginning of the file (cursor might be on the search match)
      + * except when Visual mode is active, so that extending the visual
      + * selection works. */
      + if (!result && i) /* not found, abort */
      + {
      + curwin->w_cursor = orig_pos;
      + if (VIsual_active)
      + VIsual = save_VIsual;
      + p_ws = old_p_ws;
      + return FAIL;
      + }
      + else if (!i && !result && !visual_active)
      + {
      + if (forward) /* try again from start of buffer */
      + {
      + clearpos(&pos);
      + }
      + else /* try again from end of buffer */
      + {
      + /* searching backwards, so set pos to last line and col */
      + pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
      + pos.col = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
      + }
      + }
      +
      + }
      +
      + start_pos = pos;
      + flags = (forward ? SEARCH_END : 0);
      +
      + /* move to match */
      + result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
      + spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
      +
      + if (!VIsual_active)
      + VIsual = start_pos;
      +
      + p_ws = old_p_ws;
      + curwin->w_cursor = pos;
      + VIsual_active = TRUE;
      + VIsual_mode = 'v';
      +
      + if (VIsual_active)
      + {
      + redraw_curbuf_later(INVERTED); /* update the inversion */
      + if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
      + inc_cursor();
      + }
      +
      + #ifdef FEAT_FOLDING
      + if (fdo_flags & FDO_SEARCH && KeyTyped)
      + foldOpenCursor();
      + #endif
      +
      + may_start_select('c');
      + #ifdef FEAT_MOUSE
      + setmouse();
      + #endif
      + #ifdef FEAT_CLIPBOARD
      + /* Make sure the clipboard gets updated. Needed because start and
      + * end are still the same, and the selection needs to be owned */
      + clip_star.vmode = NUL;
      + #endif
      + redraw_curbuf_later(INVERTED);
      + showmode();
      +
      + return OK;
      + }
      + #endif /* FEAT_VISUAL */
      +
      #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
      || defined(PROTO)
      /*
      *** ../vim-7.3.617/src/version.c 2012-07-27 21:12:03.000000000 +0200
      --- src/version.c 2012-07-29 12:54:29.000000000 +0200
      ***************
      *** 716,717 ****
      --- 716,719 ----
      { /* Add new patch number below this line */
      + /**/
      + 618,
      /**/

      --
      hundred-and-one symptoms of being an internet addict:
      185. You order fast food over the Internet

      /// 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
    Your message has been successfully submitted and would be delivered to recipients shortly.