diff --git a/7.4.212 b/7.4.212 new file mode 100644 index 0000000..6bc98eb --- /dev/null +++ b/7.4.212 @@ -0,0 +1,5720 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.212 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.212 (after 7.4.200) +Problem: Now that the +visual feature is always enabled the #ifdefs for it + are not useful. +Solution: Remove the checks for FEAT_VISUAL. +Files: src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_docmd.c, src/fold.c, src/getchar.c, + src/gui.c, src/gui_mac.c, src/gui_w48.c, src/main.c, src/mark.c, + src/menu.c, src/misc2.c, src/move.c, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/os_msdos.c, src/os_qnx.c, + src/quickfix.c, src/regexp.c, src/regexp_nfa.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/term.c, src/ui.c, + src/undo.c, src/version.c, src/window.c, src/feature.h, + src/globals.h, src/option.h, src/os_win32.h, src/structs.h + + +*** ../vim-7.4.211/src/buffer.c 2014-03-12 18:55:52.100906804 +0100 +--- src/buffer.c 2014-03-23 13:01:39.843144050 +0100 +*************** +*** 1432,1441 **** + 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; +--- 1432,1439 ---- +*** ../vim-7.4.211/src/charset.c 2013-02-06 16:20:01.000000000 +0100 +--- src/charset.c 2014-03-23 13:02:19.467144657 +0100 +*************** +*** 1380,1389 **** + && (State & NORMAL) + && !wp->w_p_list + && !virtual_active() +! #ifdef FEAT_VISUAL +! && !(VIsual_active +! && (*p_sel == 'e' || ltoreq(*pos, VIsual))) +! #endif + ) + *cursor = vcol + incr - 1; /* cursor at end */ + else +--- 1380,1386 ---- + && (State & NORMAL) + && !wp->w_p_list + && !virtual_active() +! && !(VIsual_active && (*p_sel == 'e' || ltoreq(*pos, VIsual))) + ) + *cursor = vcol + incr - 1; /* cursor at end */ + else +*************** +*** 1463,1469 **** + } + #endif + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Get the leftmost and rightmost virtual column of pos1 and pos2. + * Used for Visual block mode. +--- 1460,1465 ---- +*************** +*** 1500,1506 **** + else + *right = to1; + } +- #endif + + /* + * skipwhite: skip over ' ' and '\t'. +--- 1496,1501 ---- +*** ../vim-7.4.211/src/edit.c 2014-02-22 23:03:48.712901208 +0100 +--- src/edit.c 2014-03-23 13:03:11.951145462 +0100 +*************** +*** 220,228 **** + #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)); +--- 220,226 ---- +*************** +*** 932,938 **** + } + #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 +--- 930,935 ---- +*************** +*** 940,946 **** + */ + if (ins_start_select(c)) + continue; +- #endif + + /* + * The big switch to handle a character in insert mode. +--- 937,942 ---- +*************** +*** 6900,6906 **** + else if (cc != NUL) + ++curwin->w_cursor.col; /* put cursor back on the NUL */ + +- #ifdef FEAT_VISUAL + /* may have started Visual mode, adjust the position for + * deleted characters. */ + if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum) +--- 6896,6901 ---- +*************** +*** 6910,6921 **** + if (VIsual.col > len) + { + VIsual.col = len; +! # ifdef FEAT_VIRTUALEDIT + VIsual.coladd = 0; +! # endif + } + } +- #endif + } + } + did_ai = FALSE; +--- 6905,6915 ---- + if (VIsual.col > len) + { + VIsual.col = len; +! #ifdef FEAT_VIRTUALEDIT + VIsual.coladd = 0; +! #endif + } + } + } + } + did_ai = FALSE; +*************** +*** 8112,8120 **** + 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 '"'. +--- 8106,8112 ---- +*************** +*** 8218,8228 **** + 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 + } + + /* +--- 8210,8218 ---- +*************** +*** 8419,8429 **** + #endif + ) + && (restart_edit == NUL +! || (gchar_cursor() == NUL +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! )) + #ifdef FEAT_RIGHTLEFT + && !revins_on + #endif +--- 8409,8415 ---- + #endif + ) + && (restart_edit == NUL +! || (gchar_cursor() == NUL && !VIsual_active)) + #ifdef FEAT_RIGHTLEFT + && !revins_on + #endif +*************** +*** 8525,8531 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* + * If 'keymodel' contains "startsel", may start selection. + * Returns TRUE when a CTRL-O and other keys stuffed. +--- 8511,8516 ---- +*************** +*** 8581,8587 **** + } + return FALSE; + } +- #endif + + /* + * key in Insert mode: toggle insert/replace mode. +--- 8566,8571 ---- +*** ../vim-7.4.211/src/eval.c 2014-02-24 03:31:55.816738026 +0100 +--- src/eval.c 2014-03-23 13:03:56.419146143 +0100 +*************** +*** 11833,11844 **** + { + 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); +--- 11833,11842 ---- +*************** +*** 12552,12560 **** + #ifdef FEAT_VIRTUALEDIT + "virtualedit", + #endif +- #ifdef FEAT_VISUAL + "visual", +- #endif + #ifdef FEAT_VISUALEXTRA + "visualextra", + #endif +--- 12550,12556 ---- +*************** +*** 14397,14403 **** + buf[1] = NUL; + buf[2] = NUL; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_select) +--- 14393,14398 ---- +*************** +*** 14405,14413 **** + else + buf[0] = VIsual_mode; + } +! else +! #endif +! if (State == HITRETURN || State == ASKMORE || State == SETWSIZE + || State == CONFIRM) + { + buf[0] = 'r'; +--- 14400,14406 ---- + else + buf[0] = VIsual_mode; + } +! else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE + || State == CONFIRM) + { + buf[0] = 'r'; +*************** +*** 16756,16762 **** + 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])) +--- 16749,16754 ---- +*************** +*** 16766,16772 **** + --stropt; + } + break; +- #endif + } + } + +--- 16758,16763 ---- +*************** +*** 18769,18775 **** + typval_T *argvars UNUSED; + typval_T *rettv UNUSED; + { +- #ifdef FEAT_VISUAL + char_u str[2]; + + rettv->v_type = VAR_STRING; +--- 18760,18765 ---- +*************** +*** 18780,18786 **** + /* A non-zero number or non-empty string argument: reset mode. */ + if (non_zero_arg(&argvars[0])) + curbuf->b_visual_mode_eval = NUL; +- #endif + } + + /* +--- 18770,18775 ---- +*************** +*** 19154,19167 **** + 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); +--- 19143,19154 ---- +*** ../vim-7.4.211/src/ex_cmds.c 2014-03-19 17:41:20.390105580 +0100 +--- src/ex_cmds.c 2014-03-23 13:04:09.359146341 +0100 +*************** +*** 3274,3286 **** + 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) +--- 3274,3284 ---- +*** ../vim-7.4.211/src/ex_docmd.c 2014-03-12 21:28:09.481046816 +0100 +--- src/ex_docmd.c 2014-03-23 13:04:47.975146933 +0100 +*************** +*** 8577,8586 **** + beginline(BL_SOL | BL_FIX); + } + +- #if defined(FEAT_VISUAL) + if (VIsual_active) + end_visual_mode(); +- #endif + + switch (eap->cmdidx) + { +--- 8577,8584 ---- +*************** +*** 8991,9001 **** + RedrawingDisabled = 0; + p_lz = FALSE; + update_topline(); +! update_screen(eap->forceit ? CLEAR : +! #ifdef FEAT_VISUAL +! VIsual_active ? INVERTED : +! #endif +! 0); + #ifdef FEAT_TITLE + if (need_maketitle) + maketitle(); +--- 8989,8995 ---- + RedrawingDisabled = 0; + p_lz = FALSE; + update_topline(); +! update_screen(eap->forceit ? CLEAR : VIsual_active ? INVERTED : 0); + #ifdef FEAT_TITLE + if (need_maketitle) + maketitle(); +*************** +*** 9030,9040 **** + status_redraw_all(); + else + status_redraw_curbuf(); +! update_screen( +! # ifdef FEAT_VISUAL +! VIsual_active ? INVERTED : +! # endif +! 0); + RedrawingDisabled = r; + p_lz = p; + out_flush(); +--- 9024,9030 ---- + status_redraw_all(); + else + status_redraw_curbuf(); +! update_screen(VIsual_active ? INVERTED : 0); + RedrawingDisabled = r; + p_lz = p; + out_flush(); +*** ../vim-7.4.211/src/fold.c 2013-11-05 07:12:59.000000000 +0100 +--- src/fold.c 2014-03-23 13:05:14.775147344 +0100 +*************** +*** 430,440 **** + } + 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 */ +--- 430,438 ---- +*************** +*** 807,817 **** + 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. */ +--- 805,813 ---- +*************** +*** 1065,1071 **** + } + + /* foldAdjustVisual() {{{2 */ +- #ifdef FEAT_VISUAL + /* + * Adjust the Visual area to include any fold at the start or end completely. + */ +--- 1061,1066 ---- +*************** +*** 1103,1109 **** + #endif + } + } +- #endif + + /* cursor_foldstart() {{{2 */ + /* +--- 1098,1103 ---- +*** ../vim-7.4.211/src/getchar.c 2014-03-12 20:17:47.748982126 +0100 +--- src/getchar.c 2014-03-23 13:05:45.383147813 +0100 +*************** +*** 870,876 **** + c = read_redo(FALSE, old_redo); + } + +- #ifdef FEAT_VISUAL + if (c == 'v') /* redo Visual */ + { + VIsual = curwin->w_cursor; +--- 870,875 ---- +*************** +*** 880,886 **** + redo_VIsual_busy = TRUE; + c = read_redo(FALSE, old_redo); + } +- #endif + + /* try to enter the count (in place of a previous count) */ + if (count) +--- 879,884 ---- +*************** +*** 1162,1168 **** + return typebuf.tb_maplen == 0; + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Return the number of characters that are mapped (or not typed). + */ +--- 1160,1165 ---- +*************** +*** 1171,1177 **** + { + return typebuf.tb_maplen; + } +- #endif + + /* + * remove "len" characters from typebuf.tb_buf[typebuf.tb_off + offset] +--- 1168,1173 ---- +*************** +*** 2443,2449 **** + 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 +--- 2439,2444 ---- +*************** +*** 2457,2463 **** + (void)ins_typebuf(K_SELECT_STRING, + REMAP_NONE, 0, TRUE, FALSE); + } +- # endif + ins_typebuf(current_menu->strings[idx], + current_menu->noremap[idx], + 0, TRUE, +--- 2452,2457 ---- +*************** +*** 2516,2522 **** + break; + } + +- #ifdef FEAT_VISUAL + /* + * In Select mode and a Visual mode mapping is used: + * Switch to Visual mode temporarily. Append K_SELECT +--- 2510,2515 ---- +*************** +*** 2529,2535 **** + (void)ins_typebuf(K_SELECT_STRING, REMAP_NONE, + 0, TRUE, FALSE); + } +- #endif + + #ifdef FEAT_EVAL + /* Copy the values from *mp that are used, because +--- 2522,2527 ---- +*** ../vim-7.4.211/src/gui.c 2013-06-30 17:41:48.000000000 +0200 +--- src/gui.c 2014-03-23 13:05:57.623148000 +0100 +*************** +*** 3132,3142 **** + */ + 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. +--- 3132,3140 ---- +*** ../vim-7.4.211/src/gui_mac.c 2013-05-06 04:06:04.000000000 +0200 +--- src/gui_mac.c 2014-03-23 13:06:30.143148498 +0100 +*************** +*** 1068,1078 **** + } + */ + +- +- #ifdef FEAT_VISUAL + reset_VIsual(); +- #endif +- + fnames = new_fnames_from_AEDesc(&theList, &numFiles, &error); + + if (error) +--- 1068,1074 ---- +*************** +*** 1142,1148 **** + + /* Update the screen display */ + update_screen(NOT_VALID); +! #ifdef FEAT_VISUAL + /* Select the text if possible */ + if (gotPosition) + { +--- 1138,1144 ---- + + /* Update the screen display */ + update_screen(NOT_VALID); +! + /* Select the text if possible */ + if (gotPosition) + { +*************** +*** 1160,1166 **** + VIsual.col = 0; + } + } +! #endif + setcursor(); + out_flush(); + +--- 1156,1162 ---- + VIsual.col = 0; + } + } +! + setcursor(); + out_flush(); + +*** ../vim-7.4.211/src/gui_w48.c 2014-03-19 12:37:18.537826062 +0100 +--- src/gui_w48.c 2014-03-23 13:06:44.959148725 +0100 +*************** +*** 3708,3716 **** + DragQueryPoint(hDrop, &pt); + MapWindowPoints(s_hwnd, s_textArea, &pt, 1); + +- # ifdef FEAT_VISUAL + reset_VIsual(); +- # endif + + fnames = (char_u **)alloc(cFiles * sizeof(char_u *)); + +--- 3708,3714 ---- +*** ../vim-7.4.211/src/main.c 2014-01-14 12:57:00.000000000 +0100 +--- src/main.c 2014-03-23 13:07:21.771149289 +0100 +*************** +*** 1057,1065 **** + 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; +--- 1057,1063 ---- +*************** +*** 1096,1106 **** + 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 +! ) + { + need_start_insertmode = FALSE; + stuffReadbuff((char_u *)"i"); /* start insert mode next */ +--- 1094,1100 ---- + check_timestamps(FALSE); + if (need_wait_return) /* if wait_return still needed ... */ + wait_return(FALSE); /* ... call it now */ +! if (need_start_insertmode && goto_im() && !VIsual_active) + { + need_start_insertmode = FALSE; + stuffReadbuff((char_u *)"i"); /* start insert mode next */ +*************** +*** 1202,1208 **** + diff_need_scrollbind = FALSE; + } + #endif +! #if defined(FEAT_FOLDING) && defined(FEAT_VISUAL) + /* Include a closed fold completely in the Visual area. */ + foldAdjustVisual(); + #endif +--- 1196,1202 ---- + diff_need_scrollbind = FALSE; + } + #endif +! #if defined(FEAT_FOLDING) + /* Include a closed fold completely in the Visual area. */ + foldAdjustVisual(); + #endif +*************** +*** 1228,1239 **** + update_topline(); + validate_cursor(); + +- #ifdef FEAT_VISUAL + if (VIsual_active) + update_curbuf(INVERTED);/* update inverted part */ +! else +! #endif +! if (must_redraw) + update_screen(0); + else if (redraw_cmdline || clear_cmdline) + showmode(); +--- 1222,1230 ---- + update_topline(); + validate_cursor(); + + if (VIsual_active) + update_curbuf(INVERTED);/* update inverted part */ +! else if (must_redraw) + update_screen(0); + else if (redraw_cmdline || clear_cmdline) + showmode(); +*** ../vim-7.4.211/src/mark.c 2013-11-03 00:20:46.000000000 +0100 +--- src/mark.c 2014-03-23 13:08:03.011149921 +0100 +*************** +*** 98,104 **** + return OK; + } + +- #ifdef FEAT_VISUAL + if (c == '<' || c == '>') + { + if (c == '<') +--- 98,103 ---- +*************** +*** 110,116 **** + curbuf->b_visual.vi_mode = 'v'; + return OK; + } +- #endif + + #ifndef EBCDIC + if (c > 'z') /* some islower() and isupper() cannot handle +--- 109,114 ---- +*************** +*** 340,348 **** + int *fnum; + { + pos_T *posp; +- #ifdef FEAT_VISUAL + pos_T *startp, *endp; +- #endif + static pos_T pos_copy; + + posp = NULL; +--- 338,344 ---- +*************** +*** 403,409 **** + 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; +--- 399,404 ---- +*************** +*** 428,434 **** + #endif + } + } +- #endif + else if (ASCII_ISLOWER(c)) /* normal named mark */ + { + posp = &(buf->b_namedm[c - 'a']); +--- 423,428 ---- +*************** +*** 757,766 **** + 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); + } + +--- 751,758 ---- +*************** +*** 892,901 **** + 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; +--- 884,891 ---- +*************** +*** 1085,1095 **** + 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 */ +--- 1075,1083 ---- +*************** +*** 1136,1149 **** + 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 */ +--- 1124,1135 ---- +*************** +*** 1260,1270 **** + 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)); +--- 1246,1254 ---- +*** ../vim-7.4.211/src/menu.c 2011-04-11 15:17:21.000000000 +0200 +--- src/menu.c 2014-03-23 13:08:19.091150168 +0100 +*************** +*** 1640,1646 **** + idx = MENU_INDEX_INSERT; + else if (state & CMDLINE) + idx = MENU_INDEX_CMDLINE; +- #ifdef FEAT_VISUAL + else if (VIsual_active) + { + if (VIsual_select) +--- 1640,1645 ---- +*************** +*** 1648,1654 **** + else + idx = MENU_INDEX_VISUAL; + } +- #endif + else if (state == HITRETURN || state == ASKMORE) + idx = MENU_INDEX_CMDLINE; + else if (finish_op) +--- 1647,1652 ---- +*************** +*** 1811,1824 **** + 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) +--- 1809,1820 ---- +*** ../vim-7.4.211/src/misc2.c 2014-02-23 23:38:58.824760280 +0100 +--- src/misc2.c 2014-03-23 13:08:56.927150748 +0100 +*************** +*** 31,39 **** + 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))); + } + +--- 31,37 ---- +*************** +*** 149,157 **** + + 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 +--- 147,153 ---- +*************** +*** 570,578 **** + * - 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 +--- 566,572 ---- +*************** +*** 627,635 **** + 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; + } +--- 621,627 ---- +*************** +*** 3290,3306 **** + { + if (State & NORMAL) + { +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (VIsual_select) + return SELECTMODE; + return VISUAL; + } +! else +! #endif +! if (finish_op) +! return OP_PENDING; + } + return State; + } +--- 3282,3295 ---- + { + if (State & NORMAL) + { + if (VIsual_active) + { + if (VIsual_select) + return SELECTMODE; + return VISUAL; + } +! else if (finish_op) +! return OP_PENDING; + } + return State; + } +*************** +*** 3738,3744 **** + } + if (finish_op) + return SHAPE_IDX_O; +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (*p_sel == 'e') +--- 3727,3732 ---- +*************** +*** 3746,3752 **** + else + return SHAPE_IDX_V; + } +- #endif + return SHAPE_IDX_N; + } + #endif +--- 3734,3739 ---- +*** ../vim-7.4.211/src/move.c 2014-02-11 18:58:05.102320947 +0100 +--- src/move.c 2014-03-23 13:09:16.535151048 +0100 +*************** +*** 2857,2873 **** + 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; +--- 2857,2869 ---- +*************** +*** 2916,2925 **** + /* + * reset current-window + */ +- # ifdef FEAT_VISUAL + VIsual_select = old_VIsual_select; + VIsual_active = old_VIsual_active; +- # endif + curwin = old_curwin; + curbuf = old_curbuf; + } +--- 2912,2919 ---- +*** ../vim-7.4.211/src/netbeans.c 2012-06-20 19:56:18.000000000 +0200 +--- src/netbeans.c 2014-03-23 13:09:29.163151241 +0100 +*************** +*** 2232,2242 **** + + 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 +--- 2232,2240 ---- +*** ../vim-7.4.211/src/normal.c 2014-03-12 17:41:59.128838878 +0100 +--- src/normal.c 2014-03-23 15:07:40.435259900 +0100 +*************** +*** 14,20 **** + + #include "vim.h" + +- #ifdef FEAT_VISUAL + /* + * The Visual area is remembered for reselection. + */ +--- 14,19 ---- +*************** +*** 24,30 **** + 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)); +--- 23,28 ---- +*************** +*** 37,43 **** + 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) + 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)); +--- 35,41 ---- + 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) + 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)); +*************** +*** 48,56 **** + 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 +--- 46,52 ---- +*************** +*** 117,141 **** + #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)); +--- 113,131 ---- +*************** +*** 155,165 **** + 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)); +--- 145,153 ---- +*************** +*** 248,271 **** + {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}, +--- 236,249 ---- +*************** +*** 427,435 **** + {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}, +--- 405,411 ---- +*************** +*** 579,589 **** + #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; +--- 555,563 ---- +*************** +*** 643,651 **** + } + #endif + +- #ifdef FEAT_VISUAL + mapped_len = typebuf_maplen(); +- #endif + + State = NORMAL_BUSY; + #ifdef USE_ON_FLY_SCROLL +--- 617,623 ---- +*************** +*** 666,672 **** + 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 +--- 638,643 ---- +*************** +*** 677,688 **** + 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. + */ +--- 648,657 ---- +*************** +*** 703,718 **** + 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. +--- 672,684 ---- +*************** +*** 856,862 **** + goto normal_end; + #endif + +- #ifdef FEAT_VISUAL + /* + * In Visual/Select mode, a few keys are handled in a special way. + */ +--- 822,827 ---- +*************** +*** 892,898 **** + } + } + } +- #endif + + #ifdef FEAT_RIGHTLEFT + if (curwin->w_p_rl && KeyTyped && !KeyStuffed +--- 857,862 ---- +*************** +*** 930,940 **** + && !Recording + && !Exec_reg) + || ((ca.cmdchar == 'a' || ca.cmdchar == 'i') +! && (oap->op_type != OP_NOP +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! )))) + { + int *cp; + int repl = FALSE; /* get character for replace mode */ +--- 894,900 ---- + && !Recording + && !Exec_reg) + || ((ca.cmdchar == 'a' || ca.cmdchar == 'i') +! && (oap->op_type != OP_NOP || VIsual_active)))) + { + int *cp; + int repl = FALSE; /* get character for replace mode */ +*************** +*** 1168,1174 **** + msg_col = 0; + } + +- #ifdef FEAT_VISUAL + old_pos = curwin->w_cursor; /* remember where cursor was */ + + /* When 'keymodel' contains "startsel" some keys start Select/Visual +--- 1128,1133 ---- +*************** +*** 1188,1194 **** + mod_mask &= ~MOD_MASK_SHIFT; + } + } +- #endif + + /* + * Execute the command! +--- 1147,1152 ---- +*************** +*** 1220,1231 **** + #endif + } + +- #ifdef FEAT_VISUAL + /* Get the length of mapped chars again after typing a count, second + * character or "z333". */ + if (old_mapped_len > 0) + old_mapped_len = typebuf_maplen(); +- #endif + + /* + * If an operation is pending, handle it... +--- 1178,1187 ---- +*************** +*** 1247,1257 **** + 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) +--- 1203,1211 ---- +*************** +*** 1259,1267 **** + && !msg_nowait + && KeyTyped) + || (restart_edit != 0 +- #ifdef FEAT_VISUAL + && !VIsual_active +- #endif + && (msg_scroll + || emsg_on_display))) + && oap->regname == 0 +--- 1213,1219 ---- +*************** +*** 1368,1403 **** + * 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 +! ) + (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; +--- 1320,1343 ---- + * May switch from Visual to Select mode after CTRL-O command. + */ + if ( oap->op_type == OP_NOP + && ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0) + || restart_VIsual_select == 1) + && !(ca.retval & CA_COMMAND_BUSY) + && stuff_empty() + && oap->regname == 0) + { + if (restart_VIsual_select == 1) + { + VIsual_select = TRUE; + showmode(); + restart_VIsual_select = 0; + } +! if (restart_edit != 0 && !VIsual_active && old_mapped_len == 0) + (void)edit(restart_edit, FALSE, 1L); + } + + if (restart_VIsual_select == 2) + restart_VIsual_select = 1; + + /* Save count before an operator for next time. */ + opcount = ca.opcount; +*************** +*** 1437,1451 **** + 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 + int include_line_break = FALSE; +- # endif + #endif + + #if defined(FEAT_CLIPBOARD) +--- 1377,1389 ---- + int empty_region_error; + int restart_edit_save; + + /* 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 + int include_line_break = FALSE; + #endif + + #if defined(FEAT_CLIPBOARD) +*************** +*** 1459,1468 **** + 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 +--- 1397,1404 ---- +*************** +*** 1471,1483 **** + /* + * If an operation is pending, handle it... + */ +! if ((finish_op +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! ) && oap->op_type != OP_NOP) + { +- #ifdef FEAT_VISUAL + oap->is_VIsual = VIsual_active; + if (oap->motion_force == 'V') + oap->motion_type = MLINE; +--- 1407,1414 ---- + /* + * If an operation is pending, handle it... + */ +! if ((finish_op || VIsual_active) && oap->op_type != OP_NOP) + { + oap->is_VIsual = VIsual_active; + if (oap->motion_force == 'V') + oap->motion_type = MLINE; +*************** +*** 1501,1517 **** + 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 +--- 1432,1445 ---- +*************** +*** 1554,1560 **** + } + } + +- #ifdef FEAT_VISUAL + if (redo_VIsual_busy) + { + /* Redo of an operation on a Visual area. Use the same size from +--- 1482,1487 ---- +*************** +*** 1639,1645 **** + if (VIsual_mode == 'V') + oap->start.col = 0; + } +- #endif /* FEAT_VISUAL */ + + /* + * Set oap->start to the first position of the operated text, oap->end +--- 1566,1571 ---- +*************** +*** 1690,1696 **** + virtual_op = virtual_active(); + #endif + +- #ifdef FEAT_VISUAL + if (VIsual_active || redo_VIsual_busy) + { + if (VIsual_mode == Ctrl_V) /* block mode */ +--- 1616,1621 ---- +*************** +*** 1826,1834 **** + { + oap->motion_type = MCHAR; + if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL +! # ifdef FEAT_VIRTUALEDIT + && (include_line_break || !virtual_op) +! # endif + ) + { + oap->inclusive = FALSE; +--- 1751,1759 ---- + { + oap->motion_type = MCHAR; + if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL +! #ifdef FEAT_VIRTUALEDIT + && (include_line_break || !virtual_op) +! #endif + ) + { + oap->inclusive = FALSE; +*************** +*** 1840,1848 **** + { + ++oap->end.lnum; + oap->end.col = 0; +! # ifdef FEAT_VIRTUALEDIT + oap->end.coladd = 0; +! # endif + ++oap->line_count; + } + else +--- 1765,1773 ---- + { + ++oap->end.lnum; + oap->end.col = 0; +! #ifdef FEAT_VIRTUALEDIT + oap->end.coladd = 0; +! #endif + ++oap->line_count; + } + else +*************** +*** 1868,1877 **** + if (!gui_yank) + { + VIsual_active = FALSE; +! # ifdef FEAT_MOUSE + setmouse(); + mouse_dragging = 0; +! # endif + if (mode_displayed) + clear_cmdline = TRUE; /* unshow visual mode later */ + #ifdef FEAT_CMDL_INFO +--- 1793,1802 ---- + if (!gui_yank) + { + VIsual_active = FALSE; +! #ifdef FEAT_MOUSE + setmouse(); + mouse_dragging = 0; +! #endif + if (mode_displayed) + clear_cmdline = TRUE; /* unshow visual mode later */ + #ifdef FEAT_CMDL_INFO +*************** +*** 1886,1892 **** + redraw_curbuf_later(INVERTED); + } + } +- #endif + + #ifdef FEAT_MBYTE + /* Include the trailing byte of a multi-byte char. */ +--- 1811,1816 ---- +*************** +*** 1921,1936 **** + 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 + || oap->op_type == OP_FOLD +! # endif + )) + redraw_curbuf_later(INVERTED); +- #endif + + /* + * If the end of an operator is in column one while oap->motion_type +--- 1845,1858 ---- + empty_region_error = (oap->empty + && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL); + + /* 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 + || oap->op_type == OP_FOLD +! #endif + )) + redraw_curbuf_later(INVERTED); + + /* + * If the end of an operator is in column one while oap->motion_type +*************** +*** 1943,1952 **** + && 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 */ +--- 1865,1872 ---- +*************** +*** 1971,1981 **** + { + case OP_LSHIFT: + case OP_RSHIFT: +! op_shift(oap, TRUE, +! #ifdef FEAT_VISUAL +! oap->is_VIsual ? (int)cap->count1 : +! #endif +! 1); + auto_format(FALSE, TRUE); + break; + +--- 1891,1897 ---- + { + case OP_LSHIFT: + case OP_RSHIFT: +! op_shift(oap, TRUE, oap->is_VIsual ? (int)cap->count1 : 1); + auto_format(FALSE, TRUE); + break; + +*************** +*** 1988,2002 **** + beep_flush(); + else + { +! (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(); +--- 1904,1917 ---- + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, +! TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; + + case OP_DELETE: + VIsual_reselect = FALSE; /* don't reselect now */ + if (empty_region_error) + { + vim_beep(); +*************** +*** 2026,2034 **** + break; + + case OP_CHANGE: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + if (empty_region_error) + { + vim_beep(); +--- 1941,1947 ---- +*************** +*** 2126,2134 **** + + case OP_INSERT: + case OP_APPEND: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) + { +--- 2039,2045 ---- +*************** +*** 2158,2166 **** + break; + + case OP_REPLACE: +- #ifdef FEAT_VISUAL + VIsual_reselect = FALSE; /* don't reselect now */ +- #endif + #ifdef FEAT_VISUALEXTRA + if (empty_region_error) + #endif +--- 2069,2075 ---- +*************** +*** 2220,2228 **** + { + curwin->w_cursor = old_cursor; + } +- #ifdef FEAT_VISUAL + oap->block_mode = FALSE; +- #endif + clearop(oap); + } + } +--- 2129,2135 ---- +*************** +*** 2235,2245 **** + 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. +--- 2142,2150 ---- +*************** +*** 2404,2417 **** + 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) +--- 2309,2320 ---- +*************** +*** 2432,2446 **** + 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)) + return FALSE; + } + +--- 2335,2346 ---- + if (!gui.in_use) + #endif + { + if (VIsual_active) + { + if (!mouse_has(MOUSE_VISUAL)) + return FALSE; + } +! else if (State == NORMAL && !mouse_has(MOUSE_NORMAL)) + return FALSE; + } + +*************** +*** 2509,2522 **** + } + } + +- #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 + */ +--- 2409,2414 ---- +*************** +*** 2586,2592 **** + return FALSE; + } + +- #ifdef FEAT_VISUAL + /* + * If visual was active, yank the highlighted text and put it + * before the mouse pointer position. +--- 2478,2483 ---- +*************** +*** 2607,2613 **** + do_always = TRUE; /* ignore 'mouse' setting next time */ + return FALSE; + } +- #endif + /* + * The rest is below jump_to_mouse() + */ +--- 2498,2503 ---- +*************** +*** 2761,2767 **** + { + /* First set the cursor position before showing the popup + * menu. */ +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + pos_T m_pos; +--- 2651,2656 ---- +*************** +*** 2800,2815 **** + } + 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); + setcursor(); + out_flush(); /* Update before showing popup menu */ + } +--- 2689,2699 ---- + } + else + jump_flags = MOUSE_MAY_STOP_VIS; + } + if (jump_flags) + { + jump_flags = jump_to_mouse(jump_flags, NULL, which_button); +! update_curbuf(VIsual_active ? INVERTED : VALID); + setcursor(); + out_flush(); /* Update before showing popup menu */ + } +*************** +*** 2832,2838 **** + } + } + +- #ifdef FEAT_VISUAL + if ((State & (NORMAL | INSERT)) + && !(mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))) + { +--- 2716,2721 ---- +*************** +*** 2872,2878 **** + jump_flags |= MOUSE_MAY_VIS; + } + } +- #endif + + /* + * If an operator is pending, ignore all drags and releases until the +--- 2755,2760 ---- +*************** +*** 2941,2947 **** + } + #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) +--- 2823,2828 ---- +*************** +*** 3040,3046 **** + */ + else if ((State & INSERT) && VIsual_active) + stuffcharReadbuff(Ctrl_O); +- #endif + + /* + * Middle mouse click: Put text before cursor. +--- 2921,2926 ---- +*************** +*** 3118,3128 **** + */ + else if ((mod_mask & MOD_MASK_SHIFT)) + { +! if (State & INSERT +! #ifdef FEAT_VISUAL +! || (VIsual_active && VIsual_select) +! #endif +! ) + stuffcharReadbuff(Ctrl_O); + if (which_button == MOUSE_LEFT) + stuffcharReadbuff('*'); +--- 2998,3004 ---- + */ + else if ((mod_mask & MOD_MASK_SHIFT)) + { +! if ((State & INSERT) || (VIsual_active && VIsual_select)) + stuffcharReadbuff(Ctrl_O); + if (which_button == MOUSE_LEFT) + stuffcharReadbuff('*'); +*************** +*** 3153,3159 **** + # endif + } + #endif +- #ifdef FEAT_VISUAL + else if ((mod_mask & MOD_MASK_MULTI_CLICK) && (State & (NORMAL | INSERT)) + && mouse_has(MOUSE_VISUAL)) + { +--- 3029,3034 ---- +*************** +*** 3267,3278 **** + || (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. + */ +--- 3142,3151 ---- +*************** +*** 3372,3381 **** + 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. +--- 3245,3252 ---- +*************** +*** 3468,3474 **** + 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)); +--- 3339,3344 ---- +*************** +*** 3802,3812 **** + checkclearopq(oap) + oparg_T *oap; + { +! if (oap->op_type == OP_NOP +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! ) + return FALSE; + clearopbeep(oap); + return TRUE; +--- 3672,3678 ---- + checkclearopq(oap) + oparg_T *oap; + { +! if (oap->op_type == OP_NOP && !VIsual_active) + return FALSE; + clearopbeep(oap); + return TRUE; +*************** +*** 3830,3836 **** + beep_flush(); + } + +- #ifdef FEAT_VISUAL + /* + * Remove the shift modifier from a special key. + */ +--- 3696,3701 ---- +*************** +*** 3849,3866 **** + } + 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 + static char_u showcmd_buf[SHOWCMD_BUFLEN]; + static char_u old_showcmd_buf[SHOWCMD_BUFLEN]; /* For push_showcmd() */ + static int showcmd_is_clear = TRUE; +--- 3714,3726 ---- + } + cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask); + } + + #if defined(FEAT_CMDL_INFO) || defined(PROTO) + /* + * Routines for displaying a partly typed command + */ + +! #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; +*************** +*** 3874,3880 **** + if (!p_sc) + return; + +- #ifdef FEAT_VISUAL + if (VIsual_active && !char_avail()) + { + int cursor_bot = lt(VIsual, curwin->w_cursor); +--- 3734,3739 ---- +*************** +*** 3960,3966 **** + showcmd_visual = TRUE; + } + else +- #endif + { + showcmd_buf[0] = NUL; + showcmd_visual = FALSE; +--- 3819,3824 ---- +*************** +*** 4203,4212 **** + 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; +--- 4061,4068 ---- +*************** +*** 4223,4231 **** + /* + * 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; +--- 4079,4085 ---- +*************** +*** 4280,4289 **** + /* + * reset current-window + */ +- #ifdef FEAT_VISUAL + VIsual_select = old_VIsual_select; + VIsual_active = old_VIsual_active; +- #endif + curwin = old_curwin; + curbuf = old_curbuf; + } +--- 4134,4141 ---- +*************** +*** 5239,5249 **** + + 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; +--- 5091,5099 ---- +*************** +*** 5411,5422 **** + /* + * Ignore 'Q' in Visual mode, just give a beep. + */ +- #ifdef FEAT_VISUAL + if (VIsual_active) + vim_beep(); +! else +! #endif +! if (!checkclearop(cap->oap)) + do_exmode(FALSE); + } + +--- 5261,5269 ---- + /* + * Ignore 'Q' in Visual mode, just give a beep. + */ + if (VIsual_active) + vim_beep(); +! else if (!checkclearop(cap->oap)) + do_exmode(FALSE); + } + +*************** +*** 5430,5440 **** + 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) + { +--- 5277,5285 ---- +*************** +*** 5494,5508 **** + 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)) + /* print full name if count given or :cd used */ + fileinfo((int)cap->count0, FALSE, TRUE); + } +--- 5339,5350 ---- + nv_ctrlg(cap) + cmdarg_T *cap; + { + if (VIsual_active) /* toggle Selection/Visual mode */ + { + VIsual_select = !VIsual_select; + showmode(); + } +! else if (!checkclearop(cap->oap)) + /* print full name if count given or :cd used */ + fileinfo((int)cap->count0, FALSE, TRUE); + } +*************** +*** 5514,5527 **** + 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); + } + +--- 5356,5367 ---- +*************** +*** 5558,5564 **** + nv_ctrlo(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active && VIsual_select) + { + VIsual_select = FALSE; +--- 5398,5403 ---- +*************** +*** 5566,5572 **** + restart_VIsual_select = 2; /* restart Select mode later */ + } + else +- #endif + { + cap->count1 = -cap->count1; + nv_pcmark(cap); +--- 5405,5410 ---- +*************** +*** 5675,5684 **** + */ + 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; + } +--- 5513,5520 ---- +*************** +*** 5872,5878 **** + 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. +--- 5708,5713 ---- +*************** +*** 5917,5923 **** + reset_VIsual_and_resel(); + return OK; + } +- #endif + + /* + * CTRL-T: backwards in tag stack +--- 5752,5757 ---- +*************** +*** 6040,6050 **** + cmdarg_T *cap; + { + long n; +! #ifdef FEAT_VISUAL +! int PAST_LINE; +! #else +! # define PAST_LINE 0 +! #endif + + if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) + { +--- 5874,5880 ---- + cmdarg_T *cap; + { + long n; +! int past_line; + + if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) + { +*************** +*** 6057,6081 **** + + cap->oap->motion_type = MCHAR; + cap->oap->inclusive = FALSE; +! #ifdef FEAT_VISUAL +! PAST_LINE = (VIsual_active && *p_sel != 'o'); + +! # ifdef FEAT_VIRTUALEDIT + /* +! * In virtual mode, there's no such thing as "PAST_LINE", as lines are +! * (theoretically) infinitely long. + */ + if (virtual_active()) +! PAST_LINE = 0; +! # endif + #endif + + for (n = cap->count1; n > 0; --n) + { +! if ((!PAST_LINE && oneright() == FAIL) +! #ifdef FEAT_VISUAL +! || (PAST_LINE && *ml_get_cursor() == NUL) +! #endif + ) + { + /* +--- 5887,5907 ---- + + cap->oap->motion_type = MCHAR; + cap->oap->inclusive = FALSE; +! past_line = (VIsual_active && *p_sel != 'o'); + +! #ifdef FEAT_VIRTUALEDIT + /* +! * 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 + + for (n = cap->count1; n > 0; --n) + { +! if ((!past_line && oneright() == FAIL) +! || (past_line && *ml_get_cursor() == NUL) + ) + { + /* +*************** +*** 6123,6148 **** + } + break; + } +! #ifdef FEAT_VISUAL +! else if (PAST_LINE) + { + curwin->w_set_curswant = TRUE; +! # ifdef FEAT_VIRTUALEDIT + if (virtual_active()) + oneright(); + else +! # endif + { +! # ifdef FEAT_MBYTE + if (has_mbyte) + curwin->w_cursor.col += + (*mb_ptr2len)(ml_get_cursor()); + else +! # endif + ++curwin->w_cursor.col; + } + } +- #endif + } + #ifdef FEAT_FOLDING + if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped +--- 5949,5972 ---- + } + break; + } +! else if (past_line) + { + curwin->w_set_curswant = TRUE; +! #ifdef FEAT_VIRTUALEDIT + if (virtual_active()) + oneright(); + else +! #endif + { +! #ifdef FEAT_MBYTE + if (has_mbyte) + curwin->w_cursor.col += + (*mb_ptr2len)(ml_get_cursor()); + else +! #endif + ++curwin->w_cursor.col; + } + } + } + #ifdef FEAT_FOLDING + if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped +*************** +*** 6503,6511 **** + 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(); +--- 6327,6333 ---- +*************** +*** 6754,6760 **** + 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; +--- 6576,6581 ---- +*************** +*** 6766,6779 **** + 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; +--- 6587,6598 ---- +*************** +*** 6802,6808 **** + redraw_later(SOME_VALID); + } + } +- #endif + } + } + +--- 6621,6626 ---- +*************** +*** 6936,6944 **** + #ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = 0; + #endif +- #ifdef FEAT_VISUAL + adjust_for_sel(cap); +- #endif + } + } + #ifdef FEAT_FOLDING +--- 6754,6760 ---- +*************** +*** 7027,7037 **** + nv_undo(cap) + cmdarg_T *cap; + { +! if (cap->oap->op_type == OP_LOWER +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! ) + { + /* translate "u" to "gu" and "guu" to "gugu" */ + cap->cmdchar = 'g'; +--- 6843,6849 ---- + nv_undo(cap) + cmdarg_T *cap; + { +! if (cap->oap->op_type == OP_LOWER || VIsual_active) + { + /* translate "u" to "gu" and "guu" to "gugu" */ + cap->cmdchar = 'g'; +*************** +*** 7089,7095 **** + return; + } + +- #ifdef FEAT_VISUAL + /* Visual mode "r" */ + if (VIsual_active) + { +--- 6901,6906 ---- +*************** +*** 7105,7111 **** + nv_operator(cap); + return; + } +- #endif + + #ifdef FEAT_VIRTUALEDIT + /* Break tabs, etc. */ +--- 6916,6921 ---- +*************** +*** 7273,7279 **** + } + } + +- #ifdef FEAT_VISUAL + /* + * 'o': Exchange start and end of Visual area. + * 'O': same, but in block mode exchange left and right corners. +--- 7083,7088 ---- +*************** +*** 7326,7332 **** + curwin->w_set_curswant = TRUE; + } + } +- #endif /* FEAT_VISUAL */ + + /* + * "R" (cap->arg is FALSE) and "gR" (cap->arg is TRUE). +--- 7135,7140 ---- +*************** +*** 7335,7341 **** + nv_Replace(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* "R" is replace lines */ + { + cap->cmdchar = 'c'; +--- 7143,7148 ---- +*************** +*** 7344,7352 **** + VIsual_mode = 'V'; + nv_operator(cap); + } +! else +! #endif +! if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +--- 7151,7157 ---- + VIsual_mode = 'V'; + nv_operator(cap); + } +! else if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +*************** +*** 7369,7384 **** + 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)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +--- 7174,7186 ---- + nv_vreplace(cap) + cmdarg_T *cap; + { + if (VIsual_active) + { + cap->cmdchar = 'r'; + cap->nchar = cap->extra_char; + nv_replace(cap); /* Do same as "r" in Visual mode for now */ + } +! else if (!checkclearopq(cap->oap)) + { + if (!curbuf->b_p_ma) + EMSG(_(e_modifiable)); +*************** +*** 7525,7531 **** + curwin->w_set_curswant = TRUE; + } + +- #ifdef FEAT_VISUAL + /* + * Handle commands that are operators in Visual mode. + */ +--- 7327,7332 ---- +*************** +*** 7550,7556 **** + cap->cmdchar = *(vim_strchr(trans, cap->cmdchar) + 1); + nv_operator(cap); + } +- #endif + + /* + * "s" and "S" commands. +--- 7351,7356 ---- +*************** +*** 7559,7565 **** + nv_subst(cap) + cmdarg_T *cap; + { +- #ifdef FEAT_VISUAL + if (VIsual_active) /* "vs" and "vS" are the same as "vc" */ + { + if (cap->cmdchar == 'S') +--- 7359,7364 ---- +*************** +*** 7571,7577 **** + nv_operator(cap); + } + else +- #endif + nv_optrans(cap); + } + +--- 7370,7375 ---- +*************** +*** 7585,7596 **** + 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); + } + +--- 7383,7392 ---- +*************** +*** 7758,7764 **** + 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 +--- 7554,7559 ---- +*************** +*** 7950,7956 **** + } + } + +- #endif /* FEAT_VISUAL */ + + /* + * CTRL-W: Window commands +--- 7745,7750 ---- +*************** +*** 7975,7984 **** + 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"); + } + +--- 7769,7776 ---- +*************** +*** 7990,7998 **** + cmdarg_T *cap; + { + oparg_T *oap = cap->oap; +- #ifdef FEAT_VISUAL + pos_T tpos; +- #endif + int i; + int flag = FALSE; + +--- 7782,7788 ---- +*************** +*** 8025,8031 **** + 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. +--- 7815,7820 ---- +*************** +*** 8126,8132 **** + cap->arg = TRUE; + nv_visual(cap); + break; +- #endif /* FEAT_VISUAL */ + + /* "gn", "gN" visually select next/previous search match + * "gn" selects next match +--- 7915,7920 ---- +*************** +*** 8134,8142 **** + */ + case 'N': + case 'n': +- #ifdef FEAT_VISUAL + if (!current_search(cap->count1, cap->nchar == 'n')) +- #endif + clearopbeep(oap); + break; + +--- 7922,7928 ---- +*************** +*** 8258,8266 **** + && 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; + +--- 8044,8050 ---- +*************** +*** 8657,8667 **** + 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 +! ) + { + /* translate "gUU" to "gUgU" */ + cap->cmdchar = 'g'; +--- 8441,8447 ---- + cmdarg_T *cap; + { + /* In Visual mode and typing "gUU" triggers an operator */ +! if (cap->oap->op_type == OP_UPPER || VIsual_active) + { + /* translate "gUU" to "gUgU" */ + cap->cmdchar = 'g'; +*************** +*** 8683,8693 **** + nv_tilde(cap) + cmdarg_T *cap; + { +! if (!p_to +! #ifdef FEAT_VISUAL +! && !VIsual_active +! #endif +! && cap->oap->op_type != OP_TILDE) + n_swapchar(cap); + else + nv_operator(cap); +--- 8463,8469 ---- + nv_tilde(cap) + cmdarg_T *cap; + { +! if (!p_to && !VIsual_active && cap->oap->op_type != OP_TILDE) + n_swapchar(cap); + else + nv_operator(cap); +*************** +*** 8906,8914 **** + 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(); +--- 8682,8688 ---- +*************** +*** 8931,8939 **** + * - '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 +--- 8705,8711 ---- +*************** +*** 8968,8974 **** + one-character line). */ + } + +- #ifdef FEAT_VISUAL + /* + * In exclusive Visual mode, may include the last character. + */ +--- 8740,8745 ---- +*************** +*** 8979,8989 **** + if (VIsual_active && cap->oap->inclusive && *p_sel == 'e' + && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor)) + { +! # ifdef FEAT_MBYTE + if (has_mbyte) + inc_cursor(); + else +! # endif + ++curwin->w_cursor.col; + cap->oap->inclusive = FALSE; + } +--- 8750,8760 ---- + if (VIsual_active && cap->oap->inclusive && *p_sel == 'e' + && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor)) + { +! #ifdef FEAT_MBYTE + if (has_mbyte) + inc_cursor(); + else +! #endif + ++curwin->w_cursor.col; + cap->oap->inclusive = FALSE; + } +*************** +*** 9044,9050 **** + } + } + +- #endif + + /* + * "G", "gg", CTRL-END, CTRL-HOME. +--- 8815,8820 ---- +*************** +*** 9095,9107 **** + 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'; +--- 8865,8875 ---- +*************** +*** 9132,9140 **** + #ifdef FEAT_CMDWIN + && cmdwin_type == 0 + #endif +- #ifdef FEAT_VISUAL + && !VIsual_active +- #endif + && no_reason) + MSG(_("Type :quit to exit Vim")); + +--- 8900,8906 ---- +*************** +*** 9152,9158 **** + #endif + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + end_visual_mode(); /* stop Visual */ +--- 8918,8923 ---- +*************** +*** 9160,9169 **** + curwin->w_set_curswant = TRUE; + redraw_curbuf_later(INVERTED); + } +! else +! #endif +! if (no_reason) +! vim_beep(); + clearop(cap->oap); + + /* A CTRL-C is often used at the start of a menu. When 'insertmode' is +--- 8925,8932 ---- + curwin->w_set_curswant = TRUE; + redraw_curbuf_later(INVERTED); + } +! else if (no_reason) +! vim_beep(); + clearop(cap->oap); + + /* A CTRL-C is often used at the start of a menu. When 'insertmode' is +*************** +*** 9187,9206 **** + 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 +! )) + { + #ifdef FEAT_TEXTOBJ + nv_object(cap); +--- 8950,8962 ---- + if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS) + cap->cmdchar = 'i'; + + /* 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 if ((cap->cmdchar == 'a' || cap->cmdchar == 'i') +! && (cap->oap->op_type != OP_NOP || VIsual_active)) + { + #ifdef FEAT_TEXTOBJ + nv_object(cap); +*************** +*** 9467,9478 **** + 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)) + { + if (cap->count0 <= 1) + cap->count0 = 2; /* default for join is two lines! */ +--- 9223,9231 ---- + nv_join(cap) + cmdarg_T *cap; + { + if (VIsual_active) /* join the visual lines */ + nv_operator(cap); +! else if (!checkclearop(cap->oap)) + { + if (cap->count0 <= 1) + cap->count0 = 2; /* default for join is two lines! */ +*************** +*** 9495,9506 **** + 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; + +--- 9248,9257 ---- +*************** +*** 9526,9532 **** + if (cap->cmdchar == 'g') + flags |= PUT_CURSEND; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Putting in Visual mode: The put text replaces the selected +--- 9277,9282 ---- +*************** +*** 9536,9549 **** + */ + was_visual = TRUE; + regname = cap->oap->regname; +! # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); +! # endif + if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' +! # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +! # endif + + ) + { +--- 9286,9299 ---- + */ + was_visual = TRUE; + regname = cap->oap->regname; +! #ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); +! #endif + if (regname == 0 || regname == '"' + || VIM_ISDIGIT(regname) || regname == '-' +! #ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) +! #endif + + ) + { +*************** +*** 9591,9600 **** + /* 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); +--- 9341,9348 ---- +*************** +*** 9621,9627 **** + coladvance((colnr_T)MAXCOL); + } + } +- #endif + auto_format(FALSE, TRUE); + } + } +--- 9369,9374 ---- +*************** +*** 9642,9652 **** + } + else + #endif +- #ifdef FEAT_VISUAL + if (VIsual_active) /* switch start and end of visual */ + v_swap_corners(cap->cmdchar); + else +- #endif + n_opencmd(cap); + } + +--- 9389,9397 ---- +*** ../vim-7.4.211/src/ops.c 2014-03-19 18:57:27.730175565 +0100 +--- src/ops.c 2014-03-23 15:08:16.095260447 +0100 +*************** +*** 57,65 **** + 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 */ +--- 57,63 ---- +*************** +*** 107,123 **** + 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 +--- 105,117 ---- +*************** +*** 187,193 **** + return i; + } + +- #if defined(FEAT_VISUAL) || defined(PROTO) + /* + * Return TRUE if operator "op" always works on whole lines. + */ +--- 181,186 ---- +*************** +*** 197,203 **** + { + return opchars[op][2]; + } +- #endif + + /* + * Get first operator command character. +--- 190,195 ---- +*************** +*** 232,249 **** + 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; ) + { +--- 224,237 ---- +*************** +*** 272,286 **** + 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 ">>" */ + { + curwin->w_cursor.lnum = oap->start.lnum; + beginline(BL_SOL | BL_FIX); /* shift_line() may have set cursor.col */ +--- 260,271 ---- + foldOpenCursor(); + #endif + + if (oap->block_mode) + { + curwin->w_cursor.lnum = oap->start.lnum; + curwin->w_cursor.col = block_col; + } +! 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 */ +*************** +*** 733,746 **** + * 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) + { +--- 718,727 ---- +*************** +*** 948,954 **** + } + #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. +--- 929,934 ---- +*************** +*** 1016,1025 **** + *y_current = *(struct yankreg *)reg; + vim_free(reg); + +! # ifdef FEAT_CLIPBOARD + /* Send text written to clipboard register to the clipboard. */ + may_set_selection(); +! # endif + } + + void +--- 996,1005 ---- + *y_current = *(struct yankreg *)reg; + vim_free(reg); + +! #ifdef FEAT_CLIPBOARD + /* Send text written to clipboard register to the clipboard. */ + may_set_selection(); +! #endif + } + + void +*************** +*** 1034,1040 **** + vim_free(reg); + *y_current = tmp; + } +- #endif + + #if defined(FEAT_MOUSE) || defined(PROTO) + /* +--- 1014,1019 ---- +*************** +*** 1634,1643 **** + 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; +--- 1613,1620 ---- +*************** +*** 1670,1679 **** + * 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) +--- 1647,1654 ---- +*************** +*** 1787,1793 **** + } + } + +- #ifdef FEAT_VISUAL + /* + * block mode delete + */ +--- 1762,1767 ---- +*************** +*** 1838,1846 **** + oap->end.lnum + 1, 0L); + oap->line_count = 0; /* no lines deleted */ + } +! else +! #endif +! if (oap->motion_type == MLINE) + { + if (oap->op_type == OP_CHANGE) + { +--- 1812,1818 ---- + oap->end.lnum + 1, 0L); + oap->line_count = 0; /* no lines deleted */ + } +! else if (oap->motion_type == MLINE) + { + if (oap->op_type == OP_CHANGE) + { +*************** +*** 1924,1936 **** + return FAIL; + + /* if 'cpoptions' contains '$', display '$' at end of change */ +! 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 +! ) + display_dollar(oap->end.col - !oap->inclusive); + + n = oap->end.col - oap->start.col + 1 - !oap->inclusive; +--- 1896,1905 ---- + return FAIL; + + /* if 'cpoptions' contains '$', display '$' at end of change */ +! if ( vim_strchr(p_cpo, CPO_DOLLAR) != NULL + && oap->op_type == OP_CHANGE + && oap->end.lnum == curwin->w_cursor.lnum +! && !oap->is_VIsual) + display_dollar(oap->end.col - !oap->inclusive); + + n = oap->end.col - oap->start.col + 1 - !oap->inclusive; +*************** +*** 1967,1977 **** + } + else + { +! (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE +! #ifdef FEAT_VISUAL +! && !oap->is_VIsual +! #endif +! ); + } + } + else /* delete characters between lines */ +--- 1936,1943 ---- + } + else + { +! (void)del_bytes((long)n, !virtual_op, +! oap->op_type == OP_DELETE && !oap->is_VIsual); + } + } + else /* delete characters between lines */ +*************** +*** 2008,2018 **** + { + /* 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 +! ); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +--- 1974,1981 ---- + { + /* 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 && !oap->is_VIsual); + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +*************** +*** 2025,2038 **** + #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; + +--- 1988,1999 ---- +*************** +*** 2318,2326 **** + 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), +--- 2279,2285 ---- +*************** +*** 2328,2334 **** + return; + + pos = oap->start; +- #ifdef FEAT_VISUAL + if (oap->block_mode) /* Visual block mode */ + { + for (; pos.lnum <= oap->end.lnum; ++pos.lnum) +--- 2287,2292 ---- +*************** +*** 2340,2346 **** + one_change = swapchars(oap->op_type, &pos, bd.textlen); + did_change |= one_change; + +! # ifdef FEAT_NETBEANS_INTG + if (netbeans_active() && one_change) + { + char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE); +--- 2298,2304 ---- + one_change = swapchars(oap->op_type, &pos, bd.textlen); + did_change |= one_change; + +! #ifdef FEAT_NETBEANS_INTG + if (netbeans_active() && one_change) + { + char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE); +*************** +*** 2350,2362 **** + netbeans_inserted(curbuf, pos.lnum, bd.textcol, + &ptr[bd.textcol], bd.textlen); + } +! # 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) + { +--- 2308,2319 ---- + netbeans_inserted(curbuf, pos.lnum, bd.textcol, + &ptr[bd.textcol], bd.textlen); + } +! #endif + } + if (did_change) + changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L); + } + else /* not block mode */ + { + if (oap->motion_type == MLINE) + { +*************** +*** 2412,2422 **** + } + } + +- #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. +--- 2369,2377 ---- +*************** +*** 3018,3027 **** + 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) + { +--- 2973,2980 ---- +*************** +*** 3032,3040 **** + + 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); + +--- 2985,2991 ---- +*************** +*** 3047,3053 **** + y_idx = 0; + lnum = oap->start.lnum; + +- #ifdef FEAT_VISUAL + if (oap->block_mode) + { + /* Visual block mode */ +--- 2998,3003 ---- +*************** +*** 3057,3075 **** + 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] = +--- 3007,3022 ---- +*************** +*** 3206,3214 **** + 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... */ +--- 3153,3159 ---- +*************** +*** 3218,3234 **** + 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); + } +--- 3163,3175 ---- +*************** +*** 3239,3249 **** + */ + curbuf->b_op_start = oap->start; + curbuf->b_op_end = oap->end; +! if (yanktype == MLINE +! #ifdef FEAT_VISUAL +! && !oap->block_mode +! #endif +! ) + { + curbuf->b_op_start.col = 0; + curbuf->b_op_end.col = MAXCOL; +--- 3180,3186 ---- + */ + curbuf->b_op_start = oap->start; + curbuf->b_op_end = oap->end; +! if (yanktype == MLINE && !oap->block_mode) + { + curbuf->b_op_start.col = 0; + curbuf->b_op_end.col = MAXCOL; +*************** +*** 3380,3386 **** + long i; /* index in y_array[] */ + int y_type; + long y_size; +- #ifdef FEAT_VISUAL + int oldlen; + long y_width = 0; + colnr_T vcol; +--- 3317,3322 ---- +*************** +*** 3388,3394 **** + int incr = 0; + long j; + struct block_def bd; +- #endif + char_u **y_array = NULL; + long nr_lines = 0; + pos_T new_cursor; +--- 3324,3329 ---- +*************** +*** 3497,3510 **** + 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) +--- 3432,3442 ---- +*************** +*** 3535,3541 **** + 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; +--- 3467,3472 ---- +*************** +*** 3547,3553 **** + goto end; + } + +- #ifdef FEAT_VISUAL + if (y_type == MBLOCK) + { + lnum = curwin->w_cursor.lnum + y_size + 1; +--- 3478,3483 ---- +*************** +*** 3556,3564 **** + if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL) + goto end; + } +! else +! #endif +! if (y_type == MLINE) + { + lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +--- 3486,3492 ---- + if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL) + goto end; + } +! else if (y_type == MLINE) + { + lnum = curwin->w_cursor.lnum; + #ifdef FEAT_FOLDING +*************** +*** 3610,3616 **** + lnum = curwin->w_cursor.lnum; + col = curwin->w_cursor.col; + +- #ifdef FEAT_VISUAL + /* + * Block mode + */ +--- 3538,3543 ---- +*************** +*** 3792,3798 **** + curwin->w_cursor.lnum = lnum; + } + else +- #endif + { + /* + * Character or Line mode +--- 3719,3724 ---- +*************** +*** 3866,3882 **** + 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 +! ); + + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ +--- 3792,3800 ---- + curwin->w_cursor.col += (colnr_T)(totlen - 1); + } + } + if (VIsual_active) + lnum++; +! } 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 */ +*************** +*** 4038,4046 **** + 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(); +--- 3956,3962 ---- +*************** +*** 4729,4739 **** + 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; +--- 4645,4653 ---- +*************** +*** 4765,4771 **** + saved_cursor.lnum = 0; + } + +- #ifdef FEAT_VISUAL + if (oap->is_VIsual) + { + win_T *wp; +--- 4679,4684 ---- +*************** +*** 4783,4789 **** + } + } + } +- #endif + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 4696,4701 ---- +*************** +*** 4794,4804 **** + 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 +--- 4706,4714 ---- +*************** +*** 5238,5244 **** + return FALSE; + } + +- #ifdef FEAT_VISUAL + /* + * prepare a few things for block mode yank/delete/tilde + * +--- 5148,5153 ---- +*************** +*** 5397,5403 **** + bdp->textcol = (colnr_T) (pstart - line); + bdp->textstart = pstart; + } +- #endif /* FEAT_VISUAL */ + + #ifdef FEAT_RIGHTLEFT + static void reverse_line __ARGS((char_u *s)); +--- 5306,5311 ---- +*************** +*** 5748,5766 **** + 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)) +--- 5656,5668 ---- +*************** +*** 5868,5878 **** + 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); +--- 5770,5778 ---- +*************** +*** 5886,5898 **** + 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 +! ); + + /* If max_num_lines < 0, then we save ALL the lines in the register */ + if (max_num_lines > 0 && num_lines > max_num_lines) +--- 5786,5792 ---- + fprintf(fp, "\"%c", c); + if (c == execreg_lastc) + fprintf(fp, "@"); +! 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) +*************** +*** 6039,6048 **** + { + 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; +--- 5933,5940 ---- +*************** +*** 6063,6072 **** + 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; +--- 5955,5962 ---- +*************** +*** 6084,6093 **** + 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 + { +--- 5974,5981 ---- +*************** +*** 6190,6196 **** + } + + +- # if defined(FEAT_VISUAL) || defined(FEAT_EVAL) + /* + * If we have written to a clipboard register, send the text to the clipboard. + */ +--- 6078,6083 ---- +*************** +*** 6208,6214 **** + clip_gen_set_selection(&clip_plus); + } + } +- # endif + + #endif /* FEAT_CLIPBOARD || PROTO */ + +--- 6095,6100 ---- +*************** +*** 6273,6282 **** + + 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; +--- 6159,6166 ---- +*************** +*** 6454,6464 **** + 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 +--- 6338,6343 ---- +*************** +*** 6496,6504 **** + 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; +--- 6375,6381 ---- +*************** +*** 6539,6547 **** + 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. +--- 6416,6422 ---- +*************** +*** 6552,6561 **** + 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; +--- 6427,6434 ---- +*************** +*** 6585,6596 **** + } + 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 */ + +--- 6458,6467 ---- +*************** +*** 6684,6695 **** + 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. +--- 6555,6564 ---- +*************** +*** 6705,6711 **** + else + eol_size = 1; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (lt(VIsual, curwin->w_cursor)) +--- 6574,6579 ---- +*************** +*** 6749,6755 **** + } + line_count_selected = max_pos.lnum - min_pos.lnum + 1; + } +- #endif + + for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum) + { +--- 6617,6622 ---- +*************** +*** 6762,6768 **** + 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) +--- 6629,6634 ---- +*************** +*** 6773,6785 **** + switch (VIsual_mode) + { + case Ctrl_V: +! # ifdef FEAT_VIRTUALEDIT + virtual_op = virtual_active(); +! # endif + block_prep(&oparg, &bd, lnum, 0); +! # ifdef FEAT_VIRTUALEDIT + virtual_op = MAYBE; +! # endif + s = bd.textstart; + len = (long)bd.textlen; + break; +--- 6639,6651 ---- + switch (VIsual_mode) + { + case Ctrl_V: +! #ifdef FEAT_VIRTUALEDIT + virtual_op = virtual_active(); +! #endif + block_prep(&oparg, &bd, lnum, 0); +! #ifdef FEAT_VIRTUALEDIT + virtual_op = MAYBE; +! #endif + s = bd.textstart; + len = (long)bd.textlen; + break; +*************** +*** 6811,6817 **** + } + } + else +- #endif + { + /* In non-visual mode, check for the line the cursor is on */ + if (lnum == curwin->w_cursor.lnum) +--- 6677,6682 ---- +*************** +*** 6833,6839 **** + 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) +--- 6698,6703 ---- +*************** +*** 6864,6870 **** + byte_count_cursor, byte_count); + } + else +- #endif + { + p = ml_get_curline(); + validate_virtcol(); +--- 6728,6733 ---- +*** ../vim-7.4.211/src/option.c 2014-03-12 18:55:52.100906804 +0100 +--- src/option.c 2014-03-23 13:28:12.359168452 +0100 +*************** +*** 1629,1639 **** + #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, +--- 1629,1635 ---- +*************** +*** 2190,2208 **** + (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 +--- 2186,2196 ---- +*************** +*** 2979,2991 **** + 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 +--- 2967,2975 ---- +*************** +*** 6578,6584 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* 'selection' */ + else if (varp == &p_sel) + { +--- 6562,6567 ---- +*************** +*** 6593,6599 **** + if (check_opt_strings(p_slm, p_slm_values, TRUE) != OK) + errmsg = e_invarg; + } +- #endif + + #ifdef FEAT_BROWSE + /* 'browsedir' */ +--- 6576,6581 ---- +*************** +*** 6605,6611 **** + } + #endif + +- #ifdef FEAT_VISUAL + /* 'keymodel' */ + else if (varp == &p_km) + { +--- 6587,6592 ---- +*************** +*** 6617,6623 **** + km_startsel = (vim_strchr(p_km, 'a') != NULL); + } + } +- #endif + + /* 'mousemodel' */ + else if (varp == &p_mousem) +--- 6598,6603 ---- +*** ../vim-7.4.211/src/os_msdos.c 2013-05-06 04:06:04.000000000 +0200 +--- src/os_msdos.c 2014-03-23 13:28:24.855168644 +0100 +*************** +*** 2270,2278 **** + default: + case 'L': type = MLINE; break; + case 'C': type = MCHAR; break; +- #ifdef FEAT_VISUAL + case 'B': type = MBLOCK; break; +- #endif + } + } + +--- 2270,2276 ---- +*************** +*** 2799,2807 **** + 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( +--- 2797,2803 ---- +*** ../vim-7.4.211/src/os_qnx.c 2011-09-21 19:48:08.000000000 +0200 +--- src/os_qnx.c 2014-03-23 13:28:38.815168858 +0100 +*************** +*** 78,86 **** + 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; + } +--- 78,84 ---- +*************** +*** 143,151 **** + 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); +--- 141,147 ---- +*** ../vim-7.4.211/src/quickfix.c 2014-03-12 19:41:37.096948866 +0100 +--- src/quickfix.c 2014-03-23 13:28:50.907169043 +0100 +*************** +*** 2347,2355 **** + else + height = QF_WINHEIGHT; + +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +--- 2347,2353 ---- +*** ../vim-7.4.211/src/regexp.c 2013-11-21 17:12:55.000000000 +0100 +--- src/regexp.c 2014-03-23 13:29:14.495169404 +0100 +*************** +*** 4179,4187 **** + - (*mb_head_off)(regline, reginput - 1), reg_buf); + return -1; + } +- + #endif +! #ifdef FEAT_VISUAL + static int reg_match_visual __ARGS((void)); + + /* +--- 4179,4186 ---- + - (*mb_head_off)(regline, reginput - 1), reg_buf); + return -1; + } + #endif +! + static int reg_match_visual __ARGS((void)); + + /* +*************** +*** 4258,4264 **** + } + return TRUE; + } +- #endif + + #define ADVANCE_REGINPUT() mb_ptr_adv(reginput) + +--- 4257,4262 ---- +*************** +*** 4440,4448 **** + break; + + case RE_VISUAL: +- #ifdef FEAT_VISUAL + if (!reg_match_visual()) +- #endif + status = RA_NOMATCH; + break; + +--- 4438,4444 ---- +*** ../vim-7.4.211/src/regexp_nfa.c 2013-11-28 14:20:11.000000000 +0100 +--- src/regexp_nfa.c 2014-03-23 13:29:31.367169663 +0100 +*************** +*** 6403,6416 **** + 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: +--- 6403,6414 ---- +*** ../vim-7.4.211/src/screen.c 2013-12-11 15:51:54.000000000 +0100 +--- src/screen.c 2014-03-23 13:32:10.787172106 +0100 +*************** +*** 446,453 **** + #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 + */ +--- 446,451 ---- +*************** +*** 458,464 **** + redraw_curbuf_later(type); + update_screen(type); + } +- #endif + + /* + * update_screen() +--- 456,461 ---- +*************** +*** 596,609 **** + && 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; + +--- 593,604 ---- +*************** +*** 1030,1039 **** + 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 */ +--- 1025,1032 ---- +*************** +*** 1354,1362 **** + /* 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. */ +--- 1347,1353 ---- +*************** +*** 1513,1519 **** + 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)) +--- 1504,1509 ---- +*************** +*** 1708,1714 **** + 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 */ +--- 1698,1703 ---- +*************** +*** 2670,2676 **** + * 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)) +--- 2659,2664 ---- +*************** +*** 2718,2724 **** + } + } + } +- #endif + + #ifdef FEAT_SYN_HL + /* Show 'cursorcolumn' in the fold line. */ +--- 2706,2711 ---- +*************** +*** 2876,2885 **** + 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; + +--- 2863,2870 ---- +*************** +*** 3090,3096 **** + */ + fromcol = -10; + tocol = MAXCOL; +- #ifdef FEAT_VISUAL + if (VIsual_active && wp->w_buffer == curwin->w_buffer) + { + /* Visual is after curwin->w_cursor */ +--- 3075,3080 ---- +*************** +*** 3183,3191 **** + /* + * handle 'incsearch' and ":s///c" highlighting + */ +! else +! #endif /* FEAT_VISUAL */ +! if (highlight_match + && wp == curwin + && lnum >= curwin->w_cursor.lnum + && lnum <= curwin->w_cursor.lnum + search_match_lines) +--- 3167,3173 ---- + /* + * handle 'incsearch' and ":s///c" highlighting + */ +! else if (highlight_match + && wp == curwin + && lnum >= curwin->w_cursor.lnum + && lnum <= curwin->w_cursor.lnum + search_match_lines) +*************** +*** 3324,3330 **** + mb_ptr_adv(ptr); + } + +- #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL) + /* When: + * - 'cuc' is set, or + * - 'colorcolumn' is set, or +--- 3306,3311 ---- +*************** +*** 3333,3359 **** + * 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 +! )) + { + 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. */ +--- 3314,3329 ---- + * 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 || +! #endif +! #ifdef FEAT_VIRTUALEDIT +! virtual_active() || +! #endif +! (VIsual_active && wp->w_buffer == curwin->w_buffer))) + { + vcol = v; + } + + /* Handle a character that's not completely on the screen: Put ptr at + * that character but skip the first few screen characters. */ +*************** +*** 4500,4508 **** + && ((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) : +--- 4470,4476 ---- +*************** +*** 4854,4864 **** + #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 */ +--- 4822,4830 ---- +*************** +*** 9659,9668 **** + do_mode = ((p_smd && msg_silent == 0) + && ((State & INSERT) + || restart_edit +! #ifdef FEAT_VISUAL +! || VIsual_active +! #endif +! )); + if (do_mode || Recording) + { + /* +--- 9625,9631 ---- + do_mode = ((p_smd && msg_silent == 0) + && ((State & INSERT) + || restart_edit +! || VIsual_active)); + if (do_mode || Recording) + { + /* +*************** +*** 9790,9796 **** + if ((State & INSERT) && p_paste) + MSG_PUTS_ATTR(_(" (paste)"), attr); + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + char *p; +--- 9753,9758 ---- +*************** +*** 9810,9816 **** + } + MSG_PUTS_ATTR(_(p), attr); + } +- #endif + MSG_PUTS_ATTR(" --", attr); + } + +--- 9772,9777 ---- +*************** +*** 9839,9849 **** + 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 */ +--- 9800,9808 ---- +*** ../vim-7.4.211/src/search.c 2014-01-14 21:31:30.000000000 +0100 +--- src/search.c 2014-03-23 13:34:46.351174489 +0100 +*************** +*** 506,512 **** + #endif + + /* +! * 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'. + * +--- 506,512 ---- + #endif + + /* +! * 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'. + * +*************** +*** 3198,3204 **** + 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(); +--- 3198,3203 ---- +*************** +*** 3208,3214 **** + * 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. +--- 3207,3212 ---- +*************** +*** 3245,3251 **** + include_white = TRUE; + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* should do something when inclusive == FALSE ! */ +--- 3243,3248 ---- +*************** +*** 3253,3259 **** + redraw_curbuf_later(INVERTED); /* update the inversion */ + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3250,3255 ---- +*************** +*** 3267,3273 **** + while (count > 0) + { + inclusive = TRUE; +- #ifdef FEAT_VISUAL + if (VIsual_active && lt(curwin->w_cursor, VIsual)) + { + /* +--- 3263,3268 ---- +*************** +*** 3288,3294 **** + } + } + else +- #endif + { + /* + * Move cursor forward one word and/or white area. +--- 3283,3288 ---- +*************** +*** 3334,3351 **** + 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)) +--- 3328,3342 ---- +*************** +*** 3357,3363 **** + } + } + else +- #endif + oap->inclusive = inclusive; + + return OK; +--- 3348,3353 ---- +*************** +*** 3384,3390 **** + 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. + */ +--- 3374,3379 ---- +*************** +*** 3471,3477 **** + } + return OK; + } +- #endif + + /* + * If the cursor started on a blank, check if it is just before the start +--- 3460,3465 ---- +*************** +*** 3521,3527 **** + find_first_blank(&start_pos); + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Avoid getting stuck with "is" on a single space before a sentence. */ +--- 3509,3514 ---- +*************** +*** 3534,3540 **** + 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) +--- 3521,3526 ---- +*************** +*** 3574,3582 **** + /* + * 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 */ +--- 3560,3566 ---- +*************** +*** 3587,3593 **** + /* 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; +--- 3571,3576 ---- +*************** +*** 3595,3601 **** + } + else + old_end = VIsual; +- #endif + + /* + * Search backwards for unclosed '(', '{', etc.. +--- 3578,3583 ---- +*************** +*** 3641,3647 **** + 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. +--- 3623,3628 ---- +*************** +*** 3666,3676 **** + curwin->w_cursor = *end_pos; + } + else +- #endif + break; + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + if (*p_sel == 'e') +--- 3647,3655 ---- +*************** +*** 3683,3689 **** + showmode(); + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3662,3667 ---- +*************** +*** 3807,3823 **** + 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 "" select that block. + */ +- #ifdef FEAT_VISUAL + if (!VIsual_active || equalpos(VIsual, curwin->w_cursor)) +- #endif + { + setpcmark(); + +--- 3785,3797 ---- +*************** +*** 3843,3849 **** + old_end = curwin->w_cursor; + } + } +- #ifdef FEAT_VISUAL + else if (lt(VIsual, curwin->w_cursor)) + { + old_start = VIsual; +--- 3817,3822 ---- +*************** +*** 3851,3857 **** + } + else + old_end = VIsual; +- #endif + + again: + /* +--- 3824,3829 ---- +*************** +*** 3951,3957 **** + } + } + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* If the end is before the start there is no text between tags, select +--- 3923,3928 ---- +*************** +*** 3966,3972 **** + showmode(); + } + else +- #endif + { + oap->start = start_pos; + oap->motion_type = MCHAR; +--- 3937,3942 ---- +*************** +*** 4010,4016 **** + + start_lnum = curwin->w_cursor.lnum; + +- #ifdef FEAT_VISUAL + /* + * When visual area is more than one line: extend it. + */ +--- 3980,3985 ---- +*************** +*** 4064,4070 **** + curwin->w_cursor.col = 0; + return retval; + } +- #endif + + /* + * First move back to the start_lnum of the paragraph or white lines +--- 4033,4038 ---- +*************** +*** 4136,4142 **** + 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 +--- 4104,4109 ---- +*************** +*** 4149,4155 **** + showmode(); + } + else +- #endif + { + oap->start.lnum = start_lnum; + oap->start.col = 0; +--- 4116,4121 ---- +*************** +*** 4247,4253 **** + 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 */ +--- 4213,4218 ---- +*************** +*** 4331,4347 **** + } + } + else +- #endif + +! if (line[col_start] == quotechar +! #ifdef FEAT_VISUAL +! || !vis_empty +! #endif +! ) + { + int first_col = col_start; + +- #ifdef FEAT_VISUAL + if (!vis_empty) + { + if (vis_bef_curs) +--- 4296,4306 ---- + } + } + else + +! if (line[col_start] == quotechar || !vis_empty) + { + int first_col = col_start; + + if (!vis_empty) + { + if (vis_bef_curs) +*************** +*** 4349,4355 **** + 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 +--- 4308,4314 ---- + else + first_col = find_prev_quote(line, col_start, quotechar, NULL); + } +! + /* 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 +*************** +*** 4406,4419 **** + + /* 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 +! ) + ++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 +--- 4365,4373 ---- + + /* Set start position. After vi" another i" must include the ". + * For v2i" include the quotes. */ +! if (!include && count < 2 && (vis_empty || !inside_quotes)) + ++col_start; + curwin->w_cursor.col = col_start; + if (VIsual_active) + { + /* Set the start of the Visual area when the Visual area was empty, we +*************** +*** 4433,4439 **** + } + } + else +- #endif + { + oap->start = curwin->w_cursor; + oap->motion_type = MCHAR; +--- 4387,4392 ---- +*************** +*** 4441,4454 **** + + /* Set end position. */ + curwin->w_cursor.col = col_end; +! if ((include || count > 1 +! #ifdef FEAT_VISUAL +! /* 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) +--- 4394,4403 ---- + + /* Set end position. */ + curwin->w_cursor.col = col_end; +! if ((include || count > 1 /* After vi" another i" must include the ". */ + || (!vis_empty && inside_quotes) + ) && inc_cursor() == 2) + inclusive = TRUE; + if (VIsual_active) + { + if (vis_empty || vis_bef_curs) +*************** +*** 4480,4486 **** + } + } + else +- #endif + { + /* Set inclusive and other oap's flags. */ + oap->inclusive = inclusive; +--- 4429,4434 ---- +*************** +*** 4491,4497 **** + + #endif /* FEAT_TEXTOBJ */ + +- #if defined(FEAT_VISUAL) || defined(PROTO) + static int is_one_char __ARGS((char_u *pattern)); + + /* +--- 4439,4444 ---- +*************** +*** 4690,4696 **** + vim_regfree(regmatch.regprog); + return result; + } +- #endif /* FEAT_VISUAL */ + + #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ + || defined(PROTO) +--- 4637,4642 ---- +*** ../vim-7.4.211/src/spell.c 2014-03-08 16:13:39.123462070 +0100 +--- src/spell.c 2014-03-23 13:35:15.195174931 +0100 +*************** +*** 10191,10197 **** + if (no_spell_checking(curwin)) + return; + +- #ifdef FEAT_VISUAL + if (VIsual_active) + { + /* Use the Visually selected text as the bad word. But reject +--- 10191,10196 ---- +*************** +*** 10209,10218 **** + ++badlen; + end_visual_mode(); + } +! else +! #endif +! /* Find the start of the badly spelled word. */ +! 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 +--- 10208,10215 ---- + ++badlen; + end_visual_mode(); + } +! /* 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 +*** ../vim-7.4.211/src/syntax.c 2013-11-28 18:53:47.000000000 +0100 +--- src/syntax.c 2014-03-23 13:35:30.379175164 +0100 +*************** +*** 6837,6846 **** + 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"), +--- 6837,6844 ---- +*************** +*** 6927,6936 **** + 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"), +--- 6925,6932 ---- +*** ../vim-7.4.211/src/term.c 2014-03-19 14:01:53.153903819 +0100 +--- src/term.c 2014-03-23 13:35:43.519175365 +0100 +*************** +*** 3456,3467 **** + return; + } + +- # ifdef FEAT_VISUAL + if (VIsual_active) + checkfor = MOUSE_VISUAL; +! else +! # endif +! if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) + checkfor = MOUSE_RETURN; + else if (State & INSERT) + checkfor = MOUSE_INSERT; +--- 3456,3464 ---- + return; + } + + if (VIsual_active) + checkfor = MOUSE_VISUAL; +! else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE) + checkfor = MOUSE_RETURN; + else if (State & INSERT) + checkfor = MOUSE_INSERT; +*** ../vim-7.4.211/src/ui.c 2013-07-13 20:57:08.000000000 +0200 +--- src/ui.c 2014-03-23 13:36:15.459175855 +0100 +*************** +*** 2610,2622 **** + 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)) +--- 2610,2620 ---- +*************** +*** 2686,2717 **** + } + #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 + && !on_sep_line +! # endif +! # ifdef FEAT_FOLDING + && ( +! # ifdef FEAT_RIGHTLEFT + wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc : +! # endif + col >= wp->w_p_fdc +! # ifdef FEAT_CMDWIN + + (cmdwin_type == 0 && wp == curwin ? 0 : 1) +- # 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) + { +--- 2684,2713 ---- + } + #endif + + /* 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 + && !on_sep_line +! #endif +! #ifdef FEAT_FOLDING + && ( +! # ifdef FEAT_RIGHTLEFT + wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc : +! # endif + col >= wp->w_p_fdc +! # ifdef FEAT_CMDWIN + + (cmdwin_type == 0 && wp == curwin ? 0 : 1) + # endif ++ ) ++ #endif + && (flags & MOUSE_MAY_STOP_VIS)))) + { + end_visual_mode(); + redraw_curbuf_later(INVERTED); /* delete the inversion */ + } + #ifdef FEAT_CMDWIN + if (cmdwin_type != 0 && wp != curwin) + { +*************** +*** 2801,2814 **** + #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. */ +--- 2797,2808 ---- +*************** +*** 2933,2939 **** + 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) + { +--- 2927,2932 ---- +*************** +*** 2947,2953 **** + 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 */ +--- 2940,2945 ---- +*** ../vim-7.4.211/src/undo.c 2014-03-12 16:51:35.060792541 +0100 +--- src/undo.c 2014-03-23 13:37:05.435176620 +0100 +*************** +*** 532,540 **** + + /* 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) +--- 532,538 ---- +*************** +*** 1014,1029 **** + /* 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. */ +--- 1012,1018 ---- +*************** +*** 1082,1095 **** + 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. */ +--- 1071,1077 ---- +*************** +*** 2406,2414 **** + 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; + +--- 2388,2394 ---- +*************** +*** 2430,2438 **** + * 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; +--- 2410,2416 ---- +*************** +*** 2602,2614 **** + 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 +--- 2580,2590 ---- +*** ../vim-7.4.211/src/version.c 2014-03-22 13:29:57.693846167 +0100 +--- src/version.c 2014-03-23 15:01:49.719254526 +0100 +*************** +*** 642,656 **** + #else + "-virtualedit", + #endif +- #ifdef FEAT_VISUAL + "+visual", +! # ifdef FEAT_VISUALEXTRA + "+visualextra", +- # else +- "-visualextra", +- # endif + #else +! "-visual", + #endif + #ifdef FEAT_VIMINFO + "+viminfo", +--- 642,652 ---- + #else + "-virtualedit", + #endif + "+visual", +! #ifdef FEAT_VISUALEXTRA + "+visualextra", + #else +! "-visualextra", + #endif + #ifdef FEAT_VIMINFO + "+viminfo", +*** ../vim-7.4.211/src/window.c 2014-01-10 15:53:09.000000000 +0100 +--- src/window.c 2014-03-23 13:38:17.767177729 +0100 +*************** +*** 130,138 **** + 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. */ +--- 130,136 ---- +*************** +*** 150,158 **** + 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. */ +--- 148,154 ---- +*************** +*** 170,178 **** + 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, +--- 166,172 ---- +*************** +*** 184,192 **** + case Ctrl_N: + case 'n': + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_QUICKFIX + newwindow: + #endif +--- 178,184 ---- +*************** +*** 206,223 **** + /* 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; + +--- 198,211 ---- +*************** +*** 226,234 **** + 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; + +--- 214,220 ---- +*************** +*** 248,256 **** + 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; + +--- 234,240 ---- +*************** +*** 399,416 **** + 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; + +--- 383,396 ---- +*************** +*** 499,507 **** + case ']': + case Ctrl_RSB: + CHECK_CMDWIN +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + if (Prenum) + postponed_split = Prenum; + else +--- 479,485 ---- +*************** +*** 612,620 **** + #endif + case ']': + case Ctrl_RSB: +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + if (Prenum) + postponed_split = Prenum; + else +--- 590,596 ---- +*************** +*** 3726,3734 **** + { + tabpage_T *tp = curtab; + +- #ifdef FEAT_VISUAL + reset_VIsual_and_resel(); /* stop Visual mode */ +- #endif + #ifdef FEAT_AUTOCMD + if (trigger_leave_autocmds) + { +--- 3702,3708 ---- +*************** +*** 4029,4040 **** + 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; +--- 4003,4012 ---- +*************** +*** 6037,6043 **** + long count; + linenr_T *file_lnum; + { +- # ifdef FEAT_VISUAL + if (VIsual_active) + { + int len; +--- 6009,6014 ---- +*************** +*** 6048,6054 **** + 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); + +--- 6019,6024 ---- +*** ../vim-7.4.211/src/feature.h 2014-03-12 17:56:42.960852421 +0100 +--- src/feature.h 2014-03-23 13:39:02.003178407 +0100 +*************** +*** 214,220 **** + * +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 +--- 214,219 ---- +*************** +*** 1138,1150 **** + #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) \ + && (defined(UNIX) || defined(VMS)) \ + && defined(WANT_X11) && defined(HAVE_X11) + # define FEAT_XCLIPBOARD +--- 1137,1146 ---- + #ifdef FEAT_GUI + # ifndef FEAT_CLIPBOARD + # define FEAT_CLIPBOARD + # endif + #endif + +! #if defined(FEAT_NORMAL) \ + && (defined(UNIX) || defined(VMS)) \ + && defined(WANT_X11) && defined(HAVE_X11) + # define FEAT_XCLIPBOARD +*** ../vim-7.4.211/src/globals.h 2014-02-22 23:03:48.712901208 +0100 +--- src/globals.h 2014-03-23 13:39:17.407178643 +0100 +*************** +*** 662,668 **** + /* 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 */ +--- 662,667 ---- +*************** +*** 677,683 **** + + EXTERN int redo_VIsual_busy INIT(= FALSE); + /* TRUE when redoing Visual */ +- #endif + + #ifdef FEAT_MOUSE + /* +--- 676,681 ---- +*************** +*** 1178,1188 **** + 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 */ +--- 1176,1184 ---- +*** ../vim-7.4.211/src/option.h 2014-03-12 18:55:52.104906804 +0100 +--- src/option.h 2014-03-23 13:39:30.991178851 +0100 +*************** +*** 572,580 **** + 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 +--- 572,578 ---- +*************** +*** 681,690 **** + #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; +--- 679,686 ---- +*** ../vim-7.4.211/src/os_win32.h 2013-09-25 19:13:32.000000000 +0200 +--- src/os_win32.h 2014-03-23 13:39:49.819179139 +0100 +*************** +*** 68,74 **** + #endif + + #define USE_FNAME_CASE /* adjust case of file names */ +! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_VISUAL) && defined(FEAT_MOUSE) + # define FEAT_CLIPBOARD /* include clipboard support */ + #endif + #if defined(__DATE__) && defined(__TIME__) +--- 68,74 ---- + #endif + + #define USE_FNAME_CASE /* adjust case of file names */ +! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_MOUSE) + # define FEAT_CLIPBOARD /* include clipboard support */ + #endif + #if defined(__DATE__) && defined(__TIME__) +*** ../vim-7.4.211/src/structs.h 2014-03-12 18:55:52.104906804 +0100 +--- src/structs.h 2014-03-23 13:40:19.175179589 +0100 +*************** +*** 346,354 **** + #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 */ +--- 346,352 ---- +*************** +*** 1406,1417 **** + + 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 + int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */ +- # endif + #endif + + pos_T b_last_cursor; /* cursor position when last unloading this +--- 1404,1413 ---- + + pos_T b_namedm[NMARKS]; /* current named marks (mark.c) */ + + /* These variables are set when VIsual_active becomes FALSE */ + visualinfo_T b_visual; +! #ifdef FEAT_EVAL + int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */ + #endif + + pos_T b_last_cursor; /* cursor position when last unloading this +*************** +*** 1980,1986 **** + time through cursupdate() to the + current virtual column */ + +- #ifdef FEAT_VISUAL + /* + * the next six are used to update the visual part + */ +--- 1976,1981 ---- +*************** +*** 1991,1997 **** + 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 +--- 1986,1991 ---- +*************** +*** 2293,2302 **** + (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 +--- 2287,2294 ---- +*** ../vim-7.4.211/src/version.c 2014-03-22 13:29:57.693846167 +0100 +--- src/version.c 2014-03-23 15:01:49.719254526 +0100 +*************** +*** 740,741 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 212, + /**/ + +-- +If all you have is a hammer, everything looks like a nail. +When your hammer is C++, everything begins to look like a thumb. + -- Steve Hoflich, comp.lang.c++ + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///