curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
buflist_altfpos(curwin); /* remember curpos */
-#ifdef FEAT_VISUAL
/* Don't restart Select mode after switching to another buffer. */
VIsual_reselect = FALSE;
-#endif
/* close_windows() or apply_autocmds() may change curbuf */
prevbuf = curbuf;
&& (State & NORMAL)
&& !wp->w_p_list
&& !virtual_active()
-#ifdef FEAT_VISUAL
- && !(VIsual_active
- && (*p_sel == 'e' || ltoreq(*pos, VIsual)))
-#endif
+ && !(VIsual_active && (*p_sel == 'e' || ltoreq(*pos, VIsual)))
)
*cursor = vcol + incr - 1; /* cursor at end */
else
}
#endif
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Get the leftmost and rightmost virtual column of pos1 and pos2.
* Used for Visual block mode.
else
*right = to1;
}
-#endif
/*
* skipwhite: skip over ' ' and '\t'.
#ifdef FEAT_RIGHTLEFT
static void ins_ctrl_ __ARGS((void));
#endif
-#ifdef FEAT_VISUAL
static int ins_start_select __ARGS((int c));
-#endif
static void ins_insert __ARGS((int replaceState));
static void ins_ctrl_o __ARGS((void));
static void ins_shift __ARGS((int c, int lastc));
}
#endif
-#ifdef FEAT_VISUAL
/*
* If 'keymodel' contains "startsel", may start selection. If it
* does, a CTRL-O and c will be stuffed, we need to get these
*/
if (ins_start_select(c))
continue;
-#endif
/*
* The big switch to handle a character in insert mode.
else if (cc != NUL)
++curwin->w_cursor.col; /* put cursor back on the NUL */
-#ifdef FEAT_VISUAL
/* <C-S-Right> may have started Visual mode, adjust the position for
* deleted characters. */
if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
if (VIsual.col > len)
{
VIsual.col = len;
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
VIsual.coladd = 0;
-# endif
+#endif
}
}
-#endif
}
}
did_ai = FALSE;
int need_redraw = FALSE;
int regname;
int literally = 0;
-#ifdef FEAT_VISUAL
int vis_active = VIsual_active;
-#endif
/*
* If we are going to wait for a character, show a '"'.
if (need_redraw || stuff_empty())
edit_unputchar();
-#ifdef FEAT_VISUAL
/* Disallow starting Visual mode here, would get a weird mode. */
if (!vis_active && VIsual_active)
end_visual_mode();
-#endif
}
/*
#endif
)
&& (restart_edit == NUL
- || (gchar_cursor() == NUL
-#ifdef FEAT_VISUAL
- && !VIsual_active
-#endif
- ))
+ || (gchar_cursor() == NUL && !VIsual_active))
#ifdef FEAT_RIGHTLEFT
&& !revins_on
#endif
}
#endif
-#ifdef FEAT_VISUAL
/*
* If 'keymodel' contains "startsel", may start selection.
* Returns TRUE when a CTRL-O and other keys stuffed.
}
return FALSE;
}
-#endif
/*
* <Insert> key in Insert mode: toggle insert/replace mode.
{
case MLINE: buf[0] = 'V'; break;
case MCHAR: buf[0] = 'v'; break;
-#ifdef FEAT_VISUAL
case MBLOCK:
buf[0] = Ctrl_V;
sprintf((char *)buf + 1, "%ld", reglen + 1);
break;
-#endif
}
rettv->v_type = VAR_STRING;
rettv->vval.v_string = vim_strsave(buf);
#ifdef FEAT_VIRTUALEDIT
"virtualedit",
#endif
-#ifdef FEAT_VISUAL
"visual",
-#endif
#ifdef FEAT_VISUALEXTRA
"visualextra",
#endif
buf[1] = NUL;
buf[2] = NUL;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (VIsual_select)
else
buf[0] = VIsual_mode;
}
- else
-#endif
- if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
+ else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
|| State == CONFIRM)
{
buf[0] = 'r';
case 'V': case 'l': /* line-wise selection */
yank_type = MLINE;
break;
-#ifdef FEAT_VISUAL
case 'b': case Ctrl_V: /* block-wise selection */
yank_type = MBLOCK;
if (VIM_ISDIGIT(stropt[1]))
--stropt;
}
break;
-#endif
}
}
typval_T *argvars UNUSED;
typval_T *rettv UNUSED;
{
-#ifdef FEAT_VISUAL
char_u str[2];
rettv->v_type = VAR_STRING;
/* A non-zero number or non-empty string argument: reset mode. */
if (non_zero_arg(&argvars[0]))
curbuf->b_visual_mode_eval = NUL;
-#endif
}
/*
return NULL;
if (name[0] == '.') /* cursor */
return &curwin->w_cursor;
-#ifdef FEAT_VISUAL
if (name[0] == 'v' && name[1] == NUL) /* Visual start */
{
if (VIsual_active)
return &VIsual;
return &curwin->w_cursor;
}
-#endif
if (name[0] == '\'') /* mark */
{
pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum);
goto theend;
}
-#ifdef FEAT_VISUAL
/*
* End Visual mode before switching to another buffer, so the text can be
* copied into the GUI selection buffer.
*/
reset_VIsual();
-#endif
#ifdef FEAT_AUTOCMD
if ((command != NULL || newlnum > (linenr_T)0)
beginline(BL_SOL | BL_FIX);
}
-#if defined(FEAT_VISUAL)
if (VIsual_active)
end_visual_mode();
-#endif
switch (eap->cmdidx)
{
RedrawingDisabled = 0;
p_lz = FALSE;
update_topline();
- update_screen(eap->forceit ? CLEAR :
-#ifdef FEAT_VISUAL
- VIsual_active ? INVERTED :
-#endif
- 0);
+ update_screen(eap->forceit ? CLEAR : VIsual_active ? INVERTED : 0);
#ifdef FEAT_TITLE
if (need_maketitle)
maketitle();
status_redraw_all();
else
status_redraw_curbuf();
- update_screen(
-# ifdef FEAT_VISUAL
- VIsual_active ? INVERTED :
-# endif
- 0);
+ update_screen(VIsual_active ? INVERTED : 0);
RedrawingDisabled = r;
p_lz = p;
out_flush();
* +visual Visual mode - now always included.
* +visualextra Extra features for Visual mode (mostly block operators).
*/
-#define FEAT_VISUAL
#ifdef FEAT_NORMAL
# define FEAT_VISUALEXTRA
#endif
#ifdef FEAT_GUI
# ifndef FEAT_CLIPBOARD
# define FEAT_CLIPBOARD
-# ifndef FEAT_VISUAL
-# define FEAT_VISUAL
-# endif
# endif
#endif
-#if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \
+#if defined(FEAT_NORMAL) \
&& (defined(UNIX) || defined(VMS)) \
&& defined(WANT_X11) && defined(HAVE_X11)
# define FEAT_XCLIPBOARD
}
if (done == DONE_NOTHING)
EMSG(_(e_nofold));
-#ifdef FEAT_VISUAL
/* Force a redraw to remove the Visual highlighting. */
if (had_visual)
redraw_curbuf_later(INVERTED);
-#endif
}
/* openFold() {{{2 */
if (!did_one)
{
EMSG(_(e_nofold));
-#ifdef FEAT_VISUAL
/* Force a redraw to remove the Visual highlighting. */
if (had_visual)
redraw_curbuf_later(INVERTED);
-#endif
}
else
/* Deleting markers may make cursor column invalid. */
}
/* foldAdjustVisual() {{{2 */
-#ifdef FEAT_VISUAL
/*
* Adjust the Visual area to include any fold at the start or end completely.
*/
#endif
}
}
-#endif
/* cursor_foldstart() {{{2 */
/*
c = read_redo(FALSE, old_redo);
}
-#ifdef FEAT_VISUAL
if (c == 'v') /* redo Visual */
{
VIsual = curwin->w_cursor;
redo_VIsual_busy = TRUE;
c = read_redo(FALSE, old_redo);
}
-#endif
/* try to enter the count (in place of a previous count) */
if (count)
return typebuf.tb_maplen == 0;
}
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Return the number of characters that are mapped (or not typed).
*/
{
return typebuf.tb_maplen;
}
-#endif
/*
* remove "len" characters from typebuf.tb_buf[typebuf.tb_off + offset]
idx = get_menu_index(current_menu, local_State);
if (idx != MENU_INDEX_INVALID)
{
-# ifdef FEAT_VISUAL
/*
* In Select mode and a Visual mode menu
* is used: Switch to Visual mode
(void)ins_typebuf(K_SELECT_STRING,
REMAP_NONE, 0, TRUE, FALSE);
}
-# endif
ins_typebuf(current_menu->strings[idx],
current_menu->noremap[idx],
0, TRUE,
break;
}
-#ifdef FEAT_VISUAL
/*
* In Select mode and a Visual mode mapping is used:
* Switch to Visual mode temporarily. Append K_SELECT
(void)ins_typebuf(K_SELECT_STRING, REMAP_NONE,
0, TRUE, FALSE);
}
-#endif
#ifdef FEAT_EVAL
/* Copy the values from *mp that are used, because
/* set to TRUE when "-s" commandline argument
* used for ex */
-#ifdef FEAT_VISUAL
EXTERN pos_T VIsual; /* start position of active Visual selection */
EXTERN int VIsual_active INIT(= FALSE);
/* whether Visual mode is active */
EXTERN int redo_VIsual_busy INIT(= FALSE);
/* TRUE when redoing Visual */
-#endif
#ifdef FEAT_MOUSE
/*
EXTERN int fill_diff INIT(= '-');
#endif
-#ifdef FEAT_VISUAL
/* Whether 'keymodel' contains "stopsel" and "startsel". */
EXTERN int km_stopsel INIT(= FALSE);
EXTERN int km_startsel INIT(= FALSE);
-#endif
#ifdef FEAT_CMDWIN
EXTERN int cedit_key INIT(= -1); /* key value of 'cedit' option */
*/
if (!mouse_has(checkfor) || checkfor == MOUSE_COMMAND)
{
-#ifdef FEAT_VISUAL
/* Don't do modeless selection in Visual mode. */
if (checkfor != MOUSE_NONEF && VIsual_active && (State & NORMAL))
return;
-#endif
/*
* When 'mousemodel' is "popup", shift-left is translated to right.
}
*/
-
-#ifdef FEAT_VISUAL
reset_VIsual();
-#endif
-
fnames = new_fnames_from_AEDesc(&theList, &numFiles, &error);
if (error)
/* Update the screen display */
update_screen(NOT_VALID);
-#ifdef FEAT_VISUAL
+
/* Select the text if possible */
if (gotPosition)
{
VIsual.col = 0;
}
}
-#endif
+
setcursor();
out_flush();
DragQueryPoint(hDrop, &pt);
MapWindowPoints(s_hwnd, s_textArea, &pt, 1);
-# ifdef FEAT_VISUAL
reset_VIsual();
-# endif
fnames = (char_u **)alloc(cFiles * sizeof(char_u *));
if (!cmdwin && !noexmode && SETJMP(x_jump_env))
{
State = NORMAL;
-# ifdef FEAT_VISUAL
VIsual_active = FALSE;
-# endif
got_int = TRUE;
need_wait_return = FALSE;
global_busy = FALSE;
check_timestamps(FALSE);
if (need_wait_return) /* if wait_return still needed ... */
wait_return(FALSE); /* ... call it now */
- if (need_start_insertmode && goto_im()
-#ifdef FEAT_VISUAL
- && !VIsual_active
-#endif
- )
+ if (need_start_insertmode && goto_im() && !VIsual_active)
{
need_start_insertmode = FALSE;
stuffReadbuff((char_u *)"i"); /* start insert mode next */
diff_need_scrollbind = FALSE;
}
#endif
-#if defined(FEAT_FOLDING) && defined(FEAT_VISUAL)
+#if defined(FEAT_FOLDING)
/* Include a closed fold completely in the Visual area. */
foldAdjustVisual();
#endif
update_topline();
validate_cursor();
-#ifdef FEAT_VISUAL
if (VIsual_active)
update_curbuf(INVERTED);/* update inverted part */
- else
-#endif
- if (must_redraw)
+ else if (must_redraw)
update_screen(0);
else if (redraw_cmdline || clear_cmdline)
showmode();
return OK;
}
-#ifdef FEAT_VISUAL
if (c == '<' || c == '>')
{
if (c == '<')
curbuf->b_visual.vi_mode = 'v';
return OK;
}
-#endif
#ifndef EBCDIC
if (c > 'z') /* some islower() and isupper() cannot handle
int *fnum;
{
pos_T *posp;
-#ifdef FEAT_VISUAL
pos_T *startp, *endp;
-#endif
static pos_T pos_copy;
posp = NULL;
curwin->w_cursor = pos;
listcmd_busy = slcb;
}
-#ifdef FEAT_VISUAL
else if (c == '<' || c == '>') /* start/end of visual area */
{
startp = &buf->b_visual.vi_start;
#endif
}
}
-#endif
else if (ASCII_ISLOWER(c)) /* normal named mark */
{
posp = &(buf->b_namedm[c - 'a']);
show_one_mark(']', arg, &curbuf->b_op_end, NULL, TRUE);
show_one_mark('^', arg, &curbuf->b_last_insert, NULL, TRUE);
show_one_mark('.', arg, &curbuf->b_last_change, NULL, TRUE);
-#ifdef FEAT_VISUAL
show_one_mark('<', arg, &curbuf->b_visual.vi_start, NULL, TRUE);
show_one_mark('>', arg, &curbuf->b_visual.vi_end, NULL, TRUE);
-#endif
show_one_mark(-1, arg, NULL, NULL, FALSE);
}
case '.': curbuf->b_last_change.lnum = 0; break;
case '[': curbuf->b_op_start.lnum = 0; break;
case ']': curbuf->b_op_end.lnum = 0; break;
-#ifdef FEAT_VISUAL
case '<': curbuf->b_visual.vi_start.lnum = 0; break;
case '>': curbuf->b_visual.vi_end.lnum = 0; break;
-#endif
case ' ': break;
default: EMSG2(_(e_invarg2), p);
return;
one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
#endif
-#ifdef FEAT_VISUAL
/* Visual area */
one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
-#endif
#ifdef FEAT_QUICKFIX
/* quickfix marks */
if (win->w_tagstack[i].fmark.fnum == fnum)
one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
-#ifdef FEAT_VISUAL
/* the displayed Visual area */
if (win->w_old_cursor_lnum != 0)
{
one_adjust_nodel(&(win->w_old_cursor_lnum));
one_adjust_nodel(&(win->w_old_visual_lnum));
}
-#endif
/* topline and cursor position for windows with the same buffer
* other than the current window */
col_adjust(&(curbuf->b_changelist[i]));
#endif
-#ifdef FEAT_VISUAL
/* Visual area */
col_adjust(&(curbuf->b_visual.vi_start));
col_adjust(&(curbuf->b_visual.vi_end));
-#endif
/* previous context mark */
col_adjust(&(curwin->w_pcmark));
idx = MENU_INDEX_INSERT;
else if (state & CMDLINE)
idx = MENU_INDEX_CMDLINE;
-#ifdef FEAT_VISUAL
else if (VIsual_active)
{
if (VIsual_select)
else
idx = MENU_INDEX_VISUAL;
}
-#endif
else if (state == HITRETURN || state == ASKMORE)
idx = MENU_INDEX_CMDLINE;
else if (finish_op)
static int
get_menu_mode()
{
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (VIsual_select)
return MENU_INDEX_SELECT;
return MENU_INDEX_VISUAL;
}
-#endif
if (State & INSERT)
return MENU_INDEX_INSERT;
if ((State & CMDLINE) || State == ASKMORE || State == HITRETURN)
if (virtual_op != MAYBE)
return virtual_op;
return (ve_flags == VE_ALL
-# ifdef FEAT_VISUAL
|| ((ve_flags & VE_BLOCK) && VIsual_active && VIsual_mode == Ctrl_V)
-# endif
|| ((ve_flags & VE_INSERT) && (State & INSERT)));
}
one_more = (State & INSERT)
|| restart_edit != NUL
-#ifdef FEAT_VISUAL
|| (VIsual_active && *p_sel != 'o')
-#endif
#ifdef FEAT_VIRTUALEDIT
|| ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
#endif
* - in Visual mode and 'selection' isn't "old"
* - 'virtualedit' is set */
if ((State & INSERT) || restart_edit
-#ifdef FEAT_VISUAL
|| (VIsual_active && *p_sel != 'o')
-#endif
#ifdef FEAT_VIRTUALEDIT
|| (ve_flags & VE_ONEMORE)
#endif
adjust_cursor_col()
{
if (curwin->w_cursor.col > 0
-# ifdef FEAT_VISUAL
&& (!VIsual_active || *p_sel == 'o')
-# endif
&& gchar_cursor() == NUL)
--curwin->w_cursor.col;
}
{
if (State & NORMAL)
{
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (VIsual_select)
return SELECTMODE;
return VISUAL;
}
- else
-#endif
- if (finish_op)
- return OP_PENDING;
+ else if (finish_op)
+ return OP_PENDING;
}
return State;
}
}
if (finish_op)
return SHAPE_IDX_O;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (*p_sel == 'e')
else
return SHAPE_IDX_V;
}
-#endif
return SHAPE_IDX_N;
}
#endif
win_T *old_curwin = curwin;
buf_T *old_curbuf = curbuf;
int restart_edit_save;
-# ifdef FEAT_VISUAL
int old_VIsual_select = VIsual_select;
int old_VIsual_active = VIsual_active;
-# endif
/*
* loop through the cursorbound windows
*/
-# ifdef FEAT_VISUAL
VIsual_select = VIsual_active = 0;
-# endif
for (curwin = firstwin; curwin; curwin = curwin->w_next)
{
curbuf = curwin->w_buffer;
/*
* reset current-window
*/
-# ifdef FEAT_VISUAL
VIsual_select = old_VIsual_select;
VIsual_active = old_VIsual_active;
-# endif
curwin = old_curwin;
curbuf = old_curbuf;
}
nb_set_curbuf(buf->bufp);
-#ifdef FEAT_VISUAL
/* Don't want Visual mode now. */
if (VIsual_active)
end_visual_mode();
-#endif
#ifdef NBDEBUG
s = args;
#endif
#include "vim.h"
-#ifdef FEAT_VISUAL
/*
* The Visual area is remembered for reselection.
*/
static int VIsual_mode_orig = NUL; /* saved Visual mode */
static int restart_VIsual_select = 0;
-#endif
#ifdef FEAT_EVAL
static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
static int find_command __ARGS((int cmdchar));
static void op_colon __ARGS((oparg_T *oap));
static void op_function __ARGS((oparg_T *oap));
-#if defined(FEAT_MOUSE) && defined(FEAT_VISUAL)
+#if defined(FEAT_MOUSE)
static void find_start_of_word __ARGS((pos_T *));
static void find_end_of_word __ARGS((pos_T *));
static int get_mouse_class __ARGS((char_u *p));
static int checkclearopq __ARGS((oparg_T *oap));
static void clearop __ARGS((oparg_T *oap));
static void clearopbeep __ARGS((oparg_T *oap));
-#ifdef FEAT_VISUAL
static void unshift_special __ARGS((cmdarg_T *cap));
-#endif
#ifdef FEAT_CMDL_INFO
static void del_from_showcmd __ARGS((int));
#endif
#ifdef FEAT_VREPLACE
static void nv_vreplace __ARGS((cmdarg_T *cap));
#endif
-#ifdef FEAT_VISUAL
static void v_swap_corners __ARGS((int cmdchar));
-#endif
static void nv_replace __ARGS((cmdarg_T *cap));
static void n_swapchar __ARGS((cmdarg_T *cap));
static void nv_cursormark __ARGS((cmdarg_T *cap, int flag, pos_T *pos));
-#ifdef FEAT_VISUAL
static void v_visop __ARGS((cmdarg_T *cap));
-#endif
static void nv_subst __ARGS((cmdarg_T *cap));
static void nv_abbrev __ARGS((cmdarg_T *cap));
static void nv_optrans __ARGS((cmdarg_T *cap));
static void nv_gomark __ARGS((cmdarg_T *cap));
static void nv_pcmark __ARGS((cmdarg_T *cap));
static void nv_regname __ARGS((cmdarg_T *cap));
-#ifdef FEAT_VISUAL
static void nv_visual __ARGS((cmdarg_T *cap));
static void n_start_visual_mode __ARGS((int c));
-#endif
static void nv_window __ARGS((cmdarg_T *cap));
static void nv_suspend __ARGS((cmdarg_T *cap));
static void nv_g_cmd __ARGS((cmdarg_T *cap));
static void nv_wordcmd __ARGS((cmdarg_T *cap));
static void nv_beginline __ARGS((cmdarg_T *cap));
static void adjust_cursor __ARGS((oparg_T *oap));
-#ifdef FEAT_VISUAL
static void adjust_for_sel __ARGS((cmdarg_T *cap));
static int unadjust_for_sel __ARGS((void));
static void nv_select __ARGS((cmdarg_T *cap));
-#endif
static void nv_goto __ARGS((cmdarg_T *cap));
static void nv_normal __ARGS((cmdarg_T *cap));
static void nv_esc __ARGS((cmdarg_T *oap));
{Ctrl_N, nv_down, NV_STS, FALSE},
{Ctrl_O, nv_ctrlo, 0, 0},
{Ctrl_P, nv_up, NV_STS, FALSE},
-#ifdef FEAT_VISUAL
{Ctrl_Q, nv_visual, 0, FALSE},
-#else
- {Ctrl_Q, nv_ignore, 0, 0},
-#endif
{Ctrl_R, nv_redo, 0, 0},
{Ctrl_S, nv_ignore, 0, 0},
{Ctrl_T, nv_tagpop, NV_NCW, 0},
{Ctrl_U, nv_halfpage, 0, 0},
-#ifdef FEAT_VISUAL
{Ctrl_V, nv_visual, 0, FALSE},
{'V', nv_visual, 0, FALSE},
{'v', nv_visual, 0, FALSE},
-#else
- {Ctrl_V, nv_error, 0, 0},
- {'V', nv_error, 0, 0},
- {'v', nv_error, 0, 0},
-#endif
{Ctrl_W, nv_window, 0, 0},
{Ctrl_X, nv_addsub, 0, 0},
{Ctrl_Y, nv_scroll_line, 0, FALSE},
{K_HELP, nv_help, NV_NCW, 0},
{K_F1, nv_help, NV_NCW, 0},
{K_XF1, nv_help, NV_NCW, 0},
-#ifdef FEAT_VISUAL
{K_SELECT, nv_select, 0, 0},
-#endif
#ifdef FEAT_GUI
{K_VER_SCROLLBAR, nv_ver_scrollbar, 0, 0},
{K_HOR_SCROLLBAR, nv_hor_scrollbar, 0, 0},
#ifdef FEAT_CMDL_INFO
int need_flushbuf; /* need to call out_flush() */
#endif
-#ifdef FEAT_VISUAL
pos_T old_pos; /* cursor position before command */
int mapped_len;
static int old_mapped_len = 0;
-#endif
int idx;
#ifdef FEAT_EVAL
int set_prevcount = FALSE;
}
#endif
-#ifdef FEAT_VISUAL
mapped_len = typebuf_maplen();
-#endif
State = NORMAL_BUSY;
#ifdef USE_ON_FLY_SCROLL
c = safe_vgetc();
LANGMAP_ADJUST(c, TRUE);
-#ifdef FEAT_VISUAL
/*
* If a mapping was started in Visual or Select mode, remember the length
* of the mapping. This is used below to not return to Insert mode for as
else if (old_mapped_len
|| (VIsual_active && mapped_len == 0 && typebuf_maplen() > 0))
old_mapped_len = typebuf_maplen();
-#endif
if (c == NUL)
c = K_ZERO;
-#ifdef FEAT_VISUAL
/*
* In Select mode, typed text replaces the selection.
*/
msg_nowait = TRUE; /* don't delay going to insert mode */
old_mapped_len = 0; /* do go to Insert mode */
}
-#endif
#ifdef FEAT_CMDL_INFO
need_flushbuf = add_to_showcmd(c);
#endif
getcount:
-#ifdef FEAT_VISUAL
if (!(VIsual_active && VIsual_select))
-#endif
{
/*
* Handle a count before a command and compute ca.count0.
goto normal_end;
#endif
-#ifdef FEAT_VISUAL
/*
* In Visual/Select mode, a few keys are handled in a special way.
*/
}
}
}
-#endif
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl && KeyTyped && !KeyStuffed
&& !Recording
&& !Exec_reg)
|| ((ca.cmdchar == 'a' || ca.cmdchar == 'i')
- && (oap->op_type != OP_NOP
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- ))))
+ && (oap->op_type != OP_NOP || VIsual_active))))
{
int *cp;
int repl = FALSE; /* get character for replace mode */
msg_col = 0;
}
-#ifdef FEAT_VISUAL
old_pos = curwin->w_cursor; /* remember where cursor was */
/* When 'keymodel' contains "startsel" some keys start Select/Visual
mod_mask &= ~MOD_MASK_SHIFT;
}
}
-#endif
/*
* Execute the command!
#endif
}
-#ifdef FEAT_VISUAL
/* Get the length of mapped chars again after typing a count, second
* character or "z333<cr>". */
if (old_mapped_len > 0)
old_mapped_len = typebuf_maplen();
-#endif
/*
* If an operation is pending, handle it...
if ( ((p_smd
&& msg_silent == 0
&& (restart_edit != 0
-#ifdef FEAT_VISUAL
|| (VIsual_active
&& old_pos.lnum == curwin->w_cursor.lnum
&& old_pos.col == curwin->w_cursor.col)
-#endif
)
&& (clear_cmdline
|| redraw_cmdline)
&& !msg_nowait
&& KeyTyped)
|| (restart_edit != 0
-#ifdef FEAT_VISUAL
&& !VIsual_active
-#endif
&& (msg_scroll
|| emsg_on_display)))
&& oap->regname == 0
* May switch from Visual to Select mode after CTRL-O command.
*/
if ( oap->op_type == OP_NOP
-#ifdef FEAT_VISUAL
&& ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0)
|| restart_VIsual_select == 1)
-#else
- && restart_edit != 0
-#endif
&& !(ca.retval & CA_COMMAND_BUSY)
&& stuff_empty()
&& oap->regname == 0)
{
-#ifdef FEAT_VISUAL
if (restart_VIsual_select == 1)
{
VIsual_select = TRUE;
showmode();
restart_VIsual_select = 0;
}
-#endif
- if (restart_edit != 0
-#ifdef FEAT_VISUAL
- && !VIsual_active && old_mapped_len == 0
-#endif
- )
+ if (restart_edit != 0 && !VIsual_active && old_mapped_len == 0)
(void)edit(restart_edit, FALSE, 1L);
}
-#ifdef FEAT_VISUAL
if (restart_VIsual_select == 2)
restart_VIsual_select = 1;
-#endif
/* Save count before an operator for next time. */
opcount = ca.opcount;
int empty_region_error;
int restart_edit_save;
-#ifdef FEAT_VISUAL
/* The visual area is remembered for redo */
static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
static linenr_T redo_VIsual_line_count; /* number of lines */
static colnr_T redo_VIsual_vcol; /* number of cols or end column */
static long redo_VIsual_count; /* count for Visual operator */
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
int include_line_break = FALSE;
-# endif
#endif
#if defined(FEAT_CLIPBOARD)
if ((clip_star.available || clip_plus.available)
&& oap->op_type != OP_NOP
&& !gui_yank
-# ifdef FEAT_VISUAL
&& VIsual_active
&& !redo_VIsual_busy
-# endif
&& oap->regname == 0)
clip_auto_select();
#endif
/*
* If an operation is pending, handle it...
*/
- if ((finish_op
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- ) && oap->op_type != OP_NOP)
+ if ((finish_op || VIsual_active) && oap->op_type != OP_NOP)
{
-#ifdef FEAT_VISUAL
oap->is_VIsual = VIsual_active;
if (oap->motion_force == 'V')
oap->motion_type = MLINE;
VIsual_select = FALSE;
VIsual_reselect = FALSE;
}
-#endif
/* Only redo yank when 'y' flag is in 'cpoptions'. */
/* Never redo "zf" (define fold). */
if ((vim_strchr(p_cpo, CPO_YANK) != NULL || oap->op_type != OP_YANK)
-#ifdef FEAT_VISUAL
&& ((!VIsual_active || oap->motion_force)
/* Also redo Operator-pending Visual mode mappings */
|| (VIsual_active && cap->cmdchar == ':'
&& oap->op_type != OP_COLON))
-#endif
&& cap->cmdchar != 'D'
#ifdef FEAT_FOLDING
&& oap->op_type != OP_FOLD
}
}
-#ifdef FEAT_VISUAL
if (redo_VIsual_busy)
{
/* Redo of an operation on a Visual area. Use the same size from
if (VIsual_mode == 'V')
oap->start.col = 0;
}
-#endif /* FEAT_VISUAL */
/*
* Set oap->start to the first position of the operated text, oap->end
virtual_op = virtual_active();
#endif
-#ifdef FEAT_VISUAL
if (VIsual_active || redo_VIsual_busy)
{
if (VIsual_mode == Ctrl_V) /* block mode */
{
oap->motion_type = MCHAR;
if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
&& (include_line_break || !virtual_op)
-# endif
+#endif
)
{
oap->inclusive = FALSE;
{
++oap->end.lnum;
oap->end.col = 0;
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
oap->end.coladd = 0;
-# endif
+#endif
++oap->line_count;
}
else
if (!gui_yank)
{
VIsual_active = FALSE;
-# ifdef FEAT_MOUSE
+#ifdef FEAT_MOUSE
setmouse();
mouse_dragging = 0;
-# endif
+#endif
if (mode_displayed)
clear_cmdline = TRUE; /* unshow visual mode later */
#ifdef FEAT_CMDL_INFO
redraw_curbuf_later(INVERTED);
}
}
-#endif
#ifdef FEAT_MBYTE
/* Include the trailing byte of a multi-byte char. */
empty_region_error = (oap->empty
&& vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL);
-#ifdef FEAT_VISUAL
/* Force a redraw when operating on an empty Visual region, when
* 'modifiable is off or creating a fold. */
if (oap->is_VIsual && (oap->empty || !curbuf->b_p_ma
-# ifdef FEAT_FOLDING
+#ifdef FEAT_FOLDING
|| oap->op_type == OP_FOLD
-# endif
+#endif
))
redraw_curbuf_later(INVERTED);
-#endif
/*
* If the end of an operator is in column one while oap->motion_type
&& oap->inclusive == FALSE
&& !(cap->retval & CA_NO_ADJ_OP_END)
&& oap->end.col == 0
-#ifdef FEAT_VISUAL
&& (!oap->is_VIsual || *p_sel == 'o')
&& !oap->block_mode
-#endif
&& oap->line_count > 1)
{
oap->end_adjusted = TRUE; /* remember that we did this */
{
case OP_LSHIFT:
case OP_RSHIFT:
- op_shift(oap, TRUE,
-#ifdef FEAT_VISUAL
- oap->is_VIsual ? (int)cap->count1 :
-#endif
- 1);
+ op_shift(oap, TRUE, oap->is_VIsual ? (int)cap->count1 : 1);
auto_format(FALSE, TRUE);
break;
beep_flush();
else
{
- (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE);
+ (void)do_join(oap->line_count, oap->op_type == OP_JOIN,
+ TRUE, TRUE);
auto_format(FALSE, TRUE);
}
break;
case OP_DELETE:
-#ifdef FEAT_VISUAL
VIsual_reselect = FALSE; /* don't reselect now */
-#endif
if (empty_region_error)
{
vim_beep();
break;
case OP_CHANGE:
-#ifdef FEAT_VISUAL
VIsual_reselect = FALSE; /* don't reselect now */
-#endif
if (empty_region_error)
{
vim_beep();
case OP_INSERT:
case OP_APPEND:
-#ifdef FEAT_VISUAL
VIsual_reselect = FALSE; /* don't reselect now */
-#endif
#ifdef FEAT_VISUALEXTRA
if (empty_region_error)
{
break;
case OP_REPLACE:
-#ifdef FEAT_VISUAL
VIsual_reselect = FALSE; /* don't reselect now */
-#endif
#ifdef FEAT_VISUALEXTRA
if (empty_region_error)
#endif
{
curwin->w_cursor = old_cursor;
}
-#ifdef FEAT_VISUAL
oap->block_mode = FALSE;
-#endif
clearop(oap);
}
}
oparg_T *oap;
{
stuffcharReadbuff(':');
-#ifdef FEAT_VISUAL
if (oap->is_VIsual)
stuffReadbuff((char_u *)"'<,'>");
else
-#endif
{
/*
* Make the range look nice, so it can be repeated.
pos_T save_cursor;
#endif
win_T *old_curwin = curwin;
-#ifdef FEAT_VISUAL
static pos_T orig_cursor;
colnr_T leftcol, rightcol;
pos_T end_visual;
int diff;
int old_active = VIsual_active;
int old_mode = VIsual_mode;
-#endif
int regname;
#if defined(FEAT_FOLDING)
if (!gui.in_use)
#endif
{
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (!mouse_has(MOUSE_VISUAL))
return FALSE;
}
- else
-#endif
- if (State == NORMAL && !mouse_has(MOUSE_NORMAL))
+ else if (State == NORMAL && !mouse_has(MOUSE_NORMAL))
return FALSE;
}
}
}
-#ifndef FEAT_VISUAL
- /*
- * ALT is only used for starting/extending Visual mode.
- */
- if ((mod_mask & MOD_MASK_ALT))
- return FALSE;
-#endif
-
/*
* CTRL right mouse button does CTRL-T
*/
return FALSE;
}
-#ifdef FEAT_VISUAL
/*
* If visual was active, yank the highlighted text and put it
* before the mouse pointer position.
do_always = TRUE; /* ignore 'mouse' setting next time */
return FALSE;
}
-#endif
/*
* The rest is below jump_to_mouse()
*/
{
/* First set the cursor position before showing the popup
* menu. */
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
pos_T m_pos;
}
else
jump_flags = MOUSE_MAY_STOP_VIS;
-#endif
}
if (jump_flags)
{
jump_flags = jump_to_mouse(jump_flags, NULL, which_button);
- update_curbuf(
-#ifdef FEAT_VISUAL
- VIsual_active ? INVERTED :
-#endif
- VALID);
+ update_curbuf(VIsual_active ? INVERTED : VALID);
setcursor();
out_flush(); /* Update before showing popup menu */
}
}
}
-#ifdef FEAT_VISUAL
if ((State & (NORMAL | INSERT))
&& !(mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)))
{
jump_flags |= MOUSE_MAY_VIS;
}
}
-#endif
/*
* If an operator is pending, ignore all drags and releases until the
}
#endif
-#ifdef FEAT_VISUAL
/* Set global flag that we are extending the Visual area with mouse
* dragging; temporarily minimize 'scrolloff'. */
if (VIsual_active && is_drag && p_so)
*/
else if ((State & INSERT) && VIsual_active)
stuffcharReadbuff(Ctrl_O);
-#endif
/*
* Middle mouse click: Put text before cursor.
*/
else if ((mod_mask & MOD_MASK_SHIFT))
{
- if (State & INSERT
-#ifdef FEAT_VISUAL
- || (VIsual_active && VIsual_select)
-#endif
- )
+ if ((State & INSERT) || (VIsual_active && VIsual_select))
stuffcharReadbuff(Ctrl_O);
if (which_button == MOUSE_LEFT)
stuffcharReadbuff('*');
# endif
}
#endif
-#ifdef FEAT_VISUAL
else if ((mod_mask & MOD_MASK_MULTI_CLICK) && (State & (NORMAL | INSERT))
&& mouse_has(MOUSE_VISUAL))
{
|| (VIsual_active && p_smd && msg_silent == 0
&& (!old_active || VIsual_mode != old_mode)))
redraw_cmdline = TRUE;
-#endif
return moved;
}
-#ifdef FEAT_VISUAL
/*
* Move "pos" back to the start of the word it's in.
*/
return 1;
return c;
}
-#endif /* FEAT_VISUAL */
#endif /* FEAT_MOUSE */
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Check if highlighting for visual mode is possible, give a warning message
* if not.
VIsual_reselect = FALSE;
}
}
-#endif /* FEAT_VISUAL */
#if defined(FEAT_BEVAL)
static int find_is_eval_item __ARGS((char_u *ptr, int *colp, int *nbp, int dir));
checkclearopq(oap)
oparg_T *oap;
{
- if (oap->op_type == OP_NOP
-#ifdef FEAT_VISUAL
- && !VIsual_active
-#endif
- )
+ if (oap->op_type == OP_NOP && !VIsual_active)
return FALSE;
clearopbeep(oap);
return TRUE;
beep_flush();
}
-#ifdef FEAT_VISUAL
/*
* Remove the shift modifier from a special key.
*/
}
cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask);
}
-#endif
#if defined(FEAT_CMDL_INFO) || defined(PROTO)
/*
* Routines for displaying a partly typed command
*/
-#ifdef FEAT_VISUAL /* need room for size of Visual area */
-# define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30
-#else
-# define SHOWCMD_BUFLEN SHOWCMD_COLS + 1
-#endif
+#define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30
static char_u showcmd_buf[SHOWCMD_BUFLEN];
static char_u old_showcmd_buf[SHOWCMD_BUFLEN]; /* For push_showcmd() */
static int showcmd_is_clear = TRUE;
if (!p_sc)
return;
-#ifdef FEAT_VISUAL
if (VIsual_active && !char_avail())
{
int cursor_bot = lt(VIsual, curwin->w_cursor);
showcmd_visual = TRUE;
}
else
-#endif
{
showcmd_buf[0] = NUL;
showcmd_visual = FALSE;
int want_hor;
win_T *old_curwin = curwin;
buf_T *old_curbuf = curbuf;
-#ifdef FEAT_VISUAL
int old_VIsual_select = VIsual_select;
int old_VIsual_active = VIsual_active;
-#endif
colnr_T tgt_leftcol = curwin->w_leftcol;
long topline;
long y;
/*
* loop through the scrollbound windows and scroll accordingly
*/
-#ifdef FEAT_VISUAL
VIsual_select = VIsual_active = 0;
-#endif
for (curwin = firstwin; curwin; curwin = curwin->w_next)
{
curbuf = curwin->w_buffer;
/*
* reset current-window
*/
-#ifdef FEAT_VISUAL
VIsual_select = old_VIsual_select;
VIsual_active = old_VIsual_active;
-#endif
curwin = old_curwin;
curbuf = old_curbuf;
}
if (checkclearop(cap->oap))
break;
-# ifdef FEAT_VISUAL
if (VIsual_active && get_visual_text(cap, &ptr, &len)
== FAIL)
return;
-# endif
if (ptr == NULL)
{
pos_T pos = curwin->w_cursor;
/*
* Ignore 'Q' in Visual mode, just give a beep.
*/
-#ifdef FEAT_VISUAL
if (VIsual_active)
vim_beep();
- else
-#endif
- if (!checkclearop(cap->oap))
+ else if (!checkclearop(cap->oap))
do_exmode(FALSE);
}
int old_p_im;
int cmd_result;
-#ifdef FEAT_VISUAL
if (VIsual_active)
nv_operator(cap);
else
-#endif
{
if (cap->oap->op_type != OP_NOP)
{
nv_ctrlg(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active) /* toggle Selection/Visual mode */
{
VIsual_select = !VIsual_select;
showmode();
}
- else
-#endif
- if (!checkclearop(cap->oap))
+ else if (!checkclearop(cap->oap))
/* print full name if count given or :cd used */
fileinfo((int)cap->count0, FALSE, TRUE);
}
nv_ctrlh(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active && VIsual_select)
{
cap->cmdchar = 'x'; /* BS key behaves like 'x' in Select mode */
v_visop(cap);
}
else
-#endif
nv_left(cap);
}
nv_ctrlo(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active && VIsual_select)
{
VIsual_select = FALSE;
restart_VIsual_select = 2; /* restart Select mode later */
}
else
-#endif
{
cap->count1 = -cap->count1;
nv_pcmark(cap);
*/
if (cmdchar == ']' || cmdchar == Ctrl_RSB || cmdchar == 'K')
{
-#ifdef FEAT_VISUAL
if (VIsual_active && get_visual_text(cap, &ptr, &n) == FAIL)
return;
-#endif
if (checkclearopq(cap->oap))
return;
}
vim_free(buf);
}
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Get visually selected text, within one line only.
* Returns FAIL if more than one line selected.
reset_VIsual_and_resel();
return OK;
}
-#endif
/*
* CTRL-T: backwards in tag stack
cmdarg_T *cap;
{
long n;
-#ifdef FEAT_VISUAL
- int PAST_LINE;
-#else
-# define PAST_LINE 0
-#endif
+ int past_line;
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
{
cap->oap->motion_type = MCHAR;
cap->oap->inclusive = FALSE;
-#ifdef FEAT_VISUAL
- PAST_LINE = (VIsual_active && *p_sel != 'o');
+ past_line = (VIsual_active && *p_sel != 'o');
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
/*
- * In virtual mode, there's no such thing as "PAST_LINE", as lines are
- * (theoretically) infinitely long.
+ * In virtual edit mode, there's no such thing as "past_line", as lines
+ * are (theoretically) infinitely long.
*/
if (virtual_active())
- PAST_LINE = 0;
-# endif
+ past_line = 0;
#endif
for (n = cap->count1; n > 0; --n)
{
- if ((!PAST_LINE && oneright() == FAIL)
-#ifdef FEAT_VISUAL
- || (PAST_LINE && *ml_get_cursor() == NUL)
-#endif
+ if ((!past_line && oneright() == FAIL)
+ || (past_line && *ml_get_cursor() == NUL)
)
{
/*
}
break;
}
-#ifdef FEAT_VISUAL
- else if (PAST_LINE)
+ else if (past_line)
{
curwin->w_set_curswant = TRUE;
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
if (virtual_active())
oneright();
else
-# endif
+#endif
{
-# ifdef FEAT_MBYTE
+#ifdef FEAT_MBYTE
if (has_mbyte)
curwin->w_cursor.col +=
(*mb_ptr2len)(ml_get_cursor());
else
-# endif
+#endif
++curwin->w_cursor.col;
}
}
-#endif
}
#ifdef FEAT_FOLDING
if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped
else
curwin->w_cursor.coladd = 0;
#endif
-#ifdef FEAT_VISUAL
adjust_for_sel(cap);
-#endif
#ifdef FEAT_FOLDING
if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP)
foldOpenCursor();
int dir = (cap->cmdchar == ']' && cap->nchar == 'p')
? FORWARD : BACKWARD;
int regname = cap->oap->regname;
-#ifdef FEAT_VISUAL
int was_visual = VIsual_active;
int line_count = curbuf->b_ml.ml_line_count;
pos_T start, end;
end = equalpos(start,VIsual) ? curwin->w_cursor : VIsual;
curwin->w_cursor = (dir == BACKWARD ? start : end);
}
-#endif
# ifdef FEAT_CLIPBOARD
adjust_clip_reg(®name);
# endif
prep_redo_cmd(cap);
do_put(regname, dir, cap->count1, PUT_FIXINDENT);
-#ifdef FEAT_VISUAL
if (was_visual)
{
VIsual = start;
redraw_later(SOME_VALID);
}
}
-#endif
}
}
#ifdef FEAT_VIRTUALEDIT
curwin->w_cursor.coladd = 0;
#endif
-#ifdef FEAT_VISUAL
adjust_for_sel(cap);
-#endif
}
}
#ifdef FEAT_FOLDING
nv_undo(cap)
cmdarg_T *cap;
{
- if (cap->oap->op_type == OP_LOWER
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- )
+ if (cap->oap->op_type == OP_LOWER || VIsual_active)
{
/* translate "<Visual>u" to "<Visual>gu" and "guu" to "gugu" */
cap->cmdchar = 'g';
return;
}
-#ifdef FEAT_VISUAL
/* Visual mode "r" */
if (VIsual_active)
{
nv_operator(cap);
return;
}
-#endif
#ifdef FEAT_VIRTUALEDIT
/* Break tabs, etc. */
}
}
-#ifdef FEAT_VISUAL
/*
* 'o': Exchange start and end of Visual area.
* 'O': same, but in block mode exchange left and right corners.
curwin->w_set_curswant = TRUE;
}
}
-#endif /* FEAT_VISUAL */
/*
* "R" (cap->arg is FALSE) and "gR" (cap->arg is TRUE).
nv_Replace(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active) /* "R" is replace lines */
{
cap->cmdchar = 'c';
VIsual_mode = 'V';
nv_operator(cap);
}
- else
-#endif
- if (!checkclearopq(cap->oap))
+ else if (!checkclearopq(cap->oap))
{
if (!curbuf->b_p_ma)
EMSG(_(e_modifiable));
nv_vreplace(cap)
cmdarg_T *cap;
{
-# ifdef FEAT_VISUAL
if (VIsual_active)
{
cap->cmdchar = 'r';
cap->nchar = cap->extra_char;
nv_replace(cap); /* Do same as "r" in Visual mode for now */
}
- else
-# endif
- if (!checkclearopq(cap->oap))
+ else if (!checkclearopq(cap->oap))
{
if (!curbuf->b_p_ma)
EMSG(_(e_modifiable));
curwin->w_set_curswant = TRUE;
}
-#ifdef FEAT_VISUAL
/*
* Handle commands that are operators in Visual mode.
*/
cap->cmdchar = *(vim_strchr(trans, cap->cmdchar) + 1);
nv_operator(cap);
}
-#endif
/*
* "s" and "S" commands.
nv_subst(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active) /* "vs" and "vS" are the same as "vc" */
{
if (cap->cmdchar == 'S')
nv_operator(cap);
}
else
-#endif
nv_optrans(cap);
}
if (cap->cmdchar == K_DEL || cap->cmdchar == K_KDEL)
cap->cmdchar = 'x'; /* DEL key behaves like 'x' */
-#ifdef FEAT_VISUAL
/* in Visual mode these commands are operators */
if (VIsual_active)
v_visop(cap);
else
-#endif
nv_optrans(cap);
}
clearopbeep(cap->oap);
}
-#ifdef FEAT_VISUAL
/*
* Handle "v", "V" and "CTRL-V" commands.
* Also for "gh", "gH" and "g^H" commands: Always start Select mode, cap->arg
}
}
-#endif /* FEAT_VISUAL */
/*
* CTRL-W: Window commands
cmdarg_T *cap;
{
clearop(cap->oap);
-#ifdef FEAT_VISUAL
if (VIsual_active)
end_visual_mode(); /* stop Visual mode */
-#endif
do_cmdline_cmd((char_u *)"st");
}
cmdarg_T *cap;
{
oparg_T *oap = cap->oap;
-#ifdef FEAT_VISUAL
pos_T tpos;
-#endif
int i;
int flag = FALSE;
do_cmdline_cmd((char_u *)"%s//~/&");
break;
-#ifdef FEAT_VISUAL
/*
* "gv": Reselect the previous Visual area. If Visual already active,
* exchange previous and current Visual area.
cap->arg = TRUE;
nv_visual(cap);
break;
-#endif /* FEAT_VISUAL */
/* "gn", "gN" visually select next/previous search match
* "gn" selects next match
*/
case 'N':
case 'n':
-#ifdef FEAT_VISUAL
if (!current_search(cap->count1, cap->nchar == 'n'))
-#endif
clearopbeep(oap);
break;
&& vim_iswhite(ptr[curwin->w_cursor.col]))
--curwin->w_cursor.col;
curwin->w_set_curswant = TRUE;
-#ifdef FEAT_VISUAL
adjust_for_sel(cap);
-#endif
}
break;
cmdarg_T *cap;
{
/* In Visual mode and typing "gUU" triggers an operator */
- if (cap->oap->op_type == OP_UPPER
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- )
+ if (cap->oap->op_type == OP_UPPER || VIsual_active)
{
/* translate "gUU" to "gUgU" */
cap->cmdchar = 'g';
nv_tilde(cap)
cmdarg_T *cap;
{
- if (!p_to
-#ifdef FEAT_VISUAL
- && !VIsual_active
-#endif
- && cap->oap->op_type != OP_TILDE)
+ if (!p_to && !VIsual_active && cap->oap->op_type != OP_TILDE)
n_swapchar(cap);
else
nv_operator(cap);
clearopbeep(cap->oap);
else
{
-#ifdef FEAT_VISUAL
adjust_for_sel(cap);
-#endif
#ifdef FEAT_FOLDING
if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP)
foldOpenCursor();
* - 'virtualedit' is not "all" and not "onemore".
*/
if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL
-#ifdef FEAT_VISUAL
&& (!VIsual_active || *p_sel == 'o')
-#endif
#ifdef FEAT_VIRTUALEDIT
&& !virtual_active() && (ve_flags & VE_ONEMORE) == 0
#endif
one-character line). */
}
-#ifdef FEAT_VISUAL
/*
* In exclusive Visual mode, may include the last character.
*/
if (VIsual_active && cap->oap->inclusive && *p_sel == 'e'
&& gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor))
{
-# ifdef FEAT_MBYTE
+#ifdef FEAT_MBYTE
if (has_mbyte)
inc_cursor();
else
-# endif
+#endif
++curwin->w_cursor.col;
cap->oap->inclusive = FALSE;
}
}
}
-#endif
/*
* "G", "gg", CTRL-END, CTRL-HOME.
if (cmdwin_type != 0)
cmdwin_result = Ctrl_C;
#endif
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
end_visual_mode(); /* stop Visual */
redraw_curbuf_later(INVERTED);
}
-#endif
/* CTRL-\ CTRL-G restarts Insert mode when 'insertmode' is set. */
if (cap->nchar == Ctrl_G && p_im)
restart_edit = 'a';
#ifdef FEAT_CMDWIN
&& cmdwin_type == 0
#endif
-#ifdef FEAT_VISUAL
&& !VIsual_active
-#endif
&& no_reason)
MSG(_("Type :quit<Enter> to exit Vim"));
#endif
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
end_visual_mode(); /* stop Visual */
curwin->w_set_curswant = TRUE;
redraw_curbuf_later(INVERTED);
}
- else
-#endif
- if (no_reason)
- vim_beep();
+ else if (no_reason)
+ vim_beep();
clearop(cap->oap);
/* A CTRL-C is often used at the start of a menu. When 'insertmode' is
if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS)
cap->cmdchar = 'i';
-#ifdef FEAT_VISUAL
/* in Visual mode "A" and "I" are an operator */
if (VIsual_active && (cap->cmdchar == 'A' || cap->cmdchar == 'I'))
v_visop(cap);
/* in Visual mode and after an operator "a" and "i" are for text objects */
- else
-#endif
- if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
- && (cap->oap->op_type != OP_NOP
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- ))
+ else if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
+ && (cap->oap->op_type != OP_NOP || VIsual_active))
{
#ifdef FEAT_TEXTOBJ
nv_object(cap);
nv_join(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
if (VIsual_active) /* join the visual lines */
nv_operator(cap);
- else
-#endif
- if (!checkclearop(cap->oap))
+ else if (!checkclearop(cap->oap))
{
if (cap->count0 <= 1)
cap->count0 = 2; /* default for join is two lines! */
nv_put(cap)
cmdarg_T *cap;
{
-#ifdef FEAT_VISUAL
int regname = 0;
void *reg1 = NULL, *reg2 = NULL;
int empty = FALSE;
int was_visual = FALSE;
-#endif
int dir;
int flags = 0;
if (cap->cmdchar == 'g')
flags |= PUT_CURSEND;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* Putting in Visual mode: The put text replaces the selected
*/
was_visual = TRUE;
regname = cap->oap->regname;
-# ifdef FEAT_CLIPBOARD
+#ifdef FEAT_CLIPBOARD
adjust_clip_reg(®name);
-# endif
+#endif
if (regname == 0 || regname == '"'
|| VIM_ISDIGIT(regname) || regname == '-'
-# ifdef FEAT_CLIPBOARD
+#ifdef FEAT_CLIPBOARD
|| (clip_unnamed && (regname == '*' || regname == '+'))
-# endif
+#endif
)
{
/* May have been reset in do_put(). */
VIsual_active = TRUE;
}
-#endif
do_put(cap->oap->regname, dir, cap->count1, flags);
-#ifdef FEAT_VISUAL
/* If a register was saved, put it back now. */
if (reg2 != NULL)
put_register(regname, reg2);
coladvance((colnr_T)MAXCOL);
}
}
-#endif
auto_format(FALSE, TRUE);
}
}
}
else
#endif
-#ifdef FEAT_VISUAL
if (VIsual_active) /* switch start and end of visual */
v_swap_corners(cap->cmdchar);
else
-#endif
n_opencmd(cap);
}
char_u **y_array; /* pointer to array of line pointers */
linenr_T y_size; /* number of lines in y_array */
char_u y_type; /* MLINE, MCHAR or MBLOCK */
-#ifdef FEAT_VISUAL
colnr_T y_width; /* only set if y_type == MBLOCK */
-#endif
} y_regs[NUM_REGISTERS];
static struct yankreg *y_current; /* ptr to current yankreg */
static int yank_copy_line __ARGS((struct block_def *bd, long y_idx));
#ifdef FEAT_CLIPBOARD
static void copy_yank_reg __ARGS((struct yankreg *reg));
-# if defined(FEAT_VISUAL) || defined(FEAT_EVAL)
static void may_set_selection __ARGS((void));
-# endif
#endif
static void dis_msg __ARGS((char_u *p, int skip_esc));
#if defined(FEAT_COMMENTS) || defined(PROTO)
static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
#endif
-#ifdef FEAT_VISUAL
static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
-#endif
#if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL)
static void str_to_reg __ARGS((struct yankreg *y_ptr, int type, char_u *str, long len, long blocklen));
#endif
return i;
}
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Return TRUE if operator "op" always works on whole lines.
*/
{
return opchars[op][2];
}
-#endif
/*
* Get first operator command character.
long i;
int first_char;
char_u *s;
-#ifdef FEAT_VISUAL
int block_col = 0;
-#endif
if (u_save((linenr_T)(oap->start.lnum - 1),
(linenr_T)(oap->end.lnum + 1)) == FAIL)
return;
-#ifdef FEAT_VISUAL
if (oap->block_mode)
block_col = curwin->w_cursor.col;
-#endif
for (i = oap->line_count; --i >= 0; )
{
foldOpenCursor();
#endif
-#ifdef FEAT_VISUAL
if (oap->block_mode)
{
curwin->w_cursor.lnum = oap->start.lnum;
curwin->w_cursor.col = block_col;
}
- else
-#endif
- if (curs_top) /* put cursor on first line, for ">>" */
+ else if (curs_top) /* put cursor on first line, for ">>" */
{
curwin->w_cursor.lnum = oap->start.lnum;
beginline(BL_SOL | BL_FIX); /* shift_line() may have set cursor.col */
* there is no change still need to remove the Visual highlighting. */
if (last_changed != 0)
changed_lines(first_changed, 0,
-#ifdef FEAT_VISUAL
oap->is_VIsual ? start_lnum + oap->line_count :
-#endif
last_changed + 1, 0L);
-#ifdef FEAT_VISUAL
else if (oap->is_VIsual)
redraw_curbuf_later(INVERTED);
-#endif
if (oap->line_count > p_report)
{
}
#endif
-#if defined(FEAT_VISUAL) || defined(PROTO)
/*
* Obtain the contents of a "normal" register. The register is made empty.
* The returned pointer has allocated memory, use put_register() later.
*y_current = *(struct yankreg *)reg;
vim_free(reg);
-# ifdef FEAT_CLIPBOARD
+#ifdef FEAT_CLIPBOARD
/* Send text written to clipboard register to the clipboard. */
may_set_selection();
-# endif
+#endif
}
void
vim_free(reg);
*y_current = tmp;
}
-#endif
#if defined(FEAT_MOUSE) || defined(PROTO)
/*
int n;
linenr_T lnum;
char_u *ptr;
-#ifdef FEAT_VISUAL
char_u *newp, *oldp;
struct block_def bd;
-#endif
linenr_T old_lcount = curbuf->b_ml.ml_line_count;
int did_yank = FALSE;
int orig_regname = oap->regname;
* delete linewise. Don't do this for the change command or Visual mode.
*/
if ( oap->motion_type == MCHAR
-#ifdef FEAT_VISUAL
&& !oap->is_VIsual
&& !oap->block_mode
-#endif
&& oap->line_count > 1
&& oap->motion_force == NUL
&& oap->op_type == OP_DELETE)
}
}
-#ifdef FEAT_VISUAL
/*
* block mode delete
*/
oap->end.lnum + 1, 0L);
oap->line_count = 0; /* no lines deleted */
}
- else
-#endif
- if (oap->motion_type == MLINE)
+ else if (oap->motion_type == MLINE)
{
if (oap->op_type == OP_CHANGE)
{
return FAIL;
/* if 'cpoptions' contains '$', display '$' at end of change */
- if ( vim_strchr(p_cpo, CPO_DOLLAR) != NULL
+ if ( vim_strchr(p_cpo, CPO_DOLLAR) != NULL
&& oap->op_type == OP_CHANGE
&& oap->end.lnum == curwin->w_cursor.lnum
-#ifdef FEAT_VISUAL
- && !oap->is_VIsual
-#endif
- )
+ && !oap->is_VIsual)
display_dollar(oap->end.col - !oap->inclusive);
n = oap->end.col - oap->start.col + 1 - !oap->inclusive;
}
else
{
- (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
-#ifdef FEAT_VISUAL
- && !oap->is_VIsual
-#endif
- );
+ (void)del_bytes((long)n, !virtual_op,
+ oap->op_type == OP_DELETE && !oap->is_VIsual);
}
}
else /* delete characters between lines */
{
/* delete from start of line until op_end */
curwin->w_cursor.col = 0;
- (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
-#ifdef FEAT_VISUAL
- && !oap->is_VIsual
-#endif
- );
+ (void)del_bytes((long)n, !virtual_op,
+ oap->op_type == OP_DELETE && !oap->is_VIsual);
curwin->w_cursor = curpos; /* restore curwin->w_cursor */
}
if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
#ifdef FEAT_VIRTUALEDIT
setmarks:
#endif
-#ifdef FEAT_VISUAL
if (oap->block_mode)
{
curbuf->b_op_end.lnum = oap->end.lnum;
curbuf->b_op_end.col = oap->start.col;
}
else
-#endif
curbuf->b_op_end = oap->start;
curbuf->b_op_start = oap->start;
oparg_T *oap;
{
pos_T pos;
-#ifdef FEAT_VISUAL
struct block_def bd;
-#endif
int did_change = FALSE;
if (u_save((linenr_T)(oap->start.lnum - 1),
return;
pos = oap->start;
-#ifdef FEAT_VISUAL
if (oap->block_mode) /* Visual block mode */
{
for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
one_change = swapchars(oap->op_type, &pos, bd.textlen);
did_change |= one_change;
-# ifdef FEAT_NETBEANS_INTG
+#ifdef FEAT_NETBEANS_INTG
if (netbeans_active() && one_change)
{
char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
netbeans_inserted(curbuf, pos.lnum, bd.textcol,
&ptr[bd.textcol], bd.textlen);
}
-# endif
+#endif
}
if (did_change)
changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L);
}
else /* not block mode */
-#endif
{
if (oap->motion_type == MLINE)
{
}
}
-#ifdef FEAT_VISUAL
if (!did_change && oap->is_VIsual)
/* No change: need to remove the Visual selection */
redraw_curbuf_later(INVERTED);
-#endif
/*
* Set '[ and '] marks.
if ( oap->motion_type == MCHAR
&& oap->start.col == 0
&& !oap->inclusive
-#ifdef FEAT_VISUAL
&& (!oap->is_VIsual || *p_sel == 'o')
&& !oap->block_mode
-#endif
&& oap->end.col == 0
&& yanklines > 1)
{
y_current->y_size = yanklines;
y_current->y_type = yanktype; /* set the yank register type */
-#ifdef FEAT_VISUAL
y_current->y_width = 0;
-#endif
y_current->y_array = (char_u **)lalloc_clear((long_u)(sizeof(char_u *) *
yanklines), TRUE);
y_idx = 0;
lnum = oap->start.lnum;
-#ifdef FEAT_VISUAL
if (oap->block_mode)
{
/* Visual block mode */
if (curwin->w_curswant == MAXCOL && y_current->y_width > 0)
y_current->y_width--;
}
-#endif
for ( ; lnum <= yankendlnum; lnum++, y_idx++)
{
switch (y_current->y_type)
{
-#ifdef FEAT_VISUAL
case MBLOCK:
block_prep(oap, &bd, lnum, FALSE);
if (yank_copy_line(&bd, y_idx) == FAIL)
goto fail;
break;
-#endif
case MLINE:
if ((y_current->y_array[y_idx] =
if (mess) /* Display message about yank? */
{
if (yanktype == MCHAR
-#ifdef FEAT_VISUAL
&& !oap->block_mode
-#endif
&& yanklines == 1)
yanklines = 0;
/* Some versions of Vi use ">=" here, some don't... */
update_topline_redraw();
if (yanklines == 1)
{
-#ifdef FEAT_VISUAL
if (oap->block_mode)
MSG(_("block of 1 line yanked"));
else
-#endif
MSG(_("1 line yanked"));
}
-#ifdef FEAT_VISUAL
else if (oap->block_mode)
smsg((char_u *)_("block of %ld lines yanked"), yanklines);
-#endif
else
smsg((char_u *)_("%ld lines yanked"), yanklines);
}
*/
curbuf->b_op_start = oap->start;
curbuf->b_op_end = oap->end;
- if (yanktype == MLINE
-#ifdef FEAT_VISUAL
- && !oap->block_mode
-#endif
- )
+ if (yanktype == MLINE && !oap->block_mode)
{
curbuf->b_op_start.col = 0;
curbuf->b_op_end.col = MAXCOL;
long i; /* index in y_array[] */
int y_type;
long y_size;
-#ifdef FEAT_VISUAL
int oldlen;
long y_width = 0;
colnr_T vcol;
int incr = 0;
long j;
struct block_def bd;
-#endif
char_u **y_array = NULL;
long nr_lines = 0;
pos_T new_cursor;
get_yank_register(regname, FALSE);
y_type = y_current->y_type;
-#ifdef FEAT_VISUAL
y_width = y_current->y_width;
-#endif
y_size = y_current->y_size;
y_array = y_current->y_array;
}
-#ifdef FEAT_VISUAL
if (y_type == MLINE)
{
if (flags & PUT_LINE_SPLIT)
curbuf->b_op_start = curwin->w_cursor; /* default for '[ mark */
curbuf->b_op_end = curwin->w_cursor; /* default for '] mark */
}
-#endif
if (flags & PUT_LINE) /* :put command or "p" in Visual line mode. */
y_type = MLINE;
goto end;
}
-#ifdef FEAT_VISUAL
if (y_type == MBLOCK)
{
lnum = curwin->w_cursor.lnum + y_size + 1;
if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL)
goto end;
}
- else
-#endif
- if (y_type == MLINE)
+ else if (y_type == MLINE)
{
lnum = curwin->w_cursor.lnum;
#ifdef FEAT_FOLDING
lnum = curwin->w_cursor.lnum;
col = curwin->w_cursor.col;
-#ifdef FEAT_VISUAL
/*
* Block mode
*/
curwin->w_cursor.lnum = lnum;
}
else
-#endif
{
/*
* Character or Line mode
curwin->w_cursor.col += (colnr_T)(totlen - 1);
}
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
lnum++;
-#endif
- } while (
-#ifdef FEAT_VISUAL
- VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum
-#else
- FALSE /* stop after 1 paste */
-#endif
- );
+ } while (VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum);
curbuf->b_op_end = curwin->w_cursor;
/* For "CTRL-O p" in Insert mode, put cursor after last char */
if (regname == '=')
vim_free(y_array);
-#ifdef FEAT_VISUAL
VIsual_active = FALSE;
-#endif
/* If the cursor is past the end of the line put it at the end. */
adjust_cursor_eol();
return;
curwin->w_cursor = oap->start;
-#ifdef FEAT_VISUAL
if (oap->is_VIsual)
/* When there is no change: need to remove the Visual selection */
redraw_curbuf_later(INVERTED);
-#endif
/* Set '[ mark at the start of the formatted area */
curbuf->b_op_start = oap->start;
saved_cursor.lnum = 0;
}
-#ifdef FEAT_VISUAL
if (oap->is_VIsual)
{
win_T *wp;
}
}
}
-#endif
}
#if defined(FEAT_EVAL) || defined(PROTO)
op_formatexpr(oap)
oparg_T *oap;
{
-# ifdef FEAT_VISUAL
if (oap->is_VIsual)
/* When there is no change: need to remove the Visual selection */
redraw_curbuf_later(INVERTED);
-# endif
if (fex_format(oap->start.lnum, oap->line_count, NUL) != 0)
/* As documented: when 'formatexpr' returns non-zero fall back to
return FALSE;
}
-#ifdef FEAT_VISUAL
/*
* prepare a few things for block mode yank/delete/tilde
*
bdp->textcol = (colnr_T) (pstart - line);
bdp->textstart = pstart;
}
-#endif /* FEAT_VISUAL */
#ifdef FEAT_RIGHTLEFT
static void reverse_line __ARGS((char_u *s));
str = skipwhite(skiptowhite(str));
if (STRNCMP(str, "CHAR", 4) == 0)
y_current->y_type = MCHAR;
-#ifdef FEAT_VISUAL
else if (STRNCMP(str, "BLOCK", 5) == 0)
y_current->y_type = MBLOCK;
-#endif
else
y_current->y_type = MLINE;
/* get the block width; if it's missing we get a zero, which is OK */
str = skipwhite(skiptowhite(str));
-#ifdef FEAT_VISUAL
y_current->y_width = getdigits(&str);
-#else
- (void)getdigits(&str);
-#endif
}
while (!(eof = viminfo_readline(virp))
case MCHAR:
type = (char_u *)"CHAR";
break;
-#ifdef FEAT_VISUAL
case MBLOCK:
type = (char_u *)"BLOCK";
break;
-#endif
default:
sprintf((char *)IObuff, _("E574: Unknown register type %d"),
y_regs[i].y_type);
fprintf(fp, "\"%c", c);
if (c == execreg_lastc)
fprintf(fp, "@");
- fprintf(fp, "\t%s\t%d\n", type,
-#ifdef FEAT_VISUAL
- (int)y_regs[i].y_width
-#else
- 0
-#endif
- );
+ fprintf(fp, "\t%s\t%d\n", type, (int)y_regs[i].y_width);
/* If max_num_lines < 0, then we save ALL the lines in the register */
if (max_num_lines > 0 && num_lines > max_num_lines)
{
struct yankreg *old_y_previous, *old_y_current;
pos_T old_cursor;
-#ifdef FEAT_VISUAL
pos_T old_visual;
int old_visual_mode;
-#endif
colnr_T old_curswant;
int old_set_curswant;
pos_T old_op_start, old_op_end;
old_set_curswant = curwin->w_set_curswant;
old_op_start = curbuf->b_op_start;
old_op_end = curbuf->b_op_end;
-#ifdef FEAT_VISUAL
old_visual = VIsual;
old_visual_mode = VIsual_mode;
-#endif
clear_oparg(&oa);
oa.regname = (cbd == &clip_plus ? '+' : '*');
oa.op_type = OP_YANK;
curwin->w_set_curswant = old_set_curswant;
curbuf->b_op_start = old_op_start;
curbuf->b_op_end = old_op_end;
-#ifdef FEAT_VISUAL
VIsual = old_visual;
VIsual_mode = old_visual_mode;
-#endif
}
else
{
}
-# if defined(FEAT_VISUAL) || defined(FEAT_EVAL)
/*
* If we have written to a clipboard register, send the text to the clipboard.
*/
clip_gen_set_selection(&clip_plus);
}
}
-# endif
#endif /* FEAT_CLIPBOARD || PROTO */
if (y_current->y_array != NULL)
{
-#ifdef FEAT_VISUAL
if (reglen != NULL && y_current->y_type == MBLOCK)
*reglen = y_current->y_width;
-#endif
return y_current->y_type;
}
return MAUTO;
get_yank_register(name, TRUE);
if (!y_append && !must_append)
free_yank_all();
-#ifndef FEAT_VISUAL
- /* Just in case - make sure we don't use MBLOCK */
- if (yank_type == MBLOCK)
- yank_type = MAUTO;
-#endif
str_to_reg(y_current, yank_type, str, len, block_len);
# ifdef FEAT_CLIPBOARD
int append = FALSE; /* append to last line in register */
char_u *s;
char_u **pp;
-#ifdef FEAT_VISUAL
long maxlen;
-#endif
if (y_ptr->y_array == NULL) /* NULL means empty register */
y_ptr->y_size = 0;
pp[lnum] = y_ptr->y_array[lnum];
vim_free(y_ptr->y_array);
y_ptr->y_array = pp;
-#ifdef FEAT_VISUAL
maxlen = 0;
-#endif
/*
* Find the end of each line and save it into the array.
if (str[i] == '\n')
break;
i -= start; /* i is now length of line */
-#ifdef FEAT_VISUAL
if (i > maxlen)
maxlen = i;
-#endif
if (append)
{
--lnum;
}
y_ptr->y_type = type;
y_ptr->y_size = lnum;
-# ifdef FEAT_VISUAL
if (type == MBLOCK)
y_ptr->y_width = (blocklen < 0 ? maxlen - 1 : blocklen);
else
y_ptr->y_width = 0;
-# endif
}
#endif /* FEAT_CLIPBOARD || FEAT_EVAL || PROTO */
long word_count_cursor = 0;
int eol_size;
long last_check = 100000L;
-#ifdef FEAT_VISUAL
long line_count_selected = 0;
pos_T min_pos, max_pos;
oparg_T oparg;
struct block_def bd;
-#endif
/*
* Compute the length of the file in characters.
else
eol_size = 1;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (lt(VIsual, curwin->w_cursor))
}
line_count_selected = max_pos.lnum - min_pos.lnum + 1;
}
-#endif
for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
{
last_check = byte_count + 100000L;
}
-#ifdef FEAT_VISUAL
/* Do extra processing for VIsual mode. */
if (VIsual_active
&& lnum >= min_pos.lnum && lnum <= max_pos.lnum)
switch (VIsual_mode)
{
case Ctrl_V:
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
virtual_op = virtual_active();
-# endif
+#endif
block_prep(&oparg, &bd, lnum, 0);
-# ifdef FEAT_VIRTUALEDIT
+#ifdef FEAT_VIRTUALEDIT
virtual_op = MAYBE;
-# endif
+#endif
s = bd.textstart;
len = (long)bd.textlen;
break;
}
}
else
-#endif
{
/* In non-visual mode, check for the line the cursor is on */
if (lnum == curwin->w_cursor.lnum)
if (!curbuf->b_p_eol && curbuf->b_p_bin)
byte_count -= eol_size;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (VIsual_mode == Ctrl_V && curwin->w_curswant < MAXCOL)
byte_count_cursor, byte_count);
}
else
-#endif
{
p = ml_get_curline();
validate_virtcol();
#endif
SCRIPTID_INIT},
{"keymodel", "km", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
-#ifdef FEAT_VISUAL
(char_u *)&p_km, PV_NONE,
-#else
- (char_u *)NULL, PV_NONE,
-#endif
{(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
{"keywordprg", "kp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
(char_u *)&p_kp, PV_KP,
(char_u *)&p_secure, PV_NONE,
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
{"selection", "sel", P_STRING|P_VI_DEF,
-#ifdef FEAT_VISUAL
(char_u *)&p_sel, PV_NONE,
-#else
- (char_u *)NULL, PV_NONE,
-#endif
{(char_u *)"inclusive", (char_u *)0L}
SCRIPTID_INIT},
{"selectmode", "slm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
-#ifdef FEAT_VISUAL
(char_u *)&p_slm, PV_NONE,
-#else
- (char_u *)NULL, PV_NONE,
-#endif
{(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
{"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
#ifdef FEAT_SESSION
static char *(p_wak_values[]) = {"yes", "menu", "no", NULL};
#endif
static char *(p_mousem_values[]) = {"extend", "popup", "popup_setpos", "mac", NULL};
-#ifdef FEAT_VISUAL
static char *(p_sel_values[]) = {"inclusive", "exclusive", "old", NULL};
static char *(p_slm_values[]) = {"mouse", "key", "cmd", NULL};
-#endif
-#ifdef FEAT_VISUAL
static char *(p_km_values[]) = {"startsel", "stopsel", NULL};
-#endif
#ifdef FEAT_BROWSE
static char *(p_bsdir_values[]) = {"current", "last", "buffer", NULL};
#endif
}
#endif
-#ifdef FEAT_VISUAL
/* 'selection' */
else if (varp == &p_sel)
{
if (check_opt_strings(p_slm, p_slm_values, TRUE) != OK)
errmsg = e_invarg;
}
-#endif
#ifdef FEAT_BROWSE
/* 'browsedir' */
}
#endif
-#ifdef FEAT_VISUAL
/* 'keymodel' */
else if (varp == &p_km)
{
km_startsel = (vim_strchr(p_km, 'a') != NULL);
}
}
-#endif
/* 'mousemodel' */
else if (varp == &p_mousem)
EXTERN char_u *p_isp; /* 'isprint' */
EXTERN int p_js; /* 'joinspaces' */
EXTERN char_u *p_kp; /* 'keywordprg' */
-#ifdef FEAT_VISUAL
EXTERN char_u *p_km; /* 'keymodel' */
-#endif
#ifdef FEAT_LANGMAP
EXTERN char_u *p_langmap; /* 'langmap'*/
#endif
#endif
EXTERN char_u *p_sections; /* 'sections' */
EXTERN int p_secure; /* 'secure' */
-#ifdef FEAT_VISUAL
EXTERN char_u *p_sel; /* 'selection' */
EXTERN char_u *p_slm; /* 'selectmode' */
-#endif
#ifdef FEAT_SESSION
EXTERN char_u *p_ssop; /* 'sessionoptions' */
EXTERN unsigned ssop_flags;
default:
case 'L': type = MLINE; break;
case 'C': type = MCHAR; break;
-#ifdef FEAT_VISUAL
case 'B': type = MBLOCK; break;
-#endif
}
}
default:
case MLINE: clip_sel_type = "L"; break;
case MCHAR: clip_sel_type = "C"; break;
-#ifdef FEAT_VISUAL
case MBLOCK: clip_sel_type = "B"; break;
-#endif
}
movedata(
default: /* fallthrough to line type */
case 'L': type = MLINE; break;
case 'C': type = MCHAR; break;
-#ifdef FEAT_VISUAL
case 'B': type = MBLOCK; break;
-#endif
}
is_type_set = TRUE;
}
default: /* fallthrough to MLINE */
case MLINE: *vim_clip = 'L'; break;
case MCHAR: *vim_clip = 'C'; break;
-#ifdef FEAT_VISUAL
case MBLOCK: *vim_clip = 'B'; break;
-#endif
}
vim_strncpy(text_clip, str, len);
#endif
#define USE_FNAME_CASE /* adjust case of file names */
-#if !defined(FEAT_CLIPBOARD) && defined(FEAT_VISUAL) && defined(FEAT_MOUSE)
+#if !defined(FEAT_CLIPBOARD) && defined(FEAT_MOUSE)
# define FEAT_CLIPBOARD /* include clipboard support */
#endif
#if defined(__DATE__) && defined(__TIME__)
else
height = QF_WINHEIGHT;
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
#endif
- (*mb_head_off)(regline, reginput - 1), reg_buf);
return -1;
}
-
#endif
-#ifdef FEAT_VISUAL
+
static int reg_match_visual __ARGS((void));
/*
}
return TRUE;
}
-#endif
#define ADVANCE_REGINPUT() mb_ptr_adv(reginput)
break;
case RE_VISUAL:
-#ifdef FEAT_VISUAL
if (!reg_match_visual())
-#endif
status = RA_NOMATCH;
break;
break;
case NFA_VISUAL:
-#ifdef FEAT_VISUAL
result = reg_match_visual();
if (result)
{
add_here = TRUE;
add_state = t->state->out;
}
-#endif
break;
case NFA_MOPEN1:
#endif
}
-#if defined(FEAT_RUBY) || defined(FEAT_PERL) || defined(FEAT_VISUAL) || \
- (defined(FEAT_CLIPBOARD) && defined(FEAT_X11)) || defined(PROTO)
/*
* update all windows that are editing the current buffer
*/
redraw_curbuf_later(type);
update_screen(type);
}
-#endif
/*
* update_screen()
&& curwin->w_botfill == curwin->w_old_botfill
#endif
&& curwin->w_topline == curwin->w_lines[0].wl_lnum)
-#ifdef FEAT_VISUAL
|| (type == INVERTED
&& VIsual_active
&& curwin->w_old_cursor_lnum == curwin->w_cursor.lnum
&& curwin->w_old_visual_mode == VIsual_mode
&& (curwin->w_valid & VALID_VIRTCOL)
&& curwin->w_old_curswant == curwin->w_curswant)
-#endif
))
curwin->w_redr_type = type;
updating. 0 when no mid area updating. */
int bot_start = 999;/* first row of the bot area that needs
updating. 999 when no bot area updating */
-#ifdef FEAT_VISUAL
int scrolled_down = FALSE; /* TRUE when scrolled down when
w_topline got smaller a bit */
-#endif
#ifdef FEAT_SEARCH_EXTRA
matchitem_T *cur; /* points to the match list */
int top_to_mod = FALSE; /* redraw above mod_top */
/* Need to update rows that are new, stop at the
* first one that scrolled down. */
top_end = i;
-#ifdef FEAT_VISUAL
scrolled_down = TRUE;
-#endif
/* Move the entries that were scrolled, disable
* the entries for the lines to be redrawn. */
type = NOT_VALID;
}
-#ifdef FEAT_VISUAL
/* check if we are updating or removing the inverted part */
if ((VIsual_active && buf == curwin->w_buffer)
|| (wp->w_old_cursor_lnum != 0 && type != NOT_VALID))
wp->w_old_visual_lnum = 0;
wp->w_old_visual_col = 0;
}
-#endif /* FEAT_VISUAL */
#if defined(FEAT_SYN_HL) || defined(FEAT_SEARCH_EXTRA)
/* reset got_int, otherwise regexp won't work */
* 6. set highlighting for the Visual area an other text.
* If all folded lines are in the Visual area, highlight the line.
*/
-#ifdef FEAT_VISUAL
if (VIsual_active && wp->w_buffer == curwin->w_buffer)
{
if (ltoreq(curwin->w_cursor, VIsual))
}
}
}
-#endif
#ifdef FEAT_SYN_HL
/* Show 'cursorcolumn' in the fold line. */
int fromcol, tocol; /* start/end of inverting */
int fromcol_prev = -2; /* start of inverting after cursor */
int noinvcur = FALSE; /* don't invert the cursor */
-#ifdef FEAT_VISUAL
pos_T *top, *bot;
int lnum_in_visual_area = FALSE;
-#endif
pos_T pos;
long v;
*/
fromcol = -10;
tocol = MAXCOL;
-#ifdef FEAT_VISUAL
if (VIsual_active && wp->w_buffer == curwin->w_buffer)
{
/* Visual is after curwin->w_cursor */
/*
* handle 'incsearch' and ":s///c" highlighting
*/
- else
-#endif /* FEAT_VISUAL */
- if (highlight_match
+ else if (highlight_match
&& wp == curwin
&& lnum >= curwin->w_cursor.lnum
&& lnum <= curwin->w_cursor.lnum + search_match_lines)
mb_ptr_adv(ptr);
}
-#if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
/* When:
* - 'cuc' is set, or
* - 'colorcolumn' is set, or
* the end of the line may be before the start of the displayed part.
*/
if (vcol < v && (
-# ifdef FEAT_SYN_HL
- wp->w_p_cuc
- || draw_color_col
-# if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
- ||
-# endif
-# endif
-# ifdef FEAT_VIRTUALEDIT
- virtual_active()
-# ifdef FEAT_VISUAL
- ||
-# endif
-# endif
-# ifdef FEAT_VISUAL
- (VIsual_active && wp->w_buffer == curwin->w_buffer)
-# endif
- ))
+#ifdef FEAT_SYN_HL
+ wp->w_p_cuc || draw_color_col ||
+#endif
+#ifdef FEAT_VIRTUALEDIT
+ virtual_active() ||
+#endif
+ (VIsual_active && wp->w_buffer == curwin->w_buffer)))
{
vcol = v;
}
-#endif
/* Handle a character that's not completely on the screen: Put ptr at
* that character but skip the first few screen characters. */
&& ((wp->w_p_list && lcs_eol > 0)
|| ((fromcol >= 0 || fromcol_prev >= 0)
&& tocol > vcol
-#ifdef FEAT_VISUAL
&& VIsual_mode != Ctrl_V
-#endif
&& (
# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? (col >= 0) :
#endif
if (lcs_eol == lcs_eol_one
&& ((area_attr != 0 && vcol == fromcol
-#ifdef FEAT_VISUAL
&& (VIsual_mode != Ctrl_V
|| lnum == VIsual.lnum
|| lnum == curwin->w_cursor.lnum)
-#endif
&& c == NUL)
#ifdef FEAT_SEARCH_EXTRA
/* highlight 'hlsearch' match at end of line */
do_mode = ((p_smd && msg_silent == 0)
&& ((State & INSERT)
|| restart_edit
-#ifdef FEAT_VISUAL
- || VIsual_active
-#endif
- ));
+ || VIsual_active));
if (do_mode || Recording)
{
/*
if ((State & INSERT) && p_paste)
MSG_PUTS_ATTR(_(" (paste)"), attr);
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
char *p;
}
MSG_PUTS_ATTR(_(p), attr);
}
-#endif
MSG_PUTS_ATTR(" --", attr);
}
msg_clr_cmdline();
#ifdef FEAT_CMDL_INFO
-# ifdef FEAT_VISUAL
/* In Visual mode the size of the selected area must be redrawn. */
if (VIsual_active)
clear_showcmd();
-# endif
/* If the last window has no status line, the ruler is after the mode
* message and must be redrawn */
#endif
/*
- * lowest level search function.
+ * Lowest level search function.
* Search for 'count'th occurrence of pattern 'pat' in direction 'dir'.
* Start at position 'pos' and return the found position in 'pos'.
*
cls_bigword = bigword;
clearpos(&start_pos);
-#ifdef FEAT_VISUAL
/* Correct cursor when 'selection' is exclusive */
if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
dec_cursor();
* character, select the word and/or white space under the cursor.
*/
if (!VIsual_active || equalpos(curwin->w_cursor, VIsual))
-#endif
{
/*
* Go to start of current word or white space.
include_white = TRUE;
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* should do something when inclusive == FALSE ! */
redraw_curbuf_later(INVERTED); /* update the inversion */
}
else
-#endif
{
oap->start = start_pos;
oap->motion_type = MCHAR;
while (count > 0)
{
inclusive = TRUE;
-#ifdef FEAT_VISUAL
if (VIsual_active && lt(curwin->w_cursor, VIsual))
{
/*
}
}
else
-#endif
{
/*
* Move cursor forward one word and/or white area.
back_in_line();
if (cls() == 0 && curwin->w_cursor.col > 0)
{
-#ifdef FEAT_VISUAL
if (VIsual_active)
VIsual = curwin->w_cursor;
else
-#endif
oap->start = curwin->w_cursor;
}
}
curwin->w_cursor = pos; /* put cursor back at end */
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (*p_sel == 'e' && inclusive && ltoreq(VIsual, curwin->w_cursor))
}
}
else
-#endif
oap->inclusive = inclusive;
return OK;
pos = start_pos;
findsent(FORWARD, 1L); /* Find start of next sentence. */
-#ifdef FEAT_VISUAL
/*
* When the Visual area is bigger than one character: Extend it.
*/
}
return OK;
}
-#endif
/*
* If the cursor started on a blank, check if it is just before the start
find_first_blank(&start_pos);
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* Avoid getting stuck with "is" on a single space before a sentence. */
redraw_curbuf_later(INVERTED); /* update the inversion */
}
else
-#endif
{
/* include a newline after the sentence, if there is one */
if (incl(&curwin->w_cursor) == -1)
/*
* If we start on '(', '{', ')', '}', etc., use the whole block inclusive.
*/
-#ifdef FEAT_VISUAL
if (!VIsual_active || equalpos(VIsual, curwin->w_cursor))
-#endif
{
setpcmark();
if (what == '{') /* ignore indent */
/* cursor on '(' or '{', move cursor just after it */
++curwin->w_cursor.col;
}
-#ifdef FEAT_VISUAL
else if (lt(VIsual, curwin->w_cursor))
{
old_start = VIsual;
}
else
old_end = VIsual;
-#endif
/*
* Search backwards for unclosed '(', '{', etc..
if (decl(&curwin->w_cursor) != 0)
break;
}
-#ifdef FEAT_VISUAL
/*
* In Visual mode, when the resulting area is not bigger than what we
* started with, extend it to the next block, and then exclude again.
curwin->w_cursor = *end_pos;
}
else
-#endif
break;
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (*p_sel == 'e')
showmode();
}
else
-#endif
{
oap->start = start_pos;
oap->motion_type = MCHAR;
old_pos = curwin->w_cursor;
old_end = curwin->w_cursor; /* remember where we started */
old_start = old_end;
-#ifdef FEAT_VISUAL
if (!VIsual_active || *p_sel == 'e')
-#endif
decl(&old_end); /* old_end is inclusive */
/*
* If we start on "<aaa>" select that block.
*/
-#ifdef FEAT_VISUAL
if (!VIsual_active || equalpos(VIsual, curwin->w_cursor))
-#endif
{
setpcmark();
old_end = curwin->w_cursor;
}
}
-#ifdef FEAT_VISUAL
else if (lt(VIsual, curwin->w_cursor))
{
old_start = VIsual;
}
else
old_end = VIsual;
-#endif
again:
/*
}
}
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* If the end is before the start there is no text between tags, select
showmode();
}
else
-#endif
{
oap->start = start_pos;
oap->motion_type = MCHAR;
start_lnum = curwin->w_cursor.lnum;
-#ifdef FEAT_VISUAL
/*
* When visual area is more than one line: extend it.
*/
curwin->w_cursor.col = 0;
return retval;
}
-#endif
/*
* First move back to the start_lnum of the paragraph or white lines
while (start_lnum > 1 && linewhite(start_lnum - 1))
--start_lnum;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* Problem: when doing "Vipipip" nothing happens in a single white
showmode();
}
else
-#endif
{
oap->start.lnum = start_lnum;
oap->start.col = 0;
int col_end;
int col_start = curwin->w_cursor.col;
int inclusive = FALSE;
-#ifdef FEAT_VISUAL
int vis_empty = TRUE; /* Visual selection <= 1 char */
int vis_bef_curs = FALSE; /* Visual starts before cursor */
int inside_quotes = FALSE; /* Looks like "i'" done before */
}
}
else
-#endif
- if (line[col_start] == quotechar
-#ifdef FEAT_VISUAL
- || !vis_empty
-#endif
- )
+ if (line[col_start] == quotechar || !vis_empty)
{
int first_col = col_start;
-#ifdef FEAT_VISUAL
if (!vis_empty)
{
if (vis_bef_curs)
else
first_col = find_prev_quote(line, col_start, quotechar, NULL);
}
-#endif
+
/* The cursor is on a quote, we don't know if it's the opening or
* closing quote. Search from the start of the line to find out.
* Also do this when there is a Visual area, a' may leave the cursor
/* Set start position. After vi" another i" must include the ".
* For v2i" include the quotes. */
- if (!include && count < 2
-#ifdef FEAT_VISUAL
- && (vis_empty || !inside_quotes)
-#endif
- )
+ if (!include && count < 2 && (vis_empty || !inside_quotes))
++col_start;
curwin->w_cursor.col = col_start;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* Set the start of the Visual area when the Visual area was empty, we
}
}
else
-#endif
{
oap->start = curwin->w_cursor;
oap->motion_type = MCHAR;
/* Set end position. */
curwin->w_cursor.col = col_end;
- if ((include || count > 1
-#ifdef FEAT_VISUAL
- /* After vi" another i" must include the ". */
+ if ((include || count > 1 /* After vi" another i" must include the ". */
|| (!vis_empty && inside_quotes)
-#endif
) && inc_cursor() == 2)
inclusive = TRUE;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
if (vis_empty || vis_bef_curs)
}
}
else
-#endif
{
/* Set inclusive and other oap's flags. */
oap->inclusive = inclusive;
#endif /* FEAT_TEXTOBJ */
-#if defined(FEAT_VISUAL) || defined(PROTO)
static int is_one_char __ARGS((char_u *pattern));
/*
vim_regfree(regmatch.regprog);
return result;
}
-#endif /* FEAT_VISUAL */
#if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
|| defined(PROTO)
if (no_spell_checking(curwin))
return;
-#ifdef FEAT_VISUAL
if (VIsual_active)
{
/* Use the Visually selected text as the bad word. But reject
++badlen;
end_visual_mode();
}
- else
-#endif
- /* Find the start of the badly spelled word. */
- if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0
+ /* Find the start of the badly spelled word. */
+ else if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0
|| curwin->w_cursor.col > prev_cursor.col)
{
/* No bad word or it starts after the cursor: use the word under the
#endif
int uh_flags; /* see below */
pos_T uh_namedm[NMARKS]; /* marks before undo/after redo */
-#ifdef FEAT_VISUAL
visualinfo_T uh_visual; /* Visual areas before undo/after redo */
-#endif
time_t uh_time; /* timestamp when the change was made */
long uh_save_nr; /* set when the file was saved after the
changes in this block */
pos_T b_namedm[NMARKS]; /* current named marks (mark.c) */
-#ifdef FEAT_VISUAL
/* These variables are set when VIsual_active becomes FALSE */
visualinfo_T b_visual;
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */
-# endif
#endif
pos_T b_last_cursor; /* cursor position when last unloading this
time through cursupdate() to the
current virtual column */
-#ifdef FEAT_VISUAL
/*
* the next six are used to update the visual part
*/
linenr_T w_old_visual_lnum; /* last known start of visual part */
colnr_T w_old_visual_col; /* last known start of visual part */
colnr_T w_old_curswant; /* last known value of Curswant */
-#endif
/*
* "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
(inclusive) */
int empty; /* op_start and op_end the same (only used by
do_change()) */
-#ifdef FEAT_VISUAL
int is_VIsual; /* operator on Visual area */
int block_mode; /* current operator is Visual block mode */
-#endif
colnr_T start_vcol; /* start col for block mode operator */
colnr_T end_vcol; /* end col for block mode operator */
#ifdef FEAT_AUTOCMD
CENT("SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue",
"SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue"),
#endif
-#ifdef FEAT_VISUAL
CENT("Visual term=reverse",
"Visual term=reverse guibg=LightGrey"),
-#endif
#ifdef FEAT_DIFF
CENT("DiffAdd term=bold ctermbg=LightBlue",
"DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"),
CENT("SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan",
"SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan"),
#endif
-#ifdef FEAT_VISUAL
CENT("Visual term=reverse",
"Visual term=reverse guibg=DarkGrey"),
-#endif
#ifdef FEAT_DIFF
CENT("DiffAdd term=bold ctermbg=DarkBlue",
"DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"),
return;
}
-# ifdef FEAT_VISUAL
if (VIsual_active)
checkfor = MOUSE_VISUAL;
- else
-# endif
- if (State == HITRETURN || State == ASKMORE || State == SETWSIZE)
+ else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE)
checkfor = MOUSE_RETURN;
else if (State & INSERT)
checkfor = MOUSE_INSERT;
if (on_sep_line)
return IN_SEP_LINE;
#endif
-#ifdef FEAT_VISUAL
if (flags & MOUSE_MAY_STOP_VIS)
{
end_visual_mode();
redraw_curbuf_later(INVERTED); /* delete the inversion */
}
-#endif
#if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD)
/* Continue a modeless selection in another window. */
if (cmdwin_type != 0 && row < W_WINROW(curwin))
}
#endif
-#ifdef FEAT_VISUAL
/* Before jumping to another buffer, or moving the cursor for a left
* click, stop Visual mode. */
if (VIsual_active
&& (wp->w_buffer != curwin->w_buffer
|| (!on_status_line
-# ifdef FEAT_VERTSPLIT
+#ifdef FEAT_VERTSPLIT
&& !on_sep_line
-# endif
-# ifdef FEAT_FOLDING
+#endif
+#ifdef FEAT_FOLDING
&& (
-# ifdef FEAT_RIGHTLEFT
+# ifdef FEAT_RIGHTLEFT
wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc :
-# endif
+# endif
col >= wp->w_p_fdc
-# ifdef FEAT_CMDWIN
+# ifdef FEAT_CMDWIN
+ (cmdwin_type == 0 && wp == curwin ? 0 : 1)
-# endif
- )
# endif
+ )
+#endif
&& (flags & MOUSE_MAY_STOP_VIS))))
{
end_visual_mode();
redraw_curbuf_later(INVERTED); /* delete the inversion */
}
-#endif
#ifdef FEAT_CMDWIN
if (cmdwin_type != 0 && wp != curwin)
{
#endif
else /* keep_window_focus must be TRUE */
{
-#ifdef FEAT_VISUAL
/* before moving the cursor for a left click, stop Visual mode */
if (flags & MOUSE_MAY_STOP_VIS)
{
end_visual_mode();
redraw_curbuf_later(INVERTED); /* delete the inversion */
}
-#endif
#if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD)
/* Continue a modeless selection in another window. */
if (mouse_comp_pos(curwin, &row, &col, &curwin->w_cursor.lnum))
mouse_past_bottom = TRUE;
-#ifdef FEAT_VISUAL
/* Start Visual mode before coladvance(), for when 'sel' != "old" */
if ((flags & MOUSE_MAY_VIS) && !VIsual_active)
{
if (p_smd && msg_silent == 0)
redraw_cmdline = TRUE; /* show visual mode later */
}
-#endif
curwin->w_curswant = col;
curwin->w_set_curswant = FALSE; /* May still have been TRUE */
/* save named marks and Visual marks for undo */
mch_memmove(uhp->uh_namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS);
-#ifdef FEAT_VISUAL
uhp->uh_visual = curbuf->b_visual;
-#endif
curbuf->b_u_newhead = uhp;
if (curbuf->b_u_oldhead == NULL)
/* Assume NMARKS will stay the same. */
for (i = 0; i < NMARKS; ++i)
serialize_pos(uhp->uh_namedm[i], fp);
-#ifdef FEAT_VISUAL
serialize_visualinfo(&uhp->uh_visual, fp);
-#else
- {
- visualinfo_T info;
-
- memset(&info, 0, sizeof(visualinfo_T));
- serialize_visualinfo(&info, fp);
- }
-#endif
put_time(fp, uhp->uh_time);
/* Optional fields. */
uhp->uh_flags = get2c(fp);
for (i = 0; i < NMARKS; ++i)
unserialize_pos(&uhp->uh_namedm[i], fp);
-#ifdef FEAT_VISUAL
unserialize_visualinfo(&uhp->uh_visual, fp);
-#else
- {
- visualinfo_T info;
- unserialize_visualinfo(&info, fp);
- }
-#endif
uhp->uh_time = get8ctime(fp);
/* Optional fields. */
int old_flags;
int new_flags;
pos_T namedm[NMARKS];
-#ifdef FEAT_VISUAL
visualinfo_T visualinfo;
-#endif
int empty_buffer; /* buffer became empty */
u_header_T *curhead = curbuf->b_u_curhead;
* save marks before undo/redo
*/
mch_memmove(namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS);
-#ifdef FEAT_VISUAL
visualinfo = curbuf->b_visual;
-#endif
curbuf->b_op_start.lnum = curbuf->b_ml.ml_line_count;
curbuf->b_op_start.col = 0;
curbuf->b_op_end.lnum = 0;
curbuf->b_namedm[i] = curhead->uh_namedm[i];
curhead->uh_namedm[i] = namedm[i];
}
-#ifdef FEAT_VISUAL
if (curhead->uh_visual.vi_start.lnum != 0)
{
curbuf->b_visual = curhead->uh_visual;
curhead->uh_visual = visualinfo;
}
-#endif
/*
* If the cursor is only off by one line, put it at the same position as
#else
"-virtualedit",
#endif
-#ifdef FEAT_VISUAL
"+visual",
-# ifdef FEAT_VISUALEXTRA
+#ifdef FEAT_VISUALEXTRA
"+visualextra",
-# else
- "-visualextra",
-# endif
#else
- "-visual",
+ "-visualextra",
#endif
#ifdef FEAT_VIMINFO
"+viminfo",
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 212,
/**/
211,
/**/
case Ctrl_S:
case 's':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
#ifdef FEAT_QUICKFIX
/* When splitting the quickfix window open a new buffer in it,
* don't replicate the quickfix buffer. */
case Ctrl_V:
case 'v':
CHECK_CMDWIN
-# ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-# endif
# ifdef FEAT_QUICKFIX
/* When splitting the quickfix window open a new buffer in it,
* don't replicate the quickfix buffer. */
case Ctrl_HAT:
case '^':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
STRCPY(cbuf, "split #");
if (Prenum)
vim_snprintf((char *)cbuf + 7, sizeof(cbuf) - 7,
case Ctrl_N:
case 'n':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
#ifdef FEAT_QUICKFIX
newwindow:
#endif
/* quit current window */
case Ctrl_Q:
case 'q':
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
do_cmdline_cmd((char_u *)"quit");
break;
/* close current window */
case Ctrl_C:
case 'c':
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
do_cmdline_cmd((char_u *)"close");
break;
case Ctrl_Z:
case 'z':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
do_cmdline_cmd((char_u *)"pclose");
break;
case Ctrl_O:
case 'o':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
do_cmdline_cmd((char_u *)"only");
break;
case Ctrl_R:
case 'r':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
win_rotate(FALSE, (int)Prenum1); /* downwards */
break;
/* rotate windows upwards */
case 'R':
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
win_rotate(TRUE, (int)Prenum1); /* upwards */
break;
case ']':
case Ctrl_RSB:
CHECK_CMDWIN
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
if (Prenum)
postponed_split = Prenum;
else
#endif
case ']':
case Ctrl_RSB:
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
if (Prenum)
postponed_split = Prenum;
else
{
tabpage_T *tp = curtab;
-#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
-#endif
#ifdef FEAT_AUTOCMD
if (trigger_leave_autocmds)
{
return;
#endif
-#ifdef FEAT_VISUAL
if (wp->w_buffer != curbuf)
reset_VIsual_and_resel();
else if (VIsual_active)
wp->w_cursor = curwin->w_cursor;
-#endif
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
long count;
linenr_T *file_lnum;
{
-# ifdef FEAT_VISUAL
if (VIsual_active)
{
int len;
return find_file_name_in_path(ptr, len,
FNAME_MESS|FNAME_EXP|FNAME_REL, count, curbuf->b_ffname);
}
-# endif
return file_name_at_cursor(FNAME_MESS|FNAME_HYP|FNAME_EXP|FNAME_REL, count,
file_lnum);