home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.4 / 7.4.212 < prev    next >
Encoding:
Internet Message Format  |  2014-03-22  |  134.2 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.4.212
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.4.212 (after 7.4.200)
  11. Problem:    Now that the +visual feature is always enabled the #ifdefs for it
  12.         are not useful.
  13. Solution:   Remove the checks for FEAT_VISUAL.
  14. Files:        src/buffer.c, src/charset.c, src/edit.c, src/eval.c,
  15.         src/ex_cmds.c, src/ex_docmd.c, src/fold.c, src/getchar.c,
  16.         src/gui.c, src/gui_mac.c, src/gui_w48.c, src/main.c, src/mark.c,
  17.         src/menu.c, src/misc2.c, src/move.c, src/netbeans.c, src/normal.c,
  18.         src/ops.c, src/option.c, src/os_msdos.c, src/os_qnx.c,
  19.         src/quickfix.c, src/regexp.c, src/regexp_nfa.c, src/screen.c,
  20.         src/search.c, src/spell.c, src/syntax.c, src/term.c, src/ui.c,
  21.         src/undo.c, src/version.c, src/window.c, src/feature.h,
  22.         src/globals.h, src/option.h, src/os_win32.h, src/structs.h
  23.  
  24.  
  25. *** ../vim-7.4.211/src/buffer.c    2014-03-12 18:55:52.100906804 +0100
  26. --- src/buffer.c    2014-03-23 13:01:39.843144050 +0100
  27. ***************
  28. *** 1432,1441 ****
  29.       curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
  30.       buflist_altfpos(curwin);             /* remember curpos */
  31.   
  32. - #ifdef FEAT_VISUAL
  33.       /* Don't restart Select mode after switching to another buffer. */
  34.       VIsual_reselect = FALSE;
  35. - #endif
  36.   
  37.       /* close_windows() or apply_autocmds() may change curbuf */
  38.       prevbuf = curbuf;
  39. --- 1432,1439 ----
  40. *** ../vim-7.4.211/src/charset.c    2013-02-06 16:20:01.000000000 +0100
  41. --- src/charset.c    2014-03-23 13:02:19.467144657 +0100
  42. ***************
  43. *** 1380,1389 ****
  44.           && (State & NORMAL)
  45.           && !wp->w_p_list
  46.           && !virtual_active()
  47. ! #ifdef FEAT_VISUAL
  48. !         && !(VIsual_active
  49. !                    && (*p_sel == 'e' || ltoreq(*pos, VIsual)))
  50. ! #endif
  51.           )
  52.           *cursor = vcol + incr - 1;        /* cursor at end */
  53.       else
  54. --- 1380,1386 ----
  55.           && (State & NORMAL)
  56.           && !wp->w_p_list
  57.           && !virtual_active()
  58. !         && !(VIsual_active && (*p_sel == 'e' || ltoreq(*pos, VIsual)))
  59.           )
  60.           *cursor = vcol + incr - 1;        /* cursor at end */
  61.       else
  62. ***************
  63. *** 1463,1469 ****
  64.   }
  65.   #endif
  66.   
  67. - #if defined(FEAT_VISUAL) || defined(PROTO)
  68.   /*
  69.    * Get the leftmost and rightmost virtual column of pos1 and pos2.
  70.    * Used for Visual block mode.
  71. --- 1460,1465 ----
  72. ***************
  73. *** 1500,1506 ****
  74.       else
  75.       *right = to1;
  76.   }
  77. - #endif
  78.   
  79.   /*
  80.    * skipwhite: skip over ' ' and '\t'.
  81. --- 1496,1501 ----
  82. *** ../vim-7.4.211/src/edit.c    2014-02-22 23:03:48.712901208 +0100
  83. --- src/edit.c    2014-03-23 13:03:11.951145462 +0100
  84. ***************
  85. *** 220,228 ****
  86.   #ifdef FEAT_RIGHTLEFT
  87.   static void ins_ctrl_ __ARGS((void));
  88.   #endif
  89. - #ifdef FEAT_VISUAL
  90.   static int ins_start_select __ARGS((int c));
  91. - #endif
  92.   static void ins_insert __ARGS((int replaceState));
  93.   static void ins_ctrl_o __ARGS((void));
  94.   static void ins_shift __ARGS((int c, int lastc));
  95. --- 220,226 ----
  96. ***************
  97. *** 932,938 ****
  98.           }
  99.   #endif
  100.   
  101. - #ifdef FEAT_VISUAL
  102.       /*
  103.        * If 'keymodel' contains "startsel", may start selection.  If it
  104.        * does, a CTRL-O and c will be stuffed, we need to get these
  105. --- 930,935 ----
  106. ***************
  107. *** 940,946 ****
  108.        */
  109.       if (ins_start_select(c))
  110.           continue;
  111. - #endif
  112.   
  113.       /*
  114.        * The big switch to handle a character in insert mode.
  115. --- 937,942 ----
  116. ***************
  117. *** 6900,6906 ****
  118.           else if (cc != NUL)
  119.           ++curwin->w_cursor.col;    /* put cursor back on the NUL */
  120.   
  121. - #ifdef FEAT_VISUAL
  122.           /* <C-S-Right> may have started Visual mode, adjust the position for
  123.            * deleted characters. */
  124.           if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
  125. --- 6896,6901 ----
  126. ***************
  127. *** 6910,6921 ****
  128.           if (VIsual.col > len)
  129.           {
  130.               VIsual.col = len;
  131. ! # ifdef FEAT_VIRTUALEDIT
  132.               VIsual.coladd = 0;
  133. ! # endif
  134.           }
  135.           }
  136. - #endif
  137.       }
  138.       }
  139.       did_ai = FALSE;
  140. --- 6905,6915 ----
  141.           if (VIsual.col > len)
  142.           {
  143.               VIsual.col = len;
  144. ! #ifdef FEAT_VIRTUALEDIT
  145.               VIsual.coladd = 0;
  146. ! #endif
  147.           }
  148.           }
  149.       }
  150.       }
  151.       did_ai = FALSE;
  152. ***************
  153. *** 8112,8120 ****
  154.       int        need_redraw = FALSE;
  155.       int        regname;
  156.       int        literally = 0;
  157. - #ifdef FEAT_VISUAL
  158.       int        vis_active = VIsual_active;
  159. - #endif
  160.   
  161.       /*
  162.        * If we are going to wait for a character, show a '"'.
  163. --- 8106,8112 ----
  164. ***************
  165. *** 8218,8228 ****
  166.       if (need_redraw || stuff_empty())
  167.       edit_unputchar();
  168.   
  169. - #ifdef FEAT_VISUAL
  170.       /* Disallow starting Visual mode here, would get a weird mode. */
  171.       if (!vis_active && VIsual_active)
  172.       end_visual_mode();
  173. - #endif
  174.   }
  175.   
  176.   /*
  177. --- 8210,8218 ----
  178. ***************
  179. *** 8419,8429 ****
  180.   #endif
  181.              )
  182.           && (restart_edit == NUL
  183. !            || (gchar_cursor() == NUL
  184. ! #ifdef FEAT_VISUAL
  185. !                && !VIsual_active
  186. ! #endif
  187. !               ))
  188.   #ifdef FEAT_RIGHTLEFT
  189.           && !revins_on
  190.   #endif
  191. --- 8409,8415 ----
  192.   #endif
  193.              )
  194.           && (restart_edit == NUL
  195. !            || (gchar_cursor() == NUL && !VIsual_active))
  196.   #ifdef FEAT_RIGHTLEFT
  197.           && !revins_on
  198.   #endif
  199. ***************
  200. *** 8525,8531 ****
  201.   }
  202.   #endif
  203.   
  204. - #ifdef FEAT_VISUAL
  205.   /*
  206.    * If 'keymodel' contains "startsel", may start selection.
  207.    * Returns TRUE when a CTRL-O and other keys stuffed.
  208. --- 8511,8516 ----
  209. ***************
  210. *** 8581,8587 ****
  211.       }
  212.       return FALSE;
  213.   }
  214. - #endif
  215.   
  216.   /*
  217.    * <Insert> key in Insert mode: toggle insert/replace mode.
  218. --- 8566,8571 ----
  219. *** ../vim-7.4.211/src/eval.c    2014-02-24 03:31:55.816738026 +0100
  220. --- src/eval.c    2014-03-23 13:03:56.419146143 +0100
  221. ***************
  222. *** 11833,11844 ****
  223.       {
  224.       case MLINE: buf[0] = 'V'; break;
  225.       case MCHAR: buf[0] = 'v'; break;
  226. - #ifdef FEAT_VISUAL
  227.       case MBLOCK:
  228.           buf[0] = Ctrl_V;
  229.           sprintf((char *)buf + 1, "%ld", reglen + 1);
  230.           break;
  231. - #endif
  232.       }
  233.       rettv->v_type = VAR_STRING;
  234.       rettv->vval.v_string = vim_strsave(buf);
  235. --- 11833,11842 ----
  236. ***************
  237. *** 12552,12560 ****
  238.   #ifdef FEAT_VIRTUALEDIT
  239.       "virtualedit",
  240.   #endif
  241. - #ifdef FEAT_VISUAL
  242.       "visual",
  243. - #endif
  244.   #ifdef FEAT_VISUALEXTRA
  245.       "visualextra",
  246.   #endif
  247. --- 12550,12556 ----
  248. ***************
  249. *** 14397,14403 ****
  250.       buf[1] = NUL;
  251.       buf[2] = NUL;
  252.   
  253. - #ifdef FEAT_VISUAL
  254.       if (VIsual_active)
  255.       {
  256.       if (VIsual_select)
  257. --- 14393,14398 ----
  258. ***************
  259. *** 14405,14413 ****
  260.       else
  261.           buf[0] = VIsual_mode;
  262.       }
  263. !     else
  264. ! #endif
  265. !     if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
  266.           || State == CONFIRM)
  267.       {
  268.       buf[0] = 'r';
  269. --- 14400,14406 ----
  270.       else
  271.           buf[0] = VIsual_mode;
  272.       }
  273. !     else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
  274.           || State == CONFIRM)
  275.       {
  276.       buf[0] = 'r';
  277. ***************
  278. *** 16756,16762 ****
  279.           case 'V': case 'l':    /* line-wise selection */
  280.               yank_type = MLINE;
  281.               break;
  282. - #ifdef FEAT_VISUAL
  283.           case 'b': case Ctrl_V:    /* block-wise selection */
  284.               yank_type = MBLOCK;
  285.               if (VIM_ISDIGIT(stropt[1]))
  286. --- 16749,16754 ----
  287. ***************
  288. *** 16766,16772 ****
  289.               --stropt;
  290.               }
  291.               break;
  292. - #endif
  293.           }
  294.       }
  295.   
  296. --- 16758,16763 ----
  297. ***************
  298. *** 18769,18775 ****
  299.       typval_T    *argvars UNUSED;
  300.       typval_T    *rettv UNUSED;
  301.   {
  302. - #ifdef FEAT_VISUAL
  303.       char_u    str[2];
  304.   
  305.       rettv->v_type = VAR_STRING;
  306. --- 18760,18765 ----
  307. ***************
  308. *** 18780,18786 ****
  309.       /* A non-zero number or non-empty string argument: reset mode. */
  310.       if (non_zero_arg(&argvars[0]))
  311.       curbuf->b_visual_mode_eval = NUL;
  312. - #endif
  313.   }
  314.   
  315.   /*
  316. --- 18770,18775 ----
  317. ***************
  318. *** 19154,19167 ****
  319.       return NULL;
  320.       if (name[0] == '.')                /* cursor */
  321.       return &curwin->w_cursor;
  322. - #ifdef FEAT_VISUAL
  323.       if (name[0] == 'v' && name[1] == NUL)    /* Visual start */
  324.       {
  325.       if (VIsual_active)
  326.           return &VIsual;
  327.       return &curwin->w_cursor;
  328.       }
  329. - #endif
  330.       if (name[0] == '\'')            /* mark */
  331.       {
  332.       pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum);
  333. --- 19143,19154 ----
  334. *** ../vim-7.4.211/src/ex_cmds.c    2014-03-19 17:41:20.390105580 +0100
  335. --- src/ex_cmds.c    2014-03-23 13:04:09.359146341 +0100
  336. ***************
  337. *** 3274,3286 ****
  338.       goto theend;
  339.       }
  340.   
  341. - #ifdef FEAT_VISUAL
  342.       /*
  343.        * End Visual mode before switching to another buffer, so the text can be
  344.        * copied into the GUI selection buffer.
  345.        */
  346.       reset_VIsual();
  347. - #endif
  348.   
  349.   #ifdef FEAT_AUTOCMD
  350.       if ((command != NULL || newlnum > (linenr_T)0)
  351. --- 3274,3284 ----
  352. *** ../vim-7.4.211/src/ex_docmd.c    2014-03-12 21:28:09.481046816 +0100
  353. --- src/ex_docmd.c    2014-03-23 13:04:47.975146933 +0100
  354. ***************
  355. *** 8577,8586 ****
  356.       beginline(BL_SOL | BL_FIX);
  357.       }
  358.   
  359. - #if defined(FEAT_VISUAL)
  360.       if (VIsual_active)
  361.       end_visual_mode();
  362. - #endif
  363.   
  364.       switch (eap->cmdidx)
  365.       {
  366. --- 8577,8584 ----
  367. ***************
  368. *** 8991,9001 ****
  369.       RedrawingDisabled = 0;
  370.       p_lz = FALSE;
  371.       update_topline();
  372. !     update_screen(eap->forceit ? CLEAR :
  373. ! #ifdef FEAT_VISUAL
  374. !         VIsual_active ? INVERTED :
  375. ! #endif
  376. !         0);
  377.   #ifdef FEAT_TITLE
  378.       if (need_maketitle)
  379.       maketitle();
  380. --- 8989,8995 ----
  381.       RedrawingDisabled = 0;
  382.       p_lz = FALSE;
  383.       update_topline();
  384. !     update_screen(eap->forceit ? CLEAR : VIsual_active ? INVERTED : 0);
  385.   #ifdef FEAT_TITLE
  386.       if (need_maketitle)
  387.       maketitle();
  388. ***************
  389. *** 9030,9040 ****
  390.       status_redraw_all();
  391.       else
  392.       status_redraw_curbuf();
  393. !     update_screen(
  394. ! # ifdef FEAT_VISUAL
  395. !         VIsual_active ? INVERTED :
  396. ! # endif
  397. !         0);
  398.       RedrawingDisabled = r;
  399.       p_lz = p;
  400.       out_flush();
  401. --- 9024,9030 ----
  402.       status_redraw_all();
  403.       else
  404.       status_redraw_curbuf();
  405. !     update_screen(VIsual_active ? INVERTED : 0);
  406.       RedrawingDisabled = r;
  407.       p_lz = p;
  408.       out_flush();
  409. *** ../vim-7.4.211/src/fold.c    2013-11-05 07:12:59.000000000 +0100
  410. --- src/fold.c    2014-03-23 13:05:14.775147344 +0100
  411. ***************
  412. *** 430,440 ****
  413.       }
  414.       if (done == DONE_NOTHING)
  415.       EMSG(_(e_nofold));
  416. - #ifdef FEAT_VISUAL
  417.       /* Force a redraw to remove the Visual highlighting. */
  418.       if (had_visual)
  419.       redraw_curbuf_later(INVERTED);
  420. - #endif
  421.   }
  422.   
  423.   /* openFold() {{{2 */
  424. --- 430,438 ----
  425. ***************
  426. *** 807,817 ****
  427.       if (!did_one)
  428.       {
  429.       EMSG(_(e_nofold));
  430. - #ifdef FEAT_VISUAL
  431.       /* Force a redraw to remove the Visual highlighting. */
  432.       if (had_visual)
  433.           redraw_curbuf_later(INVERTED);
  434. - #endif
  435.       }
  436.       else
  437.       /* Deleting markers may make cursor column invalid. */
  438. --- 805,813 ----
  439. ***************
  440. *** 1065,1071 ****
  441.   }
  442.   
  443.   /* foldAdjustVisual() {{{2 */
  444. - #ifdef FEAT_VISUAL
  445.   /*
  446.    * Adjust the Visual area to include any fold at the start or end completely.
  447.    */
  448. --- 1061,1066 ----
  449. ***************
  450. *** 1103,1109 ****
  451.   #endif
  452.       }
  453.   }
  454. - #endif
  455.   
  456.   /* cursor_foldstart() {{{2 */
  457.   /*
  458. --- 1098,1103 ----
  459. *** ../vim-7.4.211/src/getchar.c    2014-03-12 20:17:47.748982126 +0100
  460. --- src/getchar.c    2014-03-23 13:05:45.383147813 +0100
  461. ***************
  462. *** 870,876 ****
  463.       c = read_redo(FALSE, old_redo);
  464.       }
  465.   
  466. - #ifdef FEAT_VISUAL
  467.       if (c == 'v')   /* redo Visual */
  468.       {
  469.       VIsual = curwin->w_cursor;
  470. --- 870,875 ----
  471. ***************
  472. *** 880,886 ****
  473.       redo_VIsual_busy = TRUE;
  474.       c = read_redo(FALSE, old_redo);
  475.       }
  476. - #endif
  477.   
  478.       /* try to enter the count (in place of a previous count) */
  479.       if (count)
  480. --- 879,884 ----
  481. ***************
  482. *** 1162,1168 ****
  483.       return typebuf.tb_maplen == 0;
  484.   }
  485.   
  486. - #if defined(FEAT_VISUAL) || defined(PROTO)
  487.   /*
  488.    * Return the number of characters that are mapped (or not typed).
  489.    */
  490. --- 1160,1165 ----
  491. ***************
  492. *** 1171,1177 ****
  493.   {
  494.       return typebuf.tb_maplen;
  495.   }
  496. - #endif
  497.   
  498.   /*
  499.    * remove "len" characters from typebuf.tb_buf[typebuf.tb_off + offset]
  500. --- 1168,1173 ----
  501. ***************
  502. *** 2443,2449 ****
  503.                   idx = get_menu_index(current_menu, local_State);
  504.                   if (idx != MENU_INDEX_INVALID)
  505.                   {
  506. - # ifdef FEAT_VISUAL
  507.                       /*
  508.                        * In Select mode and a Visual mode menu
  509.                        * is used:  Switch to Visual mode
  510. --- 2439,2444 ----
  511. ***************
  512. *** 2457,2463 ****
  513.                       (void)ins_typebuf(K_SELECT_STRING,
  514.                             REMAP_NONE, 0, TRUE, FALSE);
  515.                       }
  516. - # endif
  517.                       ins_typebuf(current_menu->strings[idx],
  518.                           current_menu->noremap[idx],
  519.                           0, TRUE,
  520. --- 2452,2457 ----
  521. ***************
  522. *** 2516,2522 ****
  523.                   break;
  524.               }
  525.   
  526. - #ifdef FEAT_VISUAL
  527.               /*
  528.                * In Select mode and a Visual mode mapping is used:
  529.                * Switch to Visual mode temporarily.  Append K_SELECT
  530. --- 2510,2515 ----
  531. ***************
  532. *** 2529,2535 ****
  533.                   (void)ins_typebuf(K_SELECT_STRING, REMAP_NONE,
  534.                                     0, TRUE, FALSE);
  535.               }
  536. - #endif
  537.   
  538.   #ifdef FEAT_EVAL
  539.               /* Copy the values from *mp that are used, because
  540. --- 2522,2527 ----
  541. *** ../vim-7.4.211/src/gui.c    2013-06-30 17:41:48.000000000 +0200
  542. --- src/gui.c    2014-03-23 13:05:57.623148000 +0100
  543. ***************
  544. *** 3132,3142 ****
  545.        */
  546.       if (!mouse_has(checkfor) || checkfor == MOUSE_COMMAND)
  547.       {
  548. - #ifdef FEAT_VISUAL
  549.       /* Don't do modeless selection in Visual mode. */
  550.       if (checkfor != MOUSE_NONEF && VIsual_active && (State & NORMAL))
  551.           return;
  552. - #endif
  553.   
  554.       /*
  555.        * When 'mousemodel' is "popup", shift-left is translated to right.
  556. --- 3132,3140 ----
  557. *** ../vim-7.4.211/src/gui_mac.c    2013-05-06 04:06:04.000000000 +0200
  558. --- src/gui_mac.c    2014-03-23 13:06:30.143148498 +0100
  559. ***************
  560. *** 1068,1078 ****
  561.       }
  562.    */
  563.   
  564. - #ifdef FEAT_VISUAL
  565.       reset_VIsual();
  566. - #endif
  567.       fnames = new_fnames_from_AEDesc(&theList, &numFiles, &error);
  568.   
  569.       if (error)
  570. --- 1068,1074 ----
  571. ***************
  572. *** 1142,1148 ****
  573.   
  574.       /* Update the screen display */
  575.       update_screen(NOT_VALID);
  576. ! #ifdef FEAT_VISUAL
  577.       /* Select the text if possible */
  578.       if (gotPosition)
  579.       {
  580. --- 1138,1144 ----
  581.   
  582.       /* Update the screen display */
  583.       update_screen(NOT_VALID);
  584.       /* Select the text if possible */
  585.       if (gotPosition)
  586.       {
  587. ***************
  588. *** 1160,1166 ****
  589.           VIsual.col = 0;
  590.       }
  591.       }
  592. ! #endif
  593.       setcursor();
  594.       out_flush();
  595.   
  596. --- 1156,1162 ----
  597.           VIsual.col = 0;
  598.       }
  599.       }
  600.       setcursor();
  601.       out_flush();
  602.   
  603. *** ../vim-7.4.211/src/gui_w48.c    2014-03-19 12:37:18.537826062 +0100
  604. --- src/gui_w48.c    2014-03-23 13:06:44.959148725 +0100
  605. ***************
  606. *** 3708,3716 ****
  607.       DragQueryPoint(hDrop, &pt);
  608.       MapWindowPoints(s_hwnd, s_textArea, &pt, 1);
  609.   
  610. - # ifdef FEAT_VISUAL
  611.       reset_VIsual();
  612. - # endif
  613.   
  614.       fnames = (char_u **)alloc(cFiles * sizeof(char_u *));
  615.   
  616. --- 3708,3714 ----
  617. *** ../vim-7.4.211/src/main.c    2014-01-14 12:57:00.000000000 +0100
  618. --- src/main.c    2014-03-23 13:07:21.771149289 +0100
  619. ***************
  620. *** 1057,1065 ****
  621.       if (!cmdwin && !noexmode && SETJMP(x_jump_env))
  622.       {
  623.       State = NORMAL;
  624. - # ifdef FEAT_VISUAL
  625.       VIsual_active = FALSE;
  626. - # endif
  627.       got_int = TRUE;
  628.       need_wait_return = FALSE;
  629.       global_busy = FALSE;
  630. --- 1057,1063 ----
  631. ***************
  632. *** 1096,1106 ****
  633.           check_timestamps(FALSE);
  634.           if (need_wait_return)    /* if wait_return still needed ... */
  635.           wait_return(FALSE);    /* ... call it now */
  636. !         if (need_start_insertmode && goto_im()
  637. ! #ifdef FEAT_VISUAL
  638. !             && !VIsual_active
  639. ! #endif
  640. !             )
  641.           {
  642.           need_start_insertmode = FALSE;
  643.           stuffReadbuff((char_u *)"i");    /* start insert mode next */
  644. --- 1094,1100 ----
  645.           check_timestamps(FALSE);
  646.           if (need_wait_return)    /* if wait_return still needed ... */
  647.           wait_return(FALSE);    /* ... call it now */
  648. !         if (need_start_insertmode && goto_im() && !VIsual_active)
  649.           {
  650.           need_start_insertmode = FALSE;
  651.           stuffReadbuff((char_u *)"i");    /* start insert mode next */
  652. ***************
  653. *** 1202,1208 ****
  654.           diff_need_scrollbind = FALSE;
  655.           }
  656.   #endif
  657. ! #if defined(FEAT_FOLDING) && defined(FEAT_VISUAL)
  658.           /* Include a closed fold completely in the Visual area. */
  659.           foldAdjustVisual();
  660.   #endif
  661. --- 1196,1202 ----
  662.           diff_need_scrollbind = FALSE;
  663.           }
  664.   #endif
  665. ! #if defined(FEAT_FOLDING)
  666.           /* Include a closed fold completely in the Visual area. */
  667.           foldAdjustVisual();
  668.   #endif
  669. ***************
  670. *** 1228,1239 ****
  671.           update_topline();
  672.           validate_cursor();
  673.   
  674. - #ifdef FEAT_VISUAL
  675.           if (VIsual_active)
  676.           update_curbuf(INVERTED);/* update inverted part */
  677. !         else
  678. ! #endif
  679. !         if (must_redraw)
  680.           update_screen(0);
  681.           else if (redraw_cmdline || clear_cmdline)
  682.           showmode();
  683. --- 1222,1230 ----
  684.           update_topline();
  685.           validate_cursor();
  686.   
  687.           if (VIsual_active)
  688.           update_curbuf(INVERTED);/* update inverted part */
  689. !         else if (must_redraw)
  690.           update_screen(0);
  691.           else if (redraw_cmdline || clear_cmdline)
  692.           showmode();
  693. *** ../vim-7.4.211/src/mark.c    2013-11-03 00:20:46.000000000 +0100
  694. --- src/mark.c    2014-03-23 13:08:03.011149921 +0100
  695. ***************
  696. *** 98,104 ****
  697.       return OK;
  698.       }
  699.   
  700. - #ifdef FEAT_VISUAL
  701.       if (c == '<' || c == '>')
  702.       {
  703.       if (c == '<')
  704. --- 98,103 ----
  705. ***************
  706. *** 110,116 ****
  707.           curbuf->b_visual.vi_mode = 'v';
  708.       return OK;
  709.       }
  710. - #endif
  711.   
  712.   #ifndef EBCDIC
  713.       if (c > 'z')        /* some islower() and isupper() cannot handle
  714. --- 109,114 ----
  715. ***************
  716. *** 340,348 ****
  717.       int        *fnum;
  718.   {
  719.       pos_T        *posp;
  720. - #ifdef FEAT_VISUAL
  721.       pos_T        *startp, *endp;
  722. - #endif
  723.       static pos_T    pos_copy;
  724.   
  725.       posp = NULL;
  726. --- 338,344 ----
  727. ***************
  728. *** 403,409 ****
  729.       curwin->w_cursor = pos;
  730.       listcmd_busy = slcb;
  731.       }
  732. - #ifdef FEAT_VISUAL
  733.       else if (c == '<' || c == '>')    /* start/end of visual area */
  734.       {
  735.       startp = &buf->b_visual.vi_start;
  736. --- 399,404 ----
  737. ***************
  738. *** 428,434 ****
  739.   #endif
  740.       }
  741.       }
  742. - #endif
  743.       else if (ASCII_ISLOWER(c))        /* normal named mark */
  744.       {
  745.       posp = &(buf->b_namedm[c - 'a']);
  746. --- 423,428 ----
  747. ***************
  748. *** 757,766 ****
  749.       show_one_mark(']', arg, &curbuf->b_op_end, NULL, TRUE);
  750.       show_one_mark('^', arg, &curbuf->b_last_insert, NULL, TRUE);
  751.       show_one_mark('.', arg, &curbuf->b_last_change, NULL, TRUE);
  752. - #ifdef FEAT_VISUAL
  753.       show_one_mark('<', arg, &curbuf->b_visual.vi_start, NULL, TRUE);
  754.       show_one_mark('>', arg, &curbuf->b_visual.vi_end, NULL, TRUE);
  755. - #endif
  756.       show_one_mark(-1, arg, NULL, NULL, FALSE);
  757.   }
  758.   
  759. --- 751,758 ----
  760. ***************
  761. *** 892,901 ****
  762.               case '.': curbuf->b_last_change.lnum = 0; break;
  763.               case '[': curbuf->b_op_start.lnum    = 0; break;
  764.               case ']': curbuf->b_op_end.lnum      = 0; break;
  765. - #ifdef FEAT_VISUAL
  766.               case '<': curbuf->b_visual.vi_start.lnum = 0; break;
  767.               case '>': curbuf->b_visual.vi_end.lnum   = 0; break;
  768. - #endif
  769.               case ' ': break;
  770.               default:  EMSG2(_(e_invarg2), p);
  771.                     return;
  772. --- 884,891 ----
  773. ***************
  774. *** 1085,1095 ****
  775.           one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
  776.   #endif
  777.   
  778. - #ifdef FEAT_VISUAL
  779.       /* Visual area */
  780.       one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
  781.       one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
  782. - #endif
  783.   
  784.   #ifdef FEAT_QUICKFIX
  785.       /* quickfix marks */
  786. --- 1075,1083 ----
  787. ***************
  788. *** 1136,1149 ****
  789.               if (win->w_tagstack[i].fmark.fnum == fnum)
  790.               one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
  791.   
  792. - #ifdef FEAT_VISUAL
  793.           /* the displayed Visual area */
  794.           if (win->w_old_cursor_lnum != 0)
  795.           {
  796.           one_adjust_nodel(&(win->w_old_cursor_lnum));
  797.           one_adjust_nodel(&(win->w_old_visual_lnum));
  798.           }
  799. - #endif
  800.   
  801.           /* topline and cursor position for windows with the same buffer
  802.            * other than the current window */
  803. --- 1124,1135 ----
  804. ***************
  805. *** 1260,1270 ****
  806.       col_adjust(&(curbuf->b_changelist[i]));
  807.   #endif
  808.   
  809. - #ifdef FEAT_VISUAL
  810.       /* Visual area */
  811.       col_adjust(&(curbuf->b_visual.vi_start));
  812.       col_adjust(&(curbuf->b_visual.vi_end));
  813. - #endif
  814.   
  815.       /* previous context mark */
  816.       col_adjust(&(curwin->w_pcmark));
  817. --- 1246,1254 ----
  818. *** ../vim-7.4.211/src/menu.c    2011-04-11 15:17:21.000000000 +0200
  819. --- src/menu.c    2014-03-23 13:08:19.091150168 +0100
  820. ***************
  821. *** 1640,1646 ****
  822.       idx = MENU_INDEX_INSERT;
  823.       else if (state & CMDLINE)
  824.       idx = MENU_INDEX_CMDLINE;
  825. - #ifdef FEAT_VISUAL
  826.       else if (VIsual_active)
  827.       {
  828.       if (VIsual_select)
  829. --- 1640,1645 ----
  830. ***************
  831. *** 1648,1654 ****
  832.       else
  833.           idx = MENU_INDEX_VISUAL;
  834.       }
  835. - #endif
  836.       else if (state == HITRETURN || state == ASKMORE)
  837.       idx = MENU_INDEX_CMDLINE;
  838.       else if (finish_op)
  839. --- 1647,1652 ----
  840. ***************
  841. *** 1811,1824 ****
  842.       static int
  843.   get_menu_mode()
  844.   {
  845. - #ifdef FEAT_VISUAL
  846.       if (VIsual_active)
  847.       {
  848.       if (VIsual_select)
  849.           return MENU_INDEX_SELECT;
  850.       return MENU_INDEX_VISUAL;
  851.       }
  852. - #endif
  853.       if (State & INSERT)
  854.       return MENU_INDEX_INSERT;
  855.       if ((State & CMDLINE) || State == ASKMORE || State == HITRETURN)
  856. --- 1809,1820 ----
  857. *** ../vim-7.4.211/src/misc2.c    2014-02-23 23:38:58.824760280 +0100
  858. --- src/misc2.c    2014-03-23 13:08:56.927150748 +0100
  859. ***************
  860. *** 31,39 ****
  861.       if (virtual_op != MAYBE)
  862.       return virtual_op;
  863.       return (ve_flags == VE_ALL
  864. - # ifdef FEAT_VISUAL
  865.           || ((ve_flags & VE_BLOCK) && VIsual_active && VIsual_mode == Ctrl_V)
  866. - # endif
  867.           || ((ve_flags & VE_INSERT) && (State & INSERT)));
  868.   }
  869.   
  870. --- 31,37 ----
  871. ***************
  872. *** 149,157 ****
  873.   
  874.       one_more = (State & INSERT)
  875.               || restart_edit != NUL
  876. - #ifdef FEAT_VISUAL
  877.               || (VIsual_active && *p_sel != 'o')
  878. - #endif
  879.   #ifdef FEAT_VIRTUALEDIT
  880.               || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
  881.   #endif
  882. --- 147,153 ----
  883. ***************
  884. *** 570,578 ****
  885.        * - in Visual mode and 'selection' isn't "old"
  886.        * - 'virtualedit' is set */
  887.       if ((State & INSERT) || restart_edit
  888. - #ifdef FEAT_VISUAL
  889.           || (VIsual_active && *p_sel != 'o')
  890. - #endif
  891.   #ifdef FEAT_VIRTUALEDIT
  892.           || (ve_flags & VE_ONEMORE)
  893.   #endif
  894. --- 566,572 ----
  895. ***************
  896. *** 627,635 ****
  897.   adjust_cursor_col()
  898.   {
  899.       if (curwin->w_cursor.col > 0
  900. - # ifdef FEAT_VISUAL
  901.           && (!VIsual_active || *p_sel == 'o')
  902. - # endif
  903.           && gchar_cursor() == NUL)
  904.       --curwin->w_cursor.col;
  905.   }
  906. --- 621,627 ----
  907. ***************
  908. *** 3290,3306 ****
  909.   {
  910.       if (State & NORMAL)
  911.       {
  912. - #ifdef FEAT_VISUAL
  913.       if (VIsual_active)
  914.       {
  915.           if (VIsual_select)
  916.           return SELECTMODE;
  917.           return VISUAL;
  918.       }
  919. !     else
  920. ! #endif
  921. !         if (finish_op)
  922. !         return OP_PENDING;
  923.       }
  924.       return State;
  925.   }
  926. --- 3282,3295 ----
  927.   {
  928.       if (State & NORMAL)
  929.       {
  930.       if (VIsual_active)
  931.       {
  932.           if (VIsual_select)
  933.           return SELECTMODE;
  934.           return VISUAL;
  935.       }
  936. !     else if (finish_op)
  937. !         return OP_PENDING;
  938.       }
  939.       return State;
  940.   }
  941. ***************
  942. *** 3738,3744 ****
  943.       }
  944.       if (finish_op)
  945.       return SHAPE_IDX_O;
  946. - #ifdef FEAT_VISUAL
  947.       if (VIsual_active)
  948.       {
  949.       if (*p_sel == 'e')
  950. --- 3727,3732 ----
  951. ***************
  952. *** 3746,3752 ****
  953.       else
  954.           return SHAPE_IDX_V;
  955.       }
  956. - #endif
  957.       return SHAPE_IDX_N;
  958.   }
  959.   #endif
  960. --- 3734,3739 ----
  961. *** ../vim-7.4.211/src/move.c    2014-02-11 18:58:05.102320947 +0100
  962. --- src/move.c    2014-03-23 13:09:16.535151048 +0100
  963. ***************
  964. *** 2857,2873 ****
  965.       win_T    *old_curwin = curwin;
  966.       buf_T    *old_curbuf = curbuf;
  967.       int        restart_edit_save;
  968. - # ifdef FEAT_VISUAL
  969.       int        old_VIsual_select = VIsual_select;
  970.       int        old_VIsual_active = VIsual_active;
  971. - # endif
  972.   
  973.       /*
  974.        * loop through the cursorbound windows
  975.        */
  976. - # ifdef FEAT_VISUAL
  977.       VIsual_select = VIsual_active = 0;
  978. - # endif
  979.       for (curwin = firstwin; curwin; curwin = curwin->w_next)
  980.       {
  981.       curbuf = curwin->w_buffer;
  982. --- 2857,2869 ----
  983. ***************
  984. *** 2916,2925 ****
  985.       /*
  986.        * reset current-window
  987.        */
  988. - # ifdef FEAT_VISUAL
  989.       VIsual_select = old_VIsual_select;
  990.       VIsual_active = old_VIsual_active;
  991. - # endif
  992.       curwin = old_curwin;
  993.       curbuf = old_curbuf;
  994.   }
  995. --- 2912,2919 ----
  996. *** ../vim-7.4.211/src/netbeans.c    2012-06-20 19:56:18.000000000 +0200
  997. --- src/netbeans.c    2014-03-23 13:09:29.163151241 +0100
  998. ***************
  999. *** 2232,2242 ****
  1000.   
  1001.           nb_set_curbuf(buf->bufp);
  1002.   
  1003. - #ifdef FEAT_VISUAL
  1004.           /* Don't want Visual mode now. */
  1005.           if (VIsual_active)
  1006.           end_visual_mode();
  1007. - #endif
  1008.   #ifdef NBDEBUG
  1009.           s = args;
  1010.   #endif
  1011. --- 2232,2240 ----
  1012. *** ../vim-7.4.211/src/normal.c    2014-03-12 17:41:59.128838878 +0100
  1013. --- src/normal.c    2014-03-23 15:07:40.435259900 +0100
  1014. ***************
  1015. *** 14,20 ****
  1016.   
  1017.   #include "vim.h"
  1018.   
  1019. - #ifdef FEAT_VISUAL
  1020.   /*
  1021.    * The Visual area is remembered for reselection.
  1022.    */
  1023. --- 14,19 ----
  1024. ***************
  1025. *** 24,30 ****
  1026.   static int    VIsual_mode_orig = NUL;        /* saved Visual mode */
  1027.   
  1028.   static int    restart_VIsual_select = 0;
  1029. - #endif
  1030.   
  1031.   #ifdef FEAT_EVAL
  1032.   static void    set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
  1033. --- 23,28 ----
  1034. ***************
  1035. *** 37,43 ****
  1036.   static int    find_command __ARGS((int cmdchar));
  1037.   static void    op_colon __ARGS((oparg_T *oap));
  1038.   static void    op_function __ARGS((oparg_T *oap));
  1039. ! #if defined(FEAT_MOUSE) && defined(FEAT_VISUAL)
  1040.   static void    find_start_of_word __ARGS((pos_T *));
  1041.   static void    find_end_of_word __ARGS((pos_T *));
  1042.   static int    get_mouse_class __ARGS((char_u *p));
  1043. --- 35,41 ----
  1044.   static int    find_command __ARGS((int cmdchar));
  1045.   static void    op_colon __ARGS((oparg_T *oap));
  1046.   static void    op_function __ARGS((oparg_T *oap));
  1047. ! #if defined(FEAT_MOUSE)
  1048.   static void    find_start_of_word __ARGS((pos_T *));
  1049.   static void    find_end_of_word __ARGS((pos_T *));
  1050.   static int    get_mouse_class __ARGS((char_u *p));
  1051. ***************
  1052. *** 48,56 ****
  1053.   static int    checkclearopq __ARGS((oparg_T *oap));
  1054.   static void    clearop __ARGS((oparg_T *oap));
  1055.   static void    clearopbeep __ARGS((oparg_T *oap));
  1056. - #ifdef FEAT_VISUAL
  1057.   static void    unshift_special __ARGS((cmdarg_T *cap));
  1058. - #endif
  1059.   #ifdef FEAT_CMDL_INFO
  1060.   static void    del_from_showcmd __ARGS((int));
  1061.   #endif
  1062. --- 46,52 ----
  1063. ***************
  1064. *** 117,141 ****
  1065.   #ifdef FEAT_VREPLACE
  1066.   static void    nv_vreplace __ARGS((cmdarg_T *cap));
  1067.   #endif
  1068. - #ifdef FEAT_VISUAL
  1069.   static void    v_swap_corners __ARGS((int cmdchar));
  1070. - #endif
  1071.   static void    nv_replace __ARGS((cmdarg_T *cap));
  1072.   static void    n_swapchar __ARGS((cmdarg_T *cap));
  1073.   static void    nv_cursormark __ARGS((cmdarg_T *cap, int flag, pos_T *pos));
  1074. - #ifdef FEAT_VISUAL
  1075.   static void    v_visop __ARGS((cmdarg_T *cap));
  1076. - #endif
  1077.   static void    nv_subst __ARGS((cmdarg_T *cap));
  1078.   static void    nv_abbrev __ARGS((cmdarg_T *cap));
  1079.   static void    nv_optrans __ARGS((cmdarg_T *cap));
  1080.   static void    nv_gomark __ARGS((cmdarg_T *cap));
  1081.   static void    nv_pcmark __ARGS((cmdarg_T *cap));
  1082.   static void    nv_regname __ARGS((cmdarg_T *cap));
  1083. - #ifdef FEAT_VISUAL
  1084.   static void    nv_visual __ARGS((cmdarg_T *cap));
  1085.   static void    n_start_visual_mode __ARGS((int c));
  1086. - #endif
  1087.   static void    nv_window __ARGS((cmdarg_T *cap));
  1088.   static void    nv_suspend __ARGS((cmdarg_T *cap));
  1089.   static void    nv_g_cmd __ARGS((cmdarg_T *cap));
  1090. --- 113,131 ----
  1091. ***************
  1092. *** 155,165 ****
  1093.   static void    nv_wordcmd __ARGS((cmdarg_T *cap));
  1094.   static void    nv_beginline __ARGS((cmdarg_T *cap));
  1095.   static void    adjust_cursor __ARGS((oparg_T *oap));
  1096. - #ifdef FEAT_VISUAL
  1097.   static void    adjust_for_sel __ARGS((cmdarg_T *cap));
  1098.   static int    unadjust_for_sel __ARGS((void));
  1099.   static void    nv_select __ARGS((cmdarg_T *cap));
  1100. - #endif
  1101.   static void    nv_goto __ARGS((cmdarg_T *cap));
  1102.   static void    nv_normal __ARGS((cmdarg_T *cap));
  1103.   static void    nv_esc __ARGS((cmdarg_T *oap));
  1104. --- 145,153 ----
  1105. ***************
  1106. *** 248,271 ****
  1107.       {Ctrl_N,    nv_down,    NV_STS,            FALSE},
  1108.       {Ctrl_O,    nv_ctrlo,    0,            0},
  1109.       {Ctrl_P,    nv_up,        NV_STS,            FALSE},
  1110. - #ifdef FEAT_VISUAL
  1111.       {Ctrl_Q,    nv_visual,    0,            FALSE},
  1112. - #else
  1113. -     {Ctrl_Q,    nv_ignore,    0,            0},
  1114. - #endif
  1115.       {Ctrl_R,    nv_redo,    0,            0},
  1116.       {Ctrl_S,    nv_ignore,    0,            0},
  1117.       {Ctrl_T,    nv_tagpop,    NV_NCW,            0},
  1118.       {Ctrl_U,    nv_halfpage,    0,            0},
  1119. - #ifdef FEAT_VISUAL
  1120.       {Ctrl_V,    nv_visual,    0,            FALSE},
  1121.       {'V',    nv_visual,    0,            FALSE},
  1122.       {'v',    nv_visual,    0,            FALSE},
  1123. - #else
  1124. -     {Ctrl_V,    nv_error,    0,            0},
  1125. -     {'V',    nv_error,    0,            0},
  1126. -     {'v',    nv_error,    0,            0},
  1127. - #endif
  1128.       {Ctrl_W,    nv_window,    0,            0},
  1129.       {Ctrl_X,    nv_addsub,    0,            0},
  1130.       {Ctrl_Y,    nv_scroll_line,    0,            FALSE},
  1131. --- 236,249 ----
  1132. ***************
  1133. *** 427,435 ****
  1134.       {K_HELP,    nv_help,    NV_NCW,            0},
  1135.       {K_F1,    nv_help,    NV_NCW,            0},
  1136.       {K_XF1,    nv_help,    NV_NCW,            0},
  1137. - #ifdef FEAT_VISUAL
  1138.       {K_SELECT,    nv_select,    0,            0},
  1139. - #endif
  1140.   #ifdef FEAT_GUI
  1141.       {K_VER_SCROLLBAR, nv_ver_scrollbar, 0,        0},
  1142.       {K_HOR_SCROLLBAR, nv_hor_scrollbar, 0,        0},
  1143. --- 405,411 ----
  1144. ***************
  1145. *** 579,589 ****
  1146.   #ifdef FEAT_CMDL_INFO
  1147.       int        need_flushbuf;        /* need to call out_flush() */
  1148.   #endif
  1149. - #ifdef FEAT_VISUAL
  1150.       pos_T    old_pos;        /* cursor position before command */
  1151.       int        mapped_len;
  1152.       static int    old_mapped_len = 0;
  1153. - #endif
  1154.       int        idx;
  1155.   #ifdef FEAT_EVAL
  1156.       int        set_prevcount = FALSE;
  1157. --- 555,563 ----
  1158. ***************
  1159. *** 643,651 ****
  1160.       }
  1161.   #endif
  1162.   
  1163. - #ifdef FEAT_VISUAL
  1164.       mapped_len = typebuf_maplen();
  1165. - #endif
  1166.   
  1167.       State = NORMAL_BUSY;
  1168.   #ifdef USE_ON_FLY_SCROLL
  1169. --- 617,623 ----
  1170. ***************
  1171. *** 666,672 ****
  1172.       c = safe_vgetc();
  1173.       LANGMAP_ADJUST(c, TRUE);
  1174.   
  1175. - #ifdef FEAT_VISUAL
  1176.       /*
  1177.        * If a mapping was started in Visual or Select mode, remember the length
  1178.        * of the mapping.  This is used below to not return to Insert mode for as
  1179. --- 638,643 ----
  1180. ***************
  1181. *** 677,688 ****
  1182.       else if (old_mapped_len
  1183.           || (VIsual_active && mapped_len == 0 && typebuf_maplen() > 0))
  1184.       old_mapped_len = typebuf_maplen();
  1185. - #endif
  1186.   
  1187.       if (c == NUL)
  1188.       c = K_ZERO;
  1189.   
  1190. - #ifdef FEAT_VISUAL
  1191.       /*
  1192.        * In Select mode, typed text replaces the selection.
  1193.        */
  1194. --- 648,657 ----
  1195. ***************
  1196. *** 703,718 ****
  1197.       msg_nowait = TRUE;    /* don't delay going to insert mode */
  1198.       old_mapped_len = 0;    /* do go to Insert mode */
  1199.       }
  1200. - #endif
  1201.   
  1202.   #ifdef FEAT_CMDL_INFO
  1203.       need_flushbuf = add_to_showcmd(c);
  1204.   #endif
  1205.   
  1206.   getcount:
  1207. - #ifdef FEAT_VISUAL
  1208.       if (!(VIsual_active && VIsual_select))
  1209. - #endif
  1210.       {
  1211.       /*
  1212.        * Handle a count before a command and compute ca.count0.
  1213. --- 672,684 ----
  1214. ***************
  1215. *** 856,862 ****
  1216.       goto normal_end;
  1217.   #endif
  1218.   
  1219. - #ifdef FEAT_VISUAL
  1220.       /*
  1221.        * In Visual/Select mode, a few keys are handled in a special way.
  1222.        */
  1223. --- 822,827 ----
  1224. ***************
  1225. *** 892,898 ****
  1226.           }
  1227.       }
  1228.       }
  1229. - #endif
  1230.   
  1231.   #ifdef FEAT_RIGHTLEFT
  1232.       if (curwin->w_p_rl && KeyTyped && !KeyStuffed
  1233. --- 857,862 ----
  1234. ***************
  1235. *** 930,940 ****
  1236.               && !Recording
  1237.               && !Exec_reg)
  1238.           || ((ca.cmdchar == 'a' || ca.cmdchar == 'i')
  1239. !             && (oap->op_type != OP_NOP
  1240. ! #ifdef FEAT_VISUAL
  1241. !             || VIsual_active
  1242. ! #endif
  1243. !                ))))
  1244.       {
  1245.       int    *cp;
  1246.       int    repl = FALSE;    /* get character for replace mode */
  1247. --- 894,900 ----
  1248.               && !Recording
  1249.               && !Exec_reg)
  1250.           || ((ca.cmdchar == 'a' || ca.cmdchar == 'i')
  1251. !             && (oap->op_type != OP_NOP || VIsual_active))))
  1252.       {
  1253.       int    *cp;
  1254.       int    repl = FALSE;    /* get character for replace mode */
  1255. ***************
  1256. *** 1168,1174 ****
  1257.       msg_col = 0;
  1258.       }
  1259.   
  1260. - #ifdef FEAT_VISUAL
  1261.       old_pos = curwin->w_cursor;        /* remember where cursor was */
  1262.   
  1263.       /* When 'keymodel' contains "startsel" some keys start Select/Visual
  1264. --- 1128,1133 ----
  1265. ***************
  1266. *** 1188,1194 ****
  1267.           mod_mask &= ~MOD_MASK_SHIFT;
  1268.       }
  1269.       }
  1270. - #endif
  1271.   
  1272.       /*
  1273.        * Execute the command!
  1274. --- 1147,1152 ----
  1275. ***************
  1276. *** 1220,1231 ****
  1277.   #endif
  1278.       }
  1279.   
  1280. - #ifdef FEAT_VISUAL
  1281.       /* Get the length of mapped chars again after typing a count, second
  1282.        * character or "z333<cr>". */
  1283.       if (old_mapped_len > 0)
  1284.       old_mapped_len = typebuf_maplen();
  1285. - #endif
  1286.   
  1287.       /*
  1288.        * If an operation is pending, handle it...
  1289. --- 1178,1187 ----
  1290. ***************
  1291. *** 1247,1257 ****
  1292.       if (       ((p_smd
  1293.               && msg_silent == 0
  1294.               && (restart_edit != 0
  1295. - #ifdef FEAT_VISUAL
  1296.               || (VIsual_active
  1297.                   && old_pos.lnum == curwin->w_cursor.lnum
  1298.                   && old_pos.col == curwin->w_cursor.col)
  1299. - #endif
  1300.                  )
  1301.               && (clear_cmdline
  1302.               || redraw_cmdline)
  1303. --- 1203,1211 ----
  1304. ***************
  1305. *** 1259,1267 ****
  1306.               && !msg_nowait
  1307.               && KeyTyped)
  1308.           || (restart_edit != 0
  1309. - #ifdef FEAT_VISUAL
  1310.               && !VIsual_active
  1311. - #endif
  1312.               && (msg_scroll
  1313.               || emsg_on_display)))
  1314.           && oap->regname == 0
  1315. --- 1213,1219 ----
  1316. ***************
  1317. *** 1368,1403 ****
  1318.        * May switch from Visual to Select mode after CTRL-O command.
  1319.        */
  1320.       if (       oap->op_type == OP_NOP
  1321. - #ifdef FEAT_VISUAL
  1322.           && ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0)
  1323.           || restart_VIsual_select == 1)
  1324. - #else
  1325. -         && restart_edit != 0
  1326. - #endif
  1327.           && !(ca.retval & CA_COMMAND_BUSY)
  1328.           && stuff_empty()
  1329.           && oap->regname == 0)
  1330.       {
  1331. - #ifdef FEAT_VISUAL
  1332.       if (restart_VIsual_select == 1)
  1333.       {
  1334.           VIsual_select = TRUE;
  1335.           showmode();
  1336.           restart_VIsual_select = 0;
  1337.       }
  1338. ! #endif
  1339. !     if (restart_edit != 0
  1340. ! #ifdef FEAT_VISUAL
  1341. !         && !VIsual_active && old_mapped_len == 0
  1342. ! #endif
  1343. !         )
  1344.           (void)edit(restart_edit, FALSE, 1L);
  1345.       }
  1346.   
  1347. - #ifdef FEAT_VISUAL
  1348.       if (restart_VIsual_select == 2)
  1349.       restart_VIsual_select = 1;
  1350. - #endif
  1351.   
  1352.       /* Save count before an operator for next time. */
  1353.       opcount = ca.opcount;
  1354. --- 1320,1343 ----
  1355.        * May switch from Visual to Select mode after CTRL-O command.
  1356.        */
  1357.       if (       oap->op_type == OP_NOP
  1358.           && ((restart_edit != 0 && !VIsual_active && old_mapped_len == 0)
  1359.           || restart_VIsual_select == 1)
  1360.           && !(ca.retval & CA_COMMAND_BUSY)
  1361.           && stuff_empty()
  1362.           && oap->regname == 0)
  1363.       {
  1364.       if (restart_VIsual_select == 1)
  1365.       {
  1366.           VIsual_select = TRUE;
  1367.           showmode();
  1368.           restart_VIsual_select = 0;
  1369.       }
  1370. !     if (restart_edit != 0 && !VIsual_active && old_mapped_len == 0)
  1371.           (void)edit(restart_edit, FALSE, 1L);
  1372.       }
  1373.   
  1374.       if (restart_VIsual_select == 2)
  1375.       restart_VIsual_select = 1;
  1376.   
  1377.       /* Save count before an operator for next time. */
  1378.       opcount = ca.opcount;
  1379. ***************
  1380. *** 1437,1451 ****
  1381.       int        empty_region_error;
  1382.       int        restart_edit_save;
  1383.   
  1384. - #ifdef FEAT_VISUAL
  1385.       /* The visual area is remembered for redo */
  1386.       static int        redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
  1387.       static linenr_T redo_VIsual_line_count; /* number of lines */
  1388.       static colnr_T  redo_VIsual_vcol;        /* number of cols or end column */
  1389.       static long        redo_VIsual_count;        /* count for Visual operator */
  1390. ! # ifdef FEAT_VIRTUALEDIT
  1391.       int            include_line_break = FALSE;
  1392. - # endif
  1393.   #endif
  1394.   
  1395.   #if defined(FEAT_CLIPBOARD)
  1396. --- 1377,1389 ----
  1397.       int        empty_region_error;
  1398.       int        restart_edit_save;
  1399.   
  1400.       /* The visual area is remembered for redo */
  1401.       static int        redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
  1402.       static linenr_T redo_VIsual_line_count; /* number of lines */
  1403.       static colnr_T  redo_VIsual_vcol;        /* number of cols or end column */
  1404.       static long        redo_VIsual_count;        /* count for Visual operator */
  1405. ! #ifdef FEAT_VIRTUALEDIT
  1406.       int            include_line_break = FALSE;
  1407.   #endif
  1408.   
  1409.   #if defined(FEAT_CLIPBOARD)
  1410. ***************
  1411. *** 1459,1468 ****
  1412.       if ((clip_star.available || clip_plus.available)
  1413.           && oap->op_type != OP_NOP
  1414.           && !gui_yank
  1415. - # ifdef FEAT_VISUAL
  1416.           && VIsual_active
  1417.           && !redo_VIsual_busy
  1418. - # endif
  1419.           && oap->regname == 0)
  1420.       clip_auto_select();
  1421.   #endif
  1422. --- 1397,1404 ----
  1423. ***************
  1424. *** 1471,1483 ****
  1425.       /*
  1426.        * If an operation is pending, handle it...
  1427.        */
  1428. !     if ((finish_op
  1429. ! #ifdef FEAT_VISUAL
  1430. !         || VIsual_active
  1431. ! #endif
  1432. !         ) && oap->op_type != OP_NOP)
  1433.       {
  1434. - #ifdef FEAT_VISUAL
  1435.       oap->is_VIsual = VIsual_active;
  1436.       if (oap->motion_force == 'V')
  1437.           oap->motion_type = MLINE;
  1438. --- 1407,1414 ----
  1439.       /*
  1440.        * If an operation is pending, handle it...
  1441.        */
  1442. !     if ((finish_op || VIsual_active) && oap->op_type != OP_NOP)
  1443.       {
  1444.       oap->is_VIsual = VIsual_active;
  1445.       if (oap->motion_force == 'V')
  1446.           oap->motion_type = MLINE;
  1447. ***************
  1448. *** 1501,1517 ****
  1449.           VIsual_select = FALSE;
  1450.           VIsual_reselect = FALSE;
  1451.       }
  1452. - #endif
  1453.   
  1454.       /* Only redo yank when 'y' flag is in 'cpoptions'. */
  1455.       /* Never redo "zf" (define fold). */
  1456.       if ((vim_strchr(p_cpo, CPO_YANK) != NULL || oap->op_type != OP_YANK)
  1457. - #ifdef FEAT_VISUAL
  1458.           && ((!VIsual_active || oap->motion_force)
  1459.               /* Also redo Operator-pending Visual mode mappings */
  1460.               || (VIsual_active && cap->cmdchar == ':'
  1461.                            && oap->op_type != OP_COLON))
  1462. - #endif
  1463.           && cap->cmdchar != 'D'
  1464.   #ifdef FEAT_FOLDING
  1465.           && oap->op_type != OP_FOLD
  1466. --- 1432,1445 ----
  1467. ***************
  1468. *** 1554,1560 ****
  1469.           }
  1470.       }
  1471.   
  1472. - #ifdef FEAT_VISUAL
  1473.       if (redo_VIsual_busy)
  1474.       {
  1475.           /* Redo of an operation on a Visual area. Use the same size from
  1476. --- 1482,1487 ----
  1477. ***************
  1478. *** 1639,1645 ****
  1479.           if (VIsual_mode == 'V')
  1480.           oap->start.col = 0;
  1481.       }
  1482. - #endif /* FEAT_VISUAL */
  1483.   
  1484.       /*
  1485.        * Set oap->start to the first position of the operated text, oap->end
  1486. --- 1566,1571 ----
  1487. ***************
  1488. *** 1690,1696 ****
  1489.       virtual_op = virtual_active();
  1490.   #endif
  1491.   
  1492. - #ifdef FEAT_VISUAL
  1493.       if (VIsual_active || redo_VIsual_busy)
  1494.       {
  1495.           if (VIsual_mode == Ctrl_V)    /* block mode */
  1496. --- 1616,1621 ----
  1497. ***************
  1498. *** 1826,1834 ****
  1499.           {
  1500.           oap->motion_type = MCHAR;
  1501.           if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL
  1502. ! # ifdef FEAT_VIRTUALEDIT
  1503.               && (include_line_break || !virtual_op)
  1504. ! # endif
  1505.               )
  1506.           {
  1507.               oap->inclusive = FALSE;
  1508. --- 1751,1759 ----
  1509.           {
  1510.           oap->motion_type = MCHAR;
  1511.           if (VIsual_mode != Ctrl_V && *ml_get_pos(&(oap->end)) == NUL
  1512. ! #ifdef FEAT_VIRTUALEDIT
  1513.               && (include_line_break || !virtual_op)
  1514. ! #endif
  1515.               )
  1516.           {
  1517.               oap->inclusive = FALSE;
  1518. ***************
  1519. *** 1840,1848 ****
  1520.               {
  1521.                   ++oap->end.lnum;
  1522.                   oap->end.col = 0;
  1523. ! # ifdef FEAT_VIRTUALEDIT
  1524.                   oap->end.coladd = 0;
  1525. ! # endif
  1526.                   ++oap->line_count;
  1527.               }
  1528.               else
  1529. --- 1765,1773 ----
  1530.               {
  1531.                   ++oap->end.lnum;
  1532.                   oap->end.col = 0;
  1533. ! #ifdef FEAT_VIRTUALEDIT
  1534.                   oap->end.coladd = 0;
  1535. ! #endif
  1536.                   ++oap->line_count;
  1537.               }
  1538.               else
  1539. ***************
  1540. *** 1868,1877 ****
  1541.           if (!gui_yank)
  1542.           {
  1543.           VIsual_active = FALSE;
  1544. ! # ifdef FEAT_MOUSE
  1545.           setmouse();
  1546.           mouse_dragging = 0;
  1547. ! # endif
  1548.           if (mode_displayed)
  1549.               clear_cmdline = TRUE;   /* unshow visual mode later */
  1550.   #ifdef FEAT_CMDL_INFO
  1551. --- 1793,1802 ----
  1552.           if (!gui_yank)
  1553.           {
  1554.           VIsual_active = FALSE;
  1555. ! #ifdef FEAT_MOUSE
  1556.           setmouse();
  1557.           mouse_dragging = 0;
  1558. ! #endif
  1559.           if (mode_displayed)
  1560.               clear_cmdline = TRUE;   /* unshow visual mode later */
  1561.   #ifdef FEAT_CMDL_INFO
  1562. ***************
  1563. *** 1886,1892 ****
  1564.               redraw_curbuf_later(INVERTED);
  1565.           }
  1566.       }
  1567. - #endif
  1568.   
  1569.   #ifdef FEAT_MBYTE
  1570.       /* Include the trailing byte of a multi-byte char. */
  1571. --- 1811,1816 ----
  1572. ***************
  1573. *** 1921,1936 ****
  1574.       empty_region_error = (oap->empty
  1575.                   && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL);
  1576.   
  1577. - #ifdef FEAT_VISUAL
  1578.       /* Force a redraw when operating on an empty Visual region, when
  1579.        * 'modifiable is off or creating a fold. */
  1580.       if (oap->is_VIsual && (oap->empty || !curbuf->b_p_ma
  1581. ! # ifdef FEAT_FOLDING
  1582.               || oap->op_type == OP_FOLD
  1583. ! # endif
  1584.               ))
  1585.           redraw_curbuf_later(INVERTED);
  1586. - #endif
  1587.   
  1588.       /*
  1589.        * If the end of an operator is in column one while oap->motion_type
  1590. --- 1845,1858 ----
  1591.       empty_region_error = (oap->empty
  1592.                   && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL);
  1593.   
  1594.       /* Force a redraw when operating on an empty Visual region, when
  1595.        * 'modifiable is off or creating a fold. */
  1596.       if (oap->is_VIsual && (oap->empty || !curbuf->b_p_ma
  1597. ! #ifdef FEAT_FOLDING
  1598.               || oap->op_type == OP_FOLD
  1599. ! #endif
  1600.               ))
  1601.           redraw_curbuf_later(INVERTED);
  1602.   
  1603.       /*
  1604.        * If the end of an operator is in column one while oap->motion_type
  1605. ***************
  1606. *** 1943,1952 ****
  1607.           && oap->inclusive == FALSE
  1608.           && !(cap->retval & CA_NO_ADJ_OP_END)
  1609.           && oap->end.col == 0
  1610. - #ifdef FEAT_VISUAL
  1611.           && (!oap->is_VIsual || *p_sel == 'o')
  1612.           && !oap->block_mode
  1613. - #endif
  1614.           && oap->line_count > 1)
  1615.       {
  1616.           oap->end_adjusted = TRUE;        /* remember that we did this */
  1617. --- 1865,1872 ----
  1618. ***************
  1619. *** 1971,1981 ****
  1620.       {
  1621.       case OP_LSHIFT:
  1622.       case OP_RSHIFT:
  1623. !         op_shift(oap, TRUE,
  1624. ! #ifdef FEAT_VISUAL
  1625. !             oap->is_VIsual ? (int)cap->count1 :
  1626. ! #endif
  1627. !             1);
  1628.           auto_format(FALSE, TRUE);
  1629.           break;
  1630.   
  1631. --- 1891,1897 ----
  1632.       {
  1633.       case OP_LSHIFT:
  1634.       case OP_RSHIFT:
  1635. !         op_shift(oap, TRUE, oap->is_VIsual ? (int)cap->count1 : 1);
  1636.           auto_format(FALSE, TRUE);
  1637.           break;
  1638.   
  1639. ***************
  1640. *** 1988,2002 ****
  1641.           beep_flush();
  1642.           else
  1643.           {
  1644. !         (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE);
  1645.           auto_format(FALSE, TRUE);
  1646.           }
  1647.           break;
  1648.   
  1649.       case OP_DELETE:
  1650. - #ifdef FEAT_VISUAL
  1651.           VIsual_reselect = FALSE;        /* don't reselect now */
  1652. - #endif
  1653.           if (empty_region_error)
  1654.           {
  1655.           vim_beep();
  1656. --- 1904,1917 ----
  1657.           beep_flush();
  1658.           else
  1659.           {
  1660. !         (void)do_join(oap->line_count, oap->op_type == OP_JOIN,
  1661. !                                   TRUE, TRUE);
  1662.           auto_format(FALSE, TRUE);
  1663.           }
  1664.           break;
  1665.   
  1666.       case OP_DELETE:
  1667.           VIsual_reselect = FALSE;        /* don't reselect now */
  1668.           if (empty_region_error)
  1669.           {
  1670.           vim_beep();
  1671. ***************
  1672. *** 2026,2034 ****
  1673.           break;
  1674.   
  1675.       case OP_CHANGE:
  1676. - #ifdef FEAT_VISUAL
  1677.           VIsual_reselect = FALSE;        /* don't reselect now */
  1678. - #endif
  1679.           if (empty_region_error)
  1680.           {
  1681.           vim_beep();
  1682. --- 1941,1947 ----
  1683. ***************
  1684. *** 2126,2134 ****
  1685.   
  1686.       case OP_INSERT:
  1687.       case OP_APPEND:
  1688. - #ifdef FEAT_VISUAL
  1689.           VIsual_reselect = FALSE;    /* don't reselect now */
  1690. - #endif
  1691.   #ifdef FEAT_VISUALEXTRA
  1692.           if (empty_region_error)
  1693.           {
  1694. --- 2039,2045 ----
  1695. ***************
  1696. *** 2158,2166 ****
  1697.           break;
  1698.   
  1699.       case OP_REPLACE:
  1700. - #ifdef FEAT_VISUAL
  1701.           VIsual_reselect = FALSE;    /* don't reselect now */
  1702. - #endif
  1703.   #ifdef FEAT_VISUALEXTRA
  1704.           if (empty_region_error)
  1705.   #endif
  1706. --- 2069,2075 ----
  1707. ***************
  1708. *** 2220,2228 ****
  1709.       {
  1710.           curwin->w_cursor = old_cursor;
  1711.       }
  1712. - #ifdef FEAT_VISUAL
  1713.       oap->block_mode = FALSE;
  1714. - #endif
  1715.       clearop(oap);
  1716.       }
  1717.   }
  1718. --- 2129,2135 ----
  1719. ***************
  1720. *** 2235,2245 ****
  1721.       oparg_T    *oap;
  1722.   {
  1723.       stuffcharReadbuff(':');
  1724. - #ifdef FEAT_VISUAL
  1725.       if (oap->is_VIsual)
  1726.       stuffReadbuff((char_u *)"'<,'>");
  1727.       else
  1728. - #endif
  1729.       {
  1730.       /*
  1731.        * Make the range look nice, so it can be repeated.
  1732. --- 2142,2150 ----
  1733. ***************
  1734. *** 2404,2417 ****
  1735.       pos_T    save_cursor;
  1736.   #endif
  1737.       win_T    *old_curwin = curwin;
  1738. - #ifdef FEAT_VISUAL
  1739.       static pos_T orig_cursor;
  1740.       colnr_T    leftcol, rightcol;
  1741.       pos_T    end_visual;
  1742.       int        diff;
  1743.       int        old_active = VIsual_active;
  1744.       int        old_mode = VIsual_mode;
  1745. - #endif
  1746.       int        regname;
  1747.   
  1748.   #if defined(FEAT_FOLDING)
  1749. --- 2309,2320 ----
  1750. ***************
  1751. *** 2432,2446 ****
  1752.       if (!gui.in_use)
  1753.   #endif
  1754.       {
  1755. - #ifdef FEAT_VISUAL
  1756.           if (VIsual_active)
  1757.           {
  1758.           if (!mouse_has(MOUSE_VISUAL))
  1759.               return FALSE;
  1760.           }
  1761. !         else
  1762. ! #endif
  1763. !         if (State == NORMAL && !mouse_has(MOUSE_NORMAL))
  1764.           return FALSE;
  1765.       }
  1766.   
  1767. --- 2335,2346 ----
  1768.       if (!gui.in_use)
  1769.   #endif
  1770.       {
  1771.           if (VIsual_active)
  1772.           {
  1773.           if (!mouse_has(MOUSE_VISUAL))
  1774.               return FALSE;
  1775.           }
  1776. !         else if (State == NORMAL && !mouse_has(MOUSE_NORMAL))
  1777.           return FALSE;
  1778.       }
  1779.   
  1780. ***************
  1781. *** 2509,2522 ****
  1782.       }
  1783.       }
  1784.   
  1785. - #ifndef FEAT_VISUAL
  1786. -     /*
  1787. -      * ALT is only used for starting/extending Visual mode.
  1788. -      */
  1789. -     if ((mod_mask & MOD_MASK_ALT))
  1790. -     return FALSE;
  1791. - #endif
  1792.       /*
  1793.        * CTRL right mouse button does CTRL-T
  1794.        */
  1795. --- 2409,2414 ----
  1796. ***************
  1797. *** 2586,2592 ****
  1798.           return FALSE;
  1799.           }
  1800.   
  1801. - #ifdef FEAT_VISUAL
  1802.           /*
  1803.            * If visual was active, yank the highlighted text and put it
  1804.            * before the mouse pointer position.
  1805. --- 2478,2483 ----
  1806. ***************
  1807. *** 2607,2613 ****
  1808.           do_always = TRUE;    /* ignore 'mouse' setting next time */
  1809.           return FALSE;
  1810.           }
  1811. - #endif
  1812.           /*
  1813.            * The rest is below jump_to_mouse()
  1814.            */
  1815. --- 2498,2503 ----
  1816. ***************
  1817. *** 2761,2767 ****
  1818.           {
  1819.               /* First set the cursor position before showing the popup
  1820.                * menu. */
  1821. - #ifdef FEAT_VISUAL
  1822.               if (VIsual_active)
  1823.               {
  1824.               pos_T    m_pos;
  1825. --- 2651,2656 ----
  1826. ***************
  1827. *** 2800,2815 ****
  1828.               }
  1829.               else
  1830.               jump_flags = MOUSE_MAY_STOP_VIS;
  1831. - #endif
  1832.           }
  1833.           if (jump_flags)
  1834.           {
  1835.               jump_flags = jump_to_mouse(jump_flags, NULL, which_button);
  1836. !             update_curbuf(
  1837. ! #ifdef FEAT_VISUAL
  1838. !                 VIsual_active ? INVERTED :
  1839. ! #endif
  1840. !                 VALID);
  1841.               setcursor();
  1842.               out_flush();    /* Update before showing popup menu */
  1843.           }
  1844. --- 2689,2699 ----
  1845.               }
  1846.               else
  1847.               jump_flags = MOUSE_MAY_STOP_VIS;
  1848.           }
  1849.           if (jump_flags)
  1850.           {
  1851.               jump_flags = jump_to_mouse(jump_flags, NULL, which_button);
  1852. !             update_curbuf(VIsual_active ? INVERTED : VALID);
  1853.               setcursor();
  1854.               out_flush();    /* Update before showing popup menu */
  1855.           }
  1856. ***************
  1857. *** 2832,2838 ****
  1858.       }
  1859.       }
  1860.   
  1861. - #ifdef FEAT_VISUAL
  1862.       if ((State & (NORMAL | INSERT))
  1863.                   && !(mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)))
  1864.       {
  1865. --- 2716,2721 ----
  1866. ***************
  1867. *** 2872,2878 ****
  1868.           jump_flags |= MOUSE_MAY_VIS;
  1869.       }
  1870.       }
  1871. - #endif
  1872.   
  1873.       /*
  1874.        * If an operator is pending, ignore all drags and releases until the
  1875. --- 2755,2760 ----
  1876. ***************
  1877. *** 2941,2947 ****
  1878.       }
  1879.   #endif
  1880.   
  1881. - #ifdef FEAT_VISUAL
  1882.       /* Set global flag that we are extending the Visual area with mouse
  1883.        * dragging; temporarily minimize 'scrolloff'. */
  1884.       if (VIsual_active && is_drag && p_so)
  1885. --- 2823,2828 ----
  1886. ***************
  1887. *** 3040,3046 ****
  1888.        */
  1889.       else if ((State & INSERT) && VIsual_active)
  1890.       stuffcharReadbuff(Ctrl_O);
  1891. - #endif
  1892.   
  1893.       /*
  1894.        * Middle mouse click: Put text before cursor.
  1895. --- 2921,2926 ----
  1896. ***************
  1897. *** 3118,3128 ****
  1898.        */
  1899.       else if ((mod_mask & MOD_MASK_SHIFT))
  1900.       {
  1901. !     if (State & INSERT
  1902. ! #ifdef FEAT_VISUAL
  1903. !         || (VIsual_active && VIsual_select)
  1904. ! #endif
  1905. !         )
  1906.           stuffcharReadbuff(Ctrl_O);
  1907.       if (which_button == MOUSE_LEFT)
  1908.           stuffcharReadbuff('*');
  1909. --- 2998,3004 ----
  1910.        */
  1911.       else if ((mod_mask & MOD_MASK_SHIFT))
  1912.       {
  1913. !     if ((State & INSERT) || (VIsual_active && VIsual_select))
  1914.           stuffcharReadbuff(Ctrl_O);
  1915.       if (which_button == MOUSE_LEFT)
  1916.           stuffcharReadbuff('*');
  1917. ***************
  1918. *** 3153,3159 ****
  1919.   # endif
  1920.       }
  1921.   #endif
  1922. - #ifdef FEAT_VISUAL
  1923.       else if ((mod_mask & MOD_MASK_MULTI_CLICK) && (State & (NORMAL | INSERT))
  1924.            && mouse_has(MOUSE_VISUAL))
  1925.       {
  1926. --- 3029,3034 ----
  1927. ***************
  1928. *** 3267,3278 ****
  1929.           || (VIsual_active && p_smd && msg_silent == 0
  1930.                    && (!old_active || VIsual_mode != old_mode)))
  1931.       redraw_cmdline = TRUE;
  1932. - #endif
  1933.   
  1934.       return moved;
  1935.   }
  1936.   
  1937. - #ifdef FEAT_VISUAL
  1938.   /*
  1939.    * Move "pos" back to the start of the word it's in.
  1940.    */
  1941. --- 3142,3151 ----
  1942. ***************
  1943. *** 3372,3381 ****
  1944.       return 1;
  1945.       return c;
  1946.   }
  1947. - #endif /* FEAT_VISUAL */
  1948.   #endif /* FEAT_MOUSE */
  1949.   
  1950. - #if defined(FEAT_VISUAL) || defined(PROTO)
  1951.   /*
  1952.    * Check if  highlighting for visual mode is possible, give a warning message
  1953.    * if not.
  1954. --- 3245,3252 ----
  1955. ***************
  1956. *** 3468,3474 ****
  1957.       VIsual_reselect = FALSE;
  1958.       }
  1959.   }
  1960. - #endif /* FEAT_VISUAL */
  1961.   
  1962.   #if defined(FEAT_BEVAL)
  1963.   static int find_is_eval_item __ARGS((char_u *ptr, int *colp, int *nbp, int dir));
  1964. --- 3339,3344 ----
  1965. ***************
  1966. *** 3802,3812 ****
  1967.   checkclearopq(oap)
  1968.       oparg_T    *oap;
  1969.   {
  1970. !     if (oap->op_type == OP_NOP
  1971. ! #ifdef FEAT_VISUAL
  1972. !         && !VIsual_active
  1973. ! #endif
  1974. !         )
  1975.       return FALSE;
  1976.       clearopbeep(oap);
  1977.       return TRUE;
  1978. --- 3672,3678 ----
  1979.   checkclearopq(oap)
  1980.       oparg_T    *oap;
  1981.   {
  1982. !     if (oap->op_type == OP_NOP && !VIsual_active)
  1983.       return FALSE;
  1984.       clearopbeep(oap);
  1985.       return TRUE;
  1986. ***************
  1987. *** 3830,3836 ****
  1988.       beep_flush();
  1989.   }
  1990.   
  1991. - #ifdef FEAT_VISUAL
  1992.   /*
  1993.    * Remove the shift modifier from a special key.
  1994.    */
  1995. --- 3696,3701 ----
  1996. ***************
  1997. *** 3849,3866 ****
  1998.       }
  1999.       cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask);
  2000.   }
  2001. - #endif
  2002.   
  2003.   #if defined(FEAT_CMDL_INFO) || defined(PROTO)
  2004.   /*
  2005.    * Routines for displaying a partly typed command
  2006.    */
  2007.   
  2008. ! #ifdef FEAT_VISUAL    /* need room for size of Visual area */
  2009. ! # define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30
  2010. ! #else
  2011. ! # define SHOWCMD_BUFLEN SHOWCMD_COLS + 1
  2012. ! #endif
  2013.   static char_u    showcmd_buf[SHOWCMD_BUFLEN];
  2014.   static char_u    old_showcmd_buf[SHOWCMD_BUFLEN];  /* For push_showcmd() */
  2015.   static int    showcmd_is_clear = TRUE;
  2016. --- 3714,3726 ----
  2017.       }
  2018.       cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask);
  2019.   }
  2020.   
  2021.   #if defined(FEAT_CMDL_INFO) || defined(PROTO)
  2022.   /*
  2023.    * Routines for displaying a partly typed command
  2024.    */
  2025.   
  2026. ! #define SHOWCMD_BUFLEN SHOWCMD_COLS + 1 + 30
  2027.   static char_u    showcmd_buf[SHOWCMD_BUFLEN];
  2028.   static char_u    old_showcmd_buf[SHOWCMD_BUFLEN];  /* For push_showcmd() */
  2029.   static int    showcmd_is_clear = TRUE;
  2030. ***************
  2031. *** 3874,3880 ****
  2032.       if (!p_sc)
  2033.       return;
  2034.   
  2035. - #ifdef FEAT_VISUAL
  2036.       if (VIsual_active && !char_avail())
  2037.       {
  2038.       int        cursor_bot = lt(VIsual, curwin->w_cursor);
  2039. --- 3734,3739 ----
  2040. ***************
  2041. *** 3960,3966 ****
  2042.       showcmd_visual = TRUE;
  2043.       }
  2044.       else
  2045. - #endif
  2046.       {
  2047.       showcmd_buf[0] = NUL;
  2048.       showcmd_visual = FALSE;
  2049. --- 3819,3824 ----
  2050. ***************
  2051. *** 4203,4212 ****
  2052.       int        want_hor;
  2053.       win_T    *old_curwin = curwin;
  2054.       buf_T    *old_curbuf = curbuf;
  2055. - #ifdef FEAT_VISUAL
  2056.       int        old_VIsual_select = VIsual_select;
  2057.       int        old_VIsual_active = VIsual_active;
  2058. - #endif
  2059.       colnr_T    tgt_leftcol = curwin->w_leftcol;
  2060.       long    topline;
  2061.       long    y;
  2062. --- 4061,4068 ----
  2063. ***************
  2064. *** 4223,4231 ****
  2065.       /*
  2066.        * loop through the scrollbound windows and scroll accordingly
  2067.        */
  2068. - #ifdef FEAT_VISUAL
  2069.       VIsual_select = VIsual_active = 0;
  2070. - #endif
  2071.       for (curwin = firstwin; curwin; curwin = curwin->w_next)
  2072.       {
  2073.       curbuf = curwin->w_buffer;
  2074. --- 4079,4085 ----
  2075. ***************
  2076. *** 4280,4289 ****
  2077.       /*
  2078.        * reset current-window
  2079.        */
  2080. - #ifdef FEAT_VISUAL
  2081.       VIsual_select = old_VIsual_select;
  2082.       VIsual_active = old_VIsual_active;
  2083. - #endif
  2084.       curwin = old_curwin;
  2085.       curbuf = old_curbuf;
  2086.   }
  2087. --- 4134,4141 ----
  2088. ***************
  2089. *** 5239,5249 ****
  2090.   
  2091.               if (checkclearop(cap->oap))
  2092.               break;
  2093. - # ifdef FEAT_VISUAL
  2094.               if (VIsual_active && get_visual_text(cap, &ptr, &len)
  2095.                                         == FAIL)
  2096.               return;
  2097. - # endif
  2098.               if (ptr == NULL)
  2099.               {
  2100.               pos_T    pos = curwin->w_cursor;
  2101. --- 5091,5099 ----
  2102. ***************
  2103. *** 5411,5422 ****
  2104.       /*
  2105.        * Ignore 'Q' in Visual mode, just give a beep.
  2106.        */
  2107. - #ifdef FEAT_VISUAL
  2108.       if (VIsual_active)
  2109.       vim_beep();
  2110. !     else
  2111. ! #endif
  2112. !     if (!checkclearop(cap->oap))
  2113.       do_exmode(FALSE);
  2114.   }
  2115.   
  2116. --- 5261,5269 ----
  2117.       /*
  2118.        * Ignore 'Q' in Visual mode, just give a beep.
  2119.        */
  2120.       if (VIsual_active)
  2121.       vim_beep();
  2122. !     else if (!checkclearop(cap->oap))
  2123.       do_exmode(FALSE);
  2124.   }
  2125.   
  2126. ***************
  2127. *** 5430,5440 ****
  2128.       int        old_p_im;
  2129.       int        cmd_result;
  2130.   
  2131. - #ifdef FEAT_VISUAL
  2132.       if (VIsual_active)
  2133.       nv_operator(cap);
  2134.       else
  2135. - #endif
  2136.       {
  2137.       if (cap->oap->op_type != OP_NOP)
  2138.       {
  2139. --- 5277,5285 ----
  2140. ***************
  2141. *** 5494,5508 ****
  2142.   nv_ctrlg(cap)
  2143.       cmdarg_T *cap;
  2144.   {
  2145. - #ifdef FEAT_VISUAL
  2146.       if (VIsual_active)    /* toggle Selection/Visual mode */
  2147.       {
  2148.       VIsual_select = !VIsual_select;
  2149.       showmode();
  2150.       }
  2151. !     else
  2152. ! #endif
  2153. !     if (!checkclearop(cap->oap))
  2154.       /* print full name if count given or :cd used */
  2155.       fileinfo((int)cap->count0, FALSE, TRUE);
  2156.   }
  2157. --- 5339,5350 ----
  2158.   nv_ctrlg(cap)
  2159.       cmdarg_T *cap;
  2160.   {
  2161.       if (VIsual_active)    /* toggle Selection/Visual mode */
  2162.       {
  2163.       VIsual_select = !VIsual_select;
  2164.       showmode();
  2165.       }
  2166. !     else if (!checkclearop(cap->oap))
  2167.       /* print full name if count given or :cd used */
  2168.       fileinfo((int)cap->count0, FALSE, TRUE);
  2169.   }
  2170. ***************
  2171. *** 5514,5527 ****
  2172.   nv_ctrlh(cap)
  2173.       cmdarg_T *cap;
  2174.   {
  2175. - #ifdef FEAT_VISUAL
  2176.       if (VIsual_active && VIsual_select)
  2177.       {
  2178.       cap->cmdchar = 'x';    /* BS key behaves like 'x' in Select mode */
  2179.       v_visop(cap);
  2180.       }
  2181.       else
  2182. - #endif
  2183.       nv_left(cap);
  2184.   }
  2185.   
  2186. --- 5356,5367 ----
  2187. ***************
  2188. *** 5558,5564 ****
  2189.   nv_ctrlo(cap)
  2190.       cmdarg_T    *cap;
  2191.   {
  2192. - #ifdef FEAT_VISUAL
  2193.       if (VIsual_active && VIsual_select)
  2194.       {
  2195.       VIsual_select = FALSE;
  2196. --- 5398,5403 ----
  2197. ***************
  2198. *** 5566,5572 ****
  2199.       restart_VIsual_select = 2;    /* restart Select mode later */
  2200.       }
  2201.       else
  2202. - #endif
  2203.       {
  2204.       cap->count1 = -cap->count1;
  2205.       nv_pcmark(cap);
  2206. --- 5405,5410 ----
  2207. ***************
  2208. *** 5675,5684 ****
  2209.        */
  2210.       if (cmdchar == ']' || cmdchar == Ctrl_RSB || cmdchar == 'K')
  2211.       {
  2212. - #ifdef FEAT_VISUAL
  2213.       if (VIsual_active && get_visual_text(cap, &ptr, &n) == FAIL)
  2214.           return;
  2215. - #endif
  2216.       if (checkclearopq(cap->oap))
  2217.           return;
  2218.       }
  2219. --- 5513,5520 ----
  2220. ***************
  2221. *** 5872,5878 ****
  2222.       vim_free(buf);
  2223.   }
  2224.   
  2225. - #if defined(FEAT_VISUAL) || defined(PROTO)
  2226.   /*
  2227.    * Get visually selected text, within one line only.
  2228.    * Returns FAIL if more than one line selected.
  2229. --- 5708,5713 ----
  2230. ***************
  2231. *** 5917,5923 ****
  2232.       reset_VIsual_and_resel();
  2233.       return OK;
  2234.   }
  2235. - #endif
  2236.   
  2237.   /*
  2238.    * CTRL-T: backwards in tag stack
  2239. --- 5752,5757 ----
  2240. ***************
  2241. *** 6040,6050 ****
  2242.       cmdarg_T    *cap;
  2243.   {
  2244.       long    n;
  2245. ! #ifdef FEAT_VISUAL
  2246. !     int        PAST_LINE;
  2247. ! #else
  2248. ! # define PAST_LINE 0
  2249. ! #endif
  2250.   
  2251.       if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
  2252.       {
  2253. --- 5874,5880 ----
  2254.       cmdarg_T    *cap;
  2255.   {
  2256.       long    n;
  2257. !     int        past_line;
  2258.   
  2259.       if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
  2260.       {
  2261. ***************
  2262. *** 6057,6081 ****
  2263.   
  2264.       cap->oap->motion_type = MCHAR;
  2265.       cap->oap->inclusive = FALSE;
  2266. ! #ifdef FEAT_VISUAL
  2267. !     PAST_LINE = (VIsual_active && *p_sel != 'o');
  2268.   
  2269. ! # ifdef FEAT_VIRTUALEDIT
  2270.       /*
  2271. !      * In virtual mode, there's no such thing as "PAST_LINE", as lines are
  2272. !      * (theoretically) infinitely long.
  2273.        */
  2274.       if (virtual_active())
  2275. !     PAST_LINE = 0;
  2276. ! # endif
  2277.   #endif
  2278.   
  2279.       for (n = cap->count1; n > 0; --n)
  2280.       {
  2281. !     if ((!PAST_LINE && oneright() == FAIL)
  2282. ! #ifdef FEAT_VISUAL
  2283. !         || (PAST_LINE && *ml_get_cursor() == NUL)
  2284. ! #endif
  2285.           )
  2286.       {
  2287.           /*
  2288. --- 5887,5907 ----
  2289.   
  2290.       cap->oap->motion_type = MCHAR;
  2291.       cap->oap->inclusive = FALSE;
  2292. !     past_line = (VIsual_active && *p_sel != 'o');
  2293.   
  2294. ! #ifdef FEAT_VIRTUALEDIT
  2295.       /*
  2296. !      * In virtual edit mode, there's no such thing as "past_line", as lines
  2297. !      * are (theoretically) infinitely long.
  2298.        */
  2299.       if (virtual_active())
  2300. !     past_line = 0;
  2301.   #endif
  2302.   
  2303.       for (n = cap->count1; n > 0; --n)
  2304.       {
  2305. !     if ((!past_line && oneright() == FAIL)
  2306. !         || (past_line && *ml_get_cursor() == NUL)
  2307.           )
  2308.       {
  2309.           /*
  2310. ***************
  2311. *** 6123,6148 ****
  2312.           }
  2313.           break;
  2314.       }
  2315. ! #ifdef FEAT_VISUAL
  2316. !     else if (PAST_LINE)
  2317.       {
  2318.           curwin->w_set_curswant = TRUE;
  2319. ! # ifdef FEAT_VIRTUALEDIT
  2320.           if (virtual_active())
  2321.           oneright();
  2322.           else
  2323. ! # endif
  2324.           {
  2325. ! # ifdef FEAT_MBYTE
  2326.           if (has_mbyte)
  2327.               curwin->w_cursor.col +=
  2328.                        (*mb_ptr2len)(ml_get_cursor());
  2329.           else
  2330. ! # endif
  2331.               ++curwin->w_cursor.col;
  2332.           }
  2333.       }
  2334. - #endif
  2335.       }
  2336.   #ifdef FEAT_FOLDING
  2337.       if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped
  2338. --- 5949,5972 ----
  2339.           }
  2340.           break;
  2341.       }
  2342. !     else if (past_line)
  2343.       {
  2344.           curwin->w_set_curswant = TRUE;
  2345. ! #ifdef FEAT_VIRTUALEDIT
  2346.           if (virtual_active())
  2347.           oneright();
  2348.           else
  2349. ! #endif
  2350.           {
  2351. ! #ifdef FEAT_MBYTE
  2352.           if (has_mbyte)
  2353.               curwin->w_cursor.col +=
  2354.                        (*mb_ptr2len)(ml_get_cursor());
  2355.           else
  2356. ! #endif
  2357.               ++curwin->w_cursor.col;
  2358.           }
  2359.       }
  2360.       }
  2361.   #ifdef FEAT_FOLDING
  2362.       if (n != cap->count1 && (fdo_flags & FDO_HOR) && KeyTyped
  2363. ***************
  2364. *** 6503,6511 ****
  2365.       else
  2366.           curwin->w_cursor.coladd = 0;
  2367.   #endif
  2368. - #ifdef FEAT_VISUAL
  2369.       adjust_for_sel(cap);
  2370. - #endif
  2371.   #ifdef FEAT_FOLDING
  2372.       if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP)
  2373.           foldOpenCursor();
  2374. --- 6327,6333 ----
  2375. ***************
  2376. *** 6754,6760 ****
  2377.           int        dir = (cap->cmdchar == ']' && cap->nchar == 'p')
  2378.                                ? FORWARD : BACKWARD;
  2379.           int        regname = cap->oap->regname;
  2380. - #ifdef FEAT_VISUAL
  2381.           int        was_visual = VIsual_active;
  2382.           int        line_count = curbuf->b_ml.ml_line_count;
  2383.           pos_T   start, end;
  2384. --- 6576,6581 ----
  2385. ***************
  2386. *** 6766,6779 ****
  2387.           end =  equalpos(start,VIsual) ? curwin->w_cursor : VIsual;
  2388.           curwin->w_cursor = (dir == BACKWARD ? start : end);
  2389.           }
  2390. - #endif
  2391.   # ifdef FEAT_CLIPBOARD
  2392.           adjust_clip_reg(®name);
  2393.   # endif
  2394.           prep_redo_cmd(cap);
  2395.   
  2396.           do_put(regname, dir, cap->count1, PUT_FIXINDENT);
  2397. - #ifdef FEAT_VISUAL
  2398.           if (was_visual)
  2399.           {
  2400.           VIsual = start;
  2401. --- 6587,6598 ----
  2402. ***************
  2403. *** 6802,6808 ****
  2404.               redraw_later(SOME_VALID);
  2405.           }
  2406.           }
  2407. - #endif
  2408.       }
  2409.       }
  2410.   
  2411. --- 6621,6626 ----
  2412. ***************
  2413. *** 6936,6944 ****
  2414.   #ifdef FEAT_VIRTUALEDIT
  2415.           curwin->w_cursor.coladd = 0;
  2416.   #endif
  2417. - #ifdef FEAT_VISUAL
  2418.           adjust_for_sel(cap);
  2419. - #endif
  2420.       }
  2421.       }
  2422.   #ifdef FEAT_FOLDING
  2423. --- 6754,6760 ----
  2424. ***************
  2425. *** 7027,7037 ****
  2426.   nv_undo(cap)
  2427.       cmdarg_T    *cap;
  2428.   {
  2429. !     if (cap->oap->op_type == OP_LOWER
  2430. ! #ifdef FEAT_VISUAL
  2431. !         || VIsual_active
  2432. ! #endif
  2433. !         )
  2434.       {
  2435.       /* translate "<Visual>u" to "<Visual>gu" and "guu" to "gugu" */
  2436.       cap->cmdchar = 'g';
  2437. --- 6843,6849 ----
  2438.   nv_undo(cap)
  2439.       cmdarg_T    *cap;
  2440.   {
  2441. !     if (cap->oap->op_type == OP_LOWER || VIsual_active)
  2442.       {
  2443.       /* translate "<Visual>u" to "<Visual>gu" and "guu" to "gugu" */
  2444.       cap->cmdchar = 'g';
  2445. ***************
  2446. *** 7089,7095 ****
  2447.       return;
  2448.       }
  2449.   
  2450. - #ifdef FEAT_VISUAL
  2451.       /* Visual mode "r" */
  2452.       if (VIsual_active)
  2453.       {
  2454. --- 6901,6906 ----
  2455. ***************
  2456. *** 7105,7111 ****
  2457.       nv_operator(cap);
  2458.       return;
  2459.       }
  2460. - #endif
  2461.   
  2462.   #ifdef FEAT_VIRTUALEDIT
  2463.       /* Break tabs, etc. */
  2464. --- 6916,6921 ----
  2465. ***************
  2466. *** 7273,7279 ****
  2467.       }
  2468.   }
  2469.   
  2470. - #ifdef FEAT_VISUAL
  2471.   /*
  2472.    * 'o': Exchange start and end of Visual area.
  2473.    * 'O': same, but in block mode exchange left and right corners.
  2474. --- 7083,7088 ----
  2475. ***************
  2476. *** 7326,7332 ****
  2477.       curwin->w_set_curswant = TRUE;
  2478.       }
  2479.   }
  2480. - #endif /* FEAT_VISUAL */
  2481.   
  2482.   /*
  2483.    * "R" (cap->arg is FALSE) and "gR" (cap->arg is TRUE).
  2484. --- 7135,7140 ----
  2485. ***************
  2486. *** 7335,7341 ****
  2487.   nv_Replace(cap)
  2488.       cmdarg_T        *cap;
  2489.   {
  2490. - #ifdef FEAT_VISUAL
  2491.       if (VIsual_active)        /* "R" is replace lines */
  2492.       {
  2493.       cap->cmdchar = 'c';
  2494. --- 7143,7148 ----
  2495. ***************
  2496. *** 7344,7352 ****
  2497.       VIsual_mode = 'V';
  2498.       nv_operator(cap);
  2499.       }
  2500. !     else
  2501. ! #endif
  2502. !     if (!checkclearopq(cap->oap))
  2503.       {
  2504.       if (!curbuf->b_p_ma)
  2505.           EMSG(_(e_modifiable));
  2506. --- 7151,7157 ----
  2507.       VIsual_mode = 'V';
  2508.       nv_operator(cap);
  2509.       }
  2510. !     else if (!checkclearopq(cap->oap))
  2511.       {
  2512.       if (!curbuf->b_p_ma)
  2513.           EMSG(_(e_modifiable));
  2514. ***************
  2515. *** 7369,7384 ****
  2516.   nv_vreplace(cap)
  2517.       cmdarg_T    *cap;
  2518.   {
  2519. - # ifdef FEAT_VISUAL
  2520.       if (VIsual_active)
  2521.       {
  2522.       cap->cmdchar = 'r';
  2523.       cap->nchar = cap->extra_char;
  2524.       nv_replace(cap);    /* Do same as "r" in Visual mode for now */
  2525.       }
  2526. !     else
  2527. ! # endif
  2528. !     if (!checkclearopq(cap->oap))
  2529.       {
  2530.       if (!curbuf->b_p_ma)
  2531.           EMSG(_(e_modifiable));
  2532. --- 7174,7186 ----
  2533.   nv_vreplace(cap)
  2534.       cmdarg_T    *cap;
  2535.   {
  2536.       if (VIsual_active)
  2537.       {
  2538.       cap->cmdchar = 'r';
  2539.       cap->nchar = cap->extra_char;
  2540.       nv_replace(cap);    /* Do same as "r" in Visual mode for now */
  2541.       }
  2542. !     else if (!checkclearopq(cap->oap))
  2543.       {
  2544.       if (!curbuf->b_p_ma)
  2545.           EMSG(_(e_modifiable));
  2546. ***************
  2547. *** 7525,7531 ****
  2548.       curwin->w_set_curswant = TRUE;
  2549.   }
  2550.   
  2551. - #ifdef FEAT_VISUAL
  2552.   /*
  2553.    * Handle commands that are operators in Visual mode.
  2554.    */
  2555. --- 7327,7332 ----
  2556. ***************
  2557. *** 7550,7556 ****
  2558.       cap->cmdchar = *(vim_strchr(trans, cap->cmdchar) + 1);
  2559.       nv_operator(cap);
  2560.   }
  2561. - #endif
  2562.   
  2563.   /*
  2564.    * "s" and "S" commands.
  2565. --- 7351,7356 ----
  2566. ***************
  2567. *** 7559,7565 ****
  2568.   nv_subst(cap)
  2569.       cmdarg_T    *cap;
  2570.   {
  2571. - #ifdef FEAT_VISUAL
  2572.       if (VIsual_active)    /* "vs" and "vS" are the same as "vc" */
  2573.       {
  2574.       if (cap->cmdchar == 'S')
  2575. --- 7359,7364 ----
  2576. ***************
  2577. *** 7571,7577 ****
  2578.       nv_operator(cap);
  2579.       }
  2580.       else
  2581. - #endif
  2582.       nv_optrans(cap);
  2583.   }
  2584.   
  2585. --- 7370,7375 ----
  2586. ***************
  2587. *** 7585,7596 ****
  2588.       if (cap->cmdchar == K_DEL || cap->cmdchar == K_KDEL)
  2589.       cap->cmdchar = 'x';        /* DEL key behaves like 'x' */
  2590.   
  2591. - #ifdef FEAT_VISUAL
  2592.       /* in Visual mode these commands are operators */
  2593.       if (VIsual_active)
  2594.       v_visop(cap);
  2595.       else
  2596. - #endif
  2597.       nv_optrans(cap);
  2598.   }
  2599.   
  2600. --- 7383,7392 ----
  2601. ***************
  2602. *** 7758,7764 ****
  2603.       clearopbeep(cap->oap);
  2604.   }
  2605.   
  2606. - #ifdef FEAT_VISUAL
  2607.   /*
  2608.    * Handle "v", "V" and "CTRL-V" commands.
  2609.    * Also for "gh", "gH" and "g^H" commands: Always start Select mode, cap->arg
  2610. --- 7554,7559 ----
  2611. ***************
  2612. *** 7950,7956 ****
  2613.       }
  2614.   }
  2615.   
  2616. - #endif /* FEAT_VISUAL */
  2617.   
  2618.   /*
  2619.    * CTRL-W: Window commands
  2620. --- 7745,7750 ----
  2621. ***************
  2622. *** 7975,7984 ****
  2623.       cmdarg_T    *cap;
  2624.   {
  2625.       clearop(cap->oap);
  2626. - #ifdef FEAT_VISUAL
  2627.       if (VIsual_active)
  2628.       end_visual_mode();        /* stop Visual mode */
  2629. - #endif
  2630.       do_cmdline_cmd((char_u *)"st");
  2631.   }
  2632.   
  2633. --- 7769,7776 ----
  2634. ***************
  2635. *** 7990,7998 ****
  2636.       cmdarg_T    *cap;
  2637.   {
  2638.       oparg_T    *oap = cap->oap;
  2639. - #ifdef FEAT_VISUAL
  2640.       pos_T    tpos;
  2641. - #endif
  2642.       int        i;
  2643.       int        flag = FALSE;
  2644.   
  2645. --- 7782,7788 ----
  2646. ***************
  2647. *** 8025,8031 ****
  2648.       do_cmdline_cmd((char_u *)"%s//~/&");
  2649.       break;
  2650.   
  2651. - #ifdef FEAT_VISUAL
  2652.       /*
  2653.        * "gv": Reselect the previous Visual area.  If Visual already active,
  2654.        *         exchange previous and current Visual area.
  2655. --- 7815,7820 ----
  2656. ***************
  2657. *** 8126,8132 ****
  2658.       cap->arg = TRUE;
  2659.       nv_visual(cap);
  2660.       break;
  2661. - #endif /* FEAT_VISUAL */
  2662.   
  2663.       /* "gn", "gN" visually select next/previous search match
  2664.        * "gn" selects next match
  2665. --- 7915,7920 ----
  2666. ***************
  2667. *** 8134,8142 ****
  2668.        */
  2669.       case 'N':
  2670.       case 'n':
  2671. - #ifdef FEAT_VISUAL
  2672.       if (!current_search(cap->count1, cap->nchar == 'n'))
  2673. - #endif
  2674.           clearopbeep(oap);
  2675.       break;
  2676.   
  2677. --- 7922,7928 ----
  2678. ***************
  2679. *** 8258,8266 ****
  2680.                       && vim_iswhite(ptr[curwin->w_cursor.col]))
  2681.           --curwin->w_cursor.col;
  2682.           curwin->w_set_curswant = TRUE;
  2683. - #ifdef FEAT_VISUAL
  2684.           adjust_for_sel(cap);
  2685. - #endif
  2686.       }
  2687.       break;
  2688.   
  2689. --- 8044,8050 ----
  2690. ***************
  2691. *** 8657,8667 ****
  2692.       cmdarg_T    *cap;
  2693.   {
  2694.       /* In Visual mode and typing "gUU" triggers an operator */
  2695. !     if (cap->oap->op_type == OP_UPPER
  2696. ! #ifdef FEAT_VISUAL
  2697. !         || VIsual_active
  2698. ! #endif
  2699. !         )
  2700.       {
  2701.       /* translate "gUU" to "gUgU" */
  2702.       cap->cmdchar = 'g';
  2703. --- 8441,8447 ----
  2704.       cmdarg_T    *cap;
  2705.   {
  2706.       /* In Visual mode and typing "gUU" triggers an operator */
  2707. !     if (cap->oap->op_type == OP_UPPER || VIsual_active)
  2708.       {
  2709.       /* translate "gUU" to "gUgU" */
  2710.       cap->cmdchar = 'g';
  2711. ***************
  2712. *** 8683,8693 ****
  2713.   nv_tilde(cap)
  2714.       cmdarg_T    *cap;
  2715.   {
  2716. !     if (!p_to
  2717. ! #ifdef FEAT_VISUAL
  2718. !         && !VIsual_active
  2719. ! #endif
  2720. !         && cap->oap->op_type != OP_TILDE)
  2721.       n_swapchar(cap);
  2722.       else
  2723.       nv_operator(cap);
  2724. --- 8463,8469 ----
  2725.   nv_tilde(cap)
  2726.       cmdarg_T    *cap;
  2727.   {
  2728. !     if (!p_to && !VIsual_active && cap->oap->op_type != OP_TILDE)
  2729.       n_swapchar(cap);
  2730.       else
  2731.       nv_operator(cap);
  2732. ***************
  2733. *** 8906,8914 ****
  2734.       clearopbeep(cap->oap);
  2735.       else
  2736.       {
  2737. - #ifdef FEAT_VISUAL
  2738.       adjust_for_sel(cap);
  2739. - #endif
  2740.   #ifdef FEAT_FOLDING
  2741.       if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP)
  2742.           foldOpenCursor();
  2743. --- 8682,8688 ----
  2744. ***************
  2745. *** 8931,8939 ****
  2746.        * - 'virtualedit' is not "all" and not "onemore".
  2747.        */
  2748.       if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL
  2749. - #ifdef FEAT_VISUAL
  2750.           && (!VIsual_active || *p_sel == 'o')
  2751. - #endif
  2752.   #ifdef FEAT_VIRTUALEDIT
  2753.           && !virtual_active() && (ve_flags & VE_ONEMORE) == 0
  2754.   #endif
  2755. --- 8705,8711 ----
  2756. ***************
  2757. *** 8968,8974 ****
  2758.                      one-character line). */
  2759.   }
  2760.   
  2761. - #ifdef FEAT_VISUAL
  2762.   /*
  2763.    * In exclusive Visual mode, may include the last character.
  2764.    */
  2765. --- 8740,8745 ----
  2766. ***************
  2767. *** 8979,8989 ****
  2768.       if (VIsual_active && cap->oap->inclusive && *p_sel == 'e'
  2769.           && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor))
  2770.       {
  2771. ! # ifdef FEAT_MBYTE
  2772.       if (has_mbyte)
  2773.           inc_cursor();
  2774.       else
  2775. ! # endif
  2776.           ++curwin->w_cursor.col;
  2777.       cap->oap->inclusive = FALSE;
  2778.       }
  2779. --- 8750,8760 ----
  2780.       if (VIsual_active && cap->oap->inclusive && *p_sel == 'e'
  2781.           && gchar_cursor() != NUL && lt(VIsual, curwin->w_cursor))
  2782.       {
  2783. ! #ifdef FEAT_MBYTE
  2784.       if (has_mbyte)
  2785.           inc_cursor();
  2786.       else
  2787. ! #endif
  2788.           ++curwin->w_cursor.col;
  2789.       cap->oap->inclusive = FALSE;
  2790.       }
  2791. ***************
  2792. *** 9044,9050 ****
  2793.       }
  2794.   }
  2795.   
  2796. - #endif
  2797.   
  2798.   /*
  2799.    * "G", "gg", CTRL-END, CTRL-HOME.
  2800. --- 8815,8820 ----
  2801. ***************
  2802. *** 9095,9107 ****
  2803.       if (cmdwin_type != 0)
  2804.           cmdwin_result = Ctrl_C;
  2805.   #endif
  2806. - #ifdef FEAT_VISUAL
  2807.       if (VIsual_active)
  2808.       {
  2809.           end_visual_mode();        /* stop Visual */
  2810.           redraw_curbuf_later(INVERTED);
  2811.       }
  2812. - #endif
  2813.       /* CTRL-\ CTRL-G restarts Insert mode when 'insertmode' is set. */
  2814.       if (cap->nchar == Ctrl_G && p_im)
  2815.           restart_edit = 'a';
  2816. --- 8865,8875 ----
  2817. ***************
  2818. *** 9132,9140 ****
  2819.   #ifdef FEAT_CMDWIN
  2820.           && cmdwin_type == 0
  2821.   #endif
  2822. - #ifdef FEAT_VISUAL
  2823.           && !VIsual_active
  2824. - #endif
  2825.           && no_reason)
  2826.           MSG(_("Type  :quit<Enter>  to exit Vim"));
  2827.   
  2828. --- 8900,8906 ----
  2829. ***************
  2830. *** 9152,9158 ****
  2831.   #endif
  2832.       }
  2833.   
  2834. - #ifdef FEAT_VISUAL
  2835.       if (VIsual_active)
  2836.       {
  2837.       end_visual_mode();    /* stop Visual */
  2838. --- 8918,8923 ----
  2839. ***************
  2840. *** 9160,9169 ****
  2841.       curwin->w_set_curswant = TRUE;
  2842.       redraw_curbuf_later(INVERTED);
  2843.       }
  2844. !     else
  2845. ! #endif
  2846. !     if (no_reason)
  2847. !         vim_beep();
  2848.       clearop(cap->oap);
  2849.   
  2850.       /* A CTRL-C is often used at the start of a menu.  When 'insertmode' is
  2851. --- 8925,8932 ----
  2852.       curwin->w_set_curswant = TRUE;
  2853.       redraw_curbuf_later(INVERTED);
  2854.       }
  2855. !     else if (no_reason)
  2856. !     vim_beep();
  2857.       clearop(cap->oap);
  2858.   
  2859.       /* A CTRL-C is often used at the start of a menu.  When 'insertmode' is
  2860. ***************
  2861. *** 9187,9206 ****
  2862.       if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS)
  2863.       cap->cmdchar = 'i';
  2864.   
  2865. - #ifdef FEAT_VISUAL
  2866.       /* in Visual mode "A" and "I" are an operator */
  2867.       if (VIsual_active && (cap->cmdchar == 'A' || cap->cmdchar == 'I'))
  2868.       v_visop(cap);
  2869.   
  2870.       /* in Visual mode and after an operator "a" and "i" are for text objects */
  2871. !     else
  2872. ! #endif
  2873. !     if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
  2874. !         && (cap->oap->op_type != OP_NOP
  2875. ! #ifdef FEAT_VISUAL
  2876. !         || VIsual_active
  2877. ! #endif
  2878. !         ))
  2879.       {
  2880.   #ifdef FEAT_TEXTOBJ
  2881.       nv_object(cap);
  2882. --- 8950,8962 ----
  2883.       if (cap->cmdchar == K_INS || cap->cmdchar == K_KINS)
  2884.       cap->cmdchar = 'i';
  2885.   
  2886.       /* in Visual mode "A" and "I" are an operator */
  2887.       if (VIsual_active && (cap->cmdchar == 'A' || cap->cmdchar == 'I'))
  2888.       v_visop(cap);
  2889.   
  2890.       /* in Visual mode and after an operator "a" and "i" are for text objects */
  2891. !     else if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
  2892. !         && (cap->oap->op_type != OP_NOP || VIsual_active))
  2893.       {
  2894.   #ifdef FEAT_TEXTOBJ
  2895.       nv_object(cap);
  2896. ***************
  2897. *** 9467,9478 ****
  2898.   nv_join(cap)
  2899.       cmdarg_T *cap;
  2900.   {
  2901. - #ifdef FEAT_VISUAL
  2902.       if (VIsual_active)    /* join the visual lines */
  2903.       nv_operator(cap);
  2904. !     else
  2905. ! #endif
  2906. !     if (!checkclearop(cap->oap))
  2907.       {
  2908.       if (cap->count0 <= 1)
  2909.           cap->count0 = 2;        /* default for join is two lines! */
  2910. --- 9223,9231 ----
  2911.   nv_join(cap)
  2912.       cmdarg_T *cap;
  2913.   {
  2914.       if (VIsual_active)    /* join the visual lines */
  2915.       nv_operator(cap);
  2916. !     else if (!checkclearop(cap->oap))
  2917.       {
  2918.       if (cap->count0 <= 1)
  2919.           cap->count0 = 2;        /* default for join is two lines! */
  2920. ***************
  2921. *** 9495,9506 ****
  2922.   nv_put(cap)
  2923.       cmdarg_T  *cap;
  2924.   {
  2925. - #ifdef FEAT_VISUAL
  2926.       int        regname = 0;
  2927.       void    *reg1 = NULL, *reg2 = NULL;
  2928.       int        empty = FALSE;
  2929.       int        was_visual = FALSE;
  2930. - #endif
  2931.       int        dir;
  2932.       int        flags = 0;
  2933.   
  2934. --- 9248,9257 ----
  2935. ***************
  2936. *** 9526,9532 ****
  2937.       if (cap->cmdchar == 'g')
  2938.           flags |= PUT_CURSEND;
  2939.   
  2940. - #ifdef FEAT_VISUAL
  2941.       if (VIsual_active)
  2942.       {
  2943.           /* Putting in Visual mode: The put text replaces the selected
  2944. --- 9277,9282 ----
  2945. ***************
  2946. *** 9536,9549 ****
  2947.            */
  2948.           was_visual = TRUE;
  2949.           regname = cap->oap->regname;
  2950. ! # ifdef FEAT_CLIPBOARD
  2951.           adjust_clip_reg(®name);
  2952. ! # endif
  2953.          if (regname == 0 || regname == '"'
  2954.                        || VIM_ISDIGIT(regname) || regname == '-'
  2955. ! # ifdef FEAT_CLIPBOARD
  2956.               || (clip_unnamed && (regname == '*' || regname == '+'))
  2957. ! # endif
  2958.   
  2959.               )
  2960.           {
  2961. --- 9286,9299 ----
  2962.            */
  2963.           was_visual = TRUE;
  2964.           regname = cap->oap->regname;
  2965. ! #ifdef FEAT_CLIPBOARD
  2966.           adjust_clip_reg(®name);
  2967. ! #endif
  2968.          if (regname == 0 || regname == '"'
  2969.                        || VIM_ISDIGIT(regname) || regname == '-'
  2970. ! #ifdef FEAT_CLIPBOARD
  2971.               || (clip_unnamed && (regname == '*' || regname == '+'))
  2972. ! #endif
  2973.   
  2974.               )
  2975.           {
  2976. ***************
  2977. *** 9591,9600 ****
  2978.           /* May have been reset in do_put(). */
  2979.           VIsual_active = TRUE;
  2980.       }
  2981. - #endif
  2982.       do_put(cap->oap->regname, dir, cap->count1, flags);
  2983.   
  2984. - #ifdef FEAT_VISUAL
  2985.       /* If a register was saved, put it back now. */
  2986.       if (reg2 != NULL)
  2987.           put_register(regname, reg2);
  2988. --- 9341,9348 ----
  2989. ***************
  2990. *** 9621,9627 ****
  2991.           coladvance((colnr_T)MAXCOL);
  2992.           }
  2993.       }
  2994. - #endif
  2995.       auto_format(FALSE, TRUE);
  2996.       }
  2997.   }
  2998. --- 9369,9374 ----
  2999. ***************
  3000. *** 9642,9652 ****
  3001.       }
  3002.       else
  3003.   #endif
  3004. - #ifdef FEAT_VISUAL
  3005.       if (VIsual_active)  /* switch start and end of visual */
  3006.       v_swap_corners(cap->cmdchar);
  3007.       else
  3008. - #endif
  3009.       n_opencmd(cap);
  3010.   }
  3011.   
  3012. --- 9389,9397 ----
  3013. *** ../vim-7.4.211/src/ops.c    2014-03-19 18:57:27.730175565 +0100
  3014. --- src/ops.c    2014-03-23 15:08:16.095260447 +0100
  3015. ***************
  3016. *** 57,65 ****
  3017.       char_u    **y_array;    /* pointer to array of line pointers */
  3018.       linenr_T    y_size;        /* number of lines in y_array */
  3019.       char_u    y_type;        /* MLINE, MCHAR or MBLOCK */
  3020. - #ifdef FEAT_VISUAL
  3021.       colnr_T    y_width;    /* only set if y_type == MBLOCK */
  3022. - #endif
  3023.   } y_regs[NUM_REGISTERS];
  3024.   
  3025.   static struct yankreg    *y_current;        /* ptr to current yankreg */
  3026. --- 57,63 ----
  3027. ***************
  3028. *** 107,123 ****
  3029.   static int    yank_copy_line __ARGS((struct block_def *bd, long y_idx));
  3030.   #ifdef FEAT_CLIPBOARD
  3031.   static void    copy_yank_reg __ARGS((struct yankreg *reg));
  3032. - # if defined(FEAT_VISUAL) || defined(FEAT_EVAL)
  3033.   static void    may_set_selection __ARGS((void));
  3034. - # endif
  3035.   #endif
  3036.   static void    dis_msg __ARGS((char_u *p, int skip_esc));
  3037.   #if defined(FEAT_COMMENTS) || defined(PROTO)
  3038.   static char_u    *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
  3039.   #endif
  3040. - #ifdef FEAT_VISUAL
  3041.   static void    block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
  3042. - #endif
  3043.   #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL)
  3044.   static void    str_to_reg __ARGS((struct yankreg *y_ptr, int type, char_u *str, long len, long blocklen));
  3045.   #endif
  3046. --- 105,117 ----
  3047. ***************
  3048. *** 187,193 ****
  3049.       return i;
  3050.   }
  3051.   
  3052. - #if defined(FEAT_VISUAL) || defined(PROTO)
  3053.   /*
  3054.    * Return TRUE if operator "op" always works on whole lines.
  3055.    */
  3056. --- 181,186 ----
  3057. ***************
  3058. *** 197,203 ****
  3059.   {
  3060.       return opchars[op][2];
  3061.   }
  3062. - #endif
  3063.   
  3064.   /*
  3065.    * Get first operator command character.
  3066. --- 190,195 ----
  3067. ***************
  3068. *** 232,249 ****
  3069.       long        i;
  3070.       int            first_char;
  3071.       char_u        *s;
  3072. - #ifdef FEAT_VISUAL
  3073.       int            block_col = 0;
  3074. - #endif
  3075.   
  3076.       if (u_save((linenr_T)(oap->start.lnum - 1),
  3077.                          (linenr_T)(oap->end.lnum + 1)) == FAIL)
  3078.       return;
  3079.   
  3080. - #ifdef FEAT_VISUAL
  3081.       if (oap->block_mode)
  3082.       block_col = curwin->w_cursor.col;
  3083. - #endif
  3084.   
  3085.       for (i = oap->line_count; --i >= 0; )
  3086.       {
  3087. --- 224,237 ----
  3088. ***************
  3089. *** 272,286 ****
  3090.       foldOpenCursor();
  3091.   #endif
  3092.   
  3093. - #ifdef FEAT_VISUAL
  3094.       if (oap->block_mode)
  3095.       {
  3096.       curwin->w_cursor.lnum = oap->start.lnum;
  3097.       curwin->w_cursor.col = block_col;
  3098.       }
  3099. !     else
  3100. ! #endif
  3101. !     if (curs_top)        /* put cursor on first line, for ">>" */
  3102.       {
  3103.       curwin->w_cursor.lnum = oap->start.lnum;
  3104.       beginline(BL_SOL | BL_FIX);   /* shift_line() may have set cursor.col */
  3105. --- 260,271 ----
  3106.       foldOpenCursor();
  3107.   #endif
  3108.   
  3109.       if (oap->block_mode)
  3110.       {
  3111.       curwin->w_cursor.lnum = oap->start.lnum;
  3112.       curwin->w_cursor.col = block_col;
  3113.       }
  3114. !     else if (curs_top)        /* put cursor on first line, for ">>" */
  3115.       {
  3116.       curwin->w_cursor.lnum = oap->start.lnum;
  3117.       beginline(BL_SOL | BL_FIX);   /* shift_line() may have set cursor.col */
  3118. ***************
  3119. *** 733,746 ****
  3120.        * there is no change still need to remove the Visual highlighting. */
  3121.       if (last_changed != 0)
  3122.       changed_lines(first_changed, 0,
  3123. - #ifdef FEAT_VISUAL
  3124.           oap->is_VIsual ? start_lnum + oap->line_count :
  3125. - #endif
  3126.           last_changed + 1, 0L);
  3127. - #ifdef FEAT_VISUAL
  3128.       else if (oap->is_VIsual)
  3129.       redraw_curbuf_later(INVERTED);
  3130. - #endif
  3131.   
  3132.       if (oap->line_count > p_report)
  3133.       {
  3134. --- 718,727 ----
  3135. ***************
  3136. *** 948,954 ****
  3137.   }
  3138.   #endif
  3139.   
  3140. - #if defined(FEAT_VISUAL) || defined(PROTO)
  3141.   /*
  3142.    * Obtain the contents of a "normal" register. The register is made empty.
  3143.    * The returned pointer has allocated memory, use put_register() later.
  3144. --- 929,934 ----
  3145. ***************
  3146. *** 1016,1025 ****
  3147.       *y_current = *(struct yankreg *)reg;
  3148.       vim_free(reg);
  3149.   
  3150. ! # ifdef FEAT_CLIPBOARD
  3151.       /* Send text written to clipboard register to the clipboard. */
  3152.       may_set_selection();
  3153. ! # endif
  3154.   }
  3155.   
  3156.       void
  3157. --- 996,1005 ----
  3158.       *y_current = *(struct yankreg *)reg;
  3159.       vim_free(reg);
  3160.   
  3161. ! #ifdef FEAT_CLIPBOARD
  3162.       /* Send text written to clipboard register to the clipboard. */
  3163.       may_set_selection();
  3164. ! #endif
  3165.   }
  3166.   
  3167.       void
  3168. ***************
  3169. *** 1034,1040 ****
  3170.       vim_free(reg);
  3171.       *y_current = tmp;
  3172.   }
  3173. - #endif
  3174.   
  3175.   #if defined(FEAT_MOUSE) || defined(PROTO)
  3176.   /*
  3177. --- 1014,1019 ----
  3178. ***************
  3179. *** 1634,1643 ****
  3180.       int            n;
  3181.       linenr_T        lnum;
  3182.       char_u        *ptr;
  3183. - #ifdef FEAT_VISUAL
  3184.       char_u        *newp, *oldp;
  3185.       struct block_def    bd;
  3186. - #endif
  3187.       linenr_T        old_lcount = curbuf->b_ml.ml_line_count;
  3188.       int            did_yank = FALSE;
  3189.       int            orig_regname = oap->regname;
  3190. --- 1613,1620 ----
  3191. ***************
  3192. *** 1670,1679 ****
  3193.        * delete linewise.  Don't do this for the change command or Visual mode.
  3194.        */
  3195.       if (       oap->motion_type == MCHAR
  3196. - #ifdef FEAT_VISUAL
  3197.           && !oap->is_VIsual
  3198.           && !oap->block_mode
  3199. - #endif
  3200.           && oap->line_count > 1
  3201.           && oap->motion_force == NUL
  3202.           && oap->op_type == OP_DELETE)
  3203. --- 1647,1654 ----
  3204. ***************
  3205. *** 1787,1793 ****
  3206.       }
  3207.       }
  3208.   
  3209. - #ifdef FEAT_VISUAL
  3210.       /*
  3211.        * block mode delete
  3212.        */
  3213. --- 1762,1767 ----
  3214. ***************
  3215. *** 1838,1846 ****
  3216.                                  oap->end.lnum + 1, 0L);
  3217.       oap->line_count = 0;        /* no lines deleted */
  3218.       }
  3219. !     else
  3220. ! #endif
  3221. !     if (oap->motion_type == MLINE)
  3222.       {
  3223.       if (oap->op_type == OP_CHANGE)
  3224.       {
  3225. --- 1812,1818 ----
  3226.                                  oap->end.lnum + 1, 0L);
  3227.       oap->line_count = 0;        /* no lines deleted */
  3228.       }
  3229. !     else if (oap->motion_type == MLINE)
  3230.       {
  3231.       if (oap->op_type == OP_CHANGE)
  3232.       {
  3233. ***************
  3234. *** 1924,1936 ****
  3235.           return FAIL;
  3236.   
  3237.           /* if 'cpoptions' contains '$', display '$' at end of change */
  3238. !         if (       vim_strchr(p_cpo, CPO_DOLLAR) != NULL
  3239.               && oap->op_type == OP_CHANGE
  3240.               && oap->end.lnum == curwin->w_cursor.lnum
  3241. ! #ifdef FEAT_VISUAL
  3242. !             && !oap->is_VIsual
  3243. ! #endif
  3244. !             )
  3245.           display_dollar(oap->end.col - !oap->inclusive);
  3246.   
  3247.           n = oap->end.col - oap->start.col + 1 - !oap->inclusive;
  3248. --- 1896,1905 ----
  3249.           return FAIL;
  3250.   
  3251.           /* if 'cpoptions' contains '$', display '$' at end of change */
  3252. !         if (       vim_strchr(p_cpo, CPO_DOLLAR) != NULL
  3253.               && oap->op_type == OP_CHANGE
  3254.               && oap->end.lnum == curwin->w_cursor.lnum
  3255. !             && !oap->is_VIsual)
  3256.           display_dollar(oap->end.col - !oap->inclusive);
  3257.   
  3258.           n = oap->end.col - oap->start.col + 1 - !oap->inclusive;
  3259. ***************
  3260. *** 1967,1977 ****
  3261.           }
  3262.           else
  3263.           {
  3264. !         (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
  3265. ! #ifdef FEAT_VISUAL
  3266. !                     && !oap->is_VIsual
  3267. ! #endif
  3268. !                             );
  3269.           }
  3270.       }
  3271.       else                /* delete characters between lines */
  3272. --- 1936,1943 ----
  3273.           }
  3274.           else
  3275.           {
  3276. !         (void)del_bytes((long)n, !virtual_op,
  3277. !                 oap->op_type == OP_DELETE && !oap->is_VIsual);
  3278.           }
  3279.       }
  3280.       else                /* delete characters between lines */
  3281. ***************
  3282. *** 2008,2018 ****
  3283.           {
  3284.           /* delete from start of line until op_end */
  3285.           curwin->w_cursor.col = 0;
  3286. !         (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
  3287. ! #ifdef FEAT_VISUAL
  3288. !                     && !oap->is_VIsual
  3289. ! #endif
  3290. !                                 );
  3291.           curwin->w_cursor = curpos;    /* restore curwin->w_cursor */
  3292.           }
  3293.           if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
  3294. --- 1974,1981 ----
  3295.           {
  3296.           /* delete from start of line until op_end */
  3297.           curwin->w_cursor.col = 0;
  3298. !         (void)del_bytes((long)n, !virtual_op,
  3299. !                 oap->op_type == OP_DELETE && !oap->is_VIsual);
  3300.           curwin->w_cursor = curpos;    /* restore curwin->w_cursor */
  3301.           }
  3302.           if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
  3303. ***************
  3304. *** 2025,2038 ****
  3305.   #ifdef FEAT_VIRTUALEDIT
  3306.   setmarks:
  3307.   #endif
  3308. - #ifdef FEAT_VISUAL
  3309.       if (oap->block_mode)
  3310.       {
  3311.       curbuf->b_op_end.lnum = oap->end.lnum;
  3312.       curbuf->b_op_end.col = oap->start.col;
  3313.       }
  3314.       else
  3315. - #endif
  3316.       curbuf->b_op_end = oap->start;
  3317.       curbuf->b_op_start = oap->start;
  3318.   
  3319. --- 1988,1999 ----
  3320. ***************
  3321. *** 2318,2326 ****
  3322.       oparg_T    *oap;
  3323.   {
  3324.       pos_T        pos;
  3325. - #ifdef FEAT_VISUAL
  3326.       struct block_def    bd;
  3327. - #endif
  3328.       int            did_change = FALSE;
  3329.   
  3330.       if (u_save((linenr_T)(oap->start.lnum - 1),
  3331. --- 2279,2285 ----
  3332. ***************
  3333. *** 2328,2334 ****
  3334.       return;
  3335.   
  3336.       pos = oap->start;
  3337. - #ifdef FEAT_VISUAL
  3338.       if (oap->block_mode)            /* Visual block mode */
  3339.       {
  3340.       for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
  3341. --- 2287,2292 ----
  3342. ***************
  3343. *** 2340,2346 ****
  3344.           one_change = swapchars(oap->op_type, &pos, bd.textlen);
  3345.           did_change |= one_change;
  3346.   
  3347. ! # ifdef FEAT_NETBEANS_INTG
  3348.           if (netbeans_active() && one_change)
  3349.           {
  3350.           char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
  3351. --- 2298,2304 ----
  3352.           one_change = swapchars(oap->op_type, &pos, bd.textlen);
  3353.           did_change |= one_change;
  3354.   
  3355. ! #ifdef FEAT_NETBEANS_INTG
  3356.           if (netbeans_active() && one_change)
  3357.           {
  3358.           char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
  3359. ***************
  3360. *** 2350,2362 ****
  3361.           netbeans_inserted(curbuf, pos.lnum, bd.textcol,
  3362.                           &ptr[bd.textcol], bd.textlen);
  3363.           }
  3364. ! # endif
  3365.       }
  3366.       if (did_change)
  3367.           changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L);
  3368.       }
  3369.       else                    /* not block mode */
  3370. - #endif
  3371.       {
  3372.       if (oap->motion_type == MLINE)
  3373.       {
  3374. --- 2308,2319 ----
  3375.           netbeans_inserted(curbuf, pos.lnum, bd.textcol,
  3376.                           &ptr[bd.textcol], bd.textlen);
  3377.           }
  3378. ! #endif
  3379.       }
  3380.       if (did_change)
  3381.           changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L);
  3382.       }
  3383.       else                    /* not block mode */
  3384.       {
  3385.       if (oap->motion_type == MLINE)
  3386.       {
  3387. ***************
  3388. *** 2412,2422 ****
  3389.       }
  3390.       }
  3391.   
  3392. - #ifdef FEAT_VISUAL
  3393.       if (!did_change && oap->is_VIsual)
  3394.       /* No change: need to remove the Visual selection */
  3395.       redraw_curbuf_later(INVERTED);
  3396. - #endif
  3397.   
  3398.       /*
  3399.        * Set '[ and '] marks.
  3400. --- 2369,2377 ----
  3401. ***************
  3402. *** 3018,3027 ****
  3403.       if (       oap->motion_type == MCHAR
  3404.           && oap->start.col == 0
  3405.           && !oap->inclusive
  3406. - #ifdef FEAT_VISUAL
  3407.           && (!oap->is_VIsual || *p_sel == 'o')
  3408.           && !oap->block_mode
  3409. - #endif
  3410.           && oap->end.col == 0
  3411.           && yanklines > 1)
  3412.       {
  3413. --- 2973,2980 ----
  3414. ***************
  3415. *** 3032,3040 ****
  3416.   
  3417.       y_current->y_size = yanklines;
  3418.       y_current->y_type = yanktype;   /* set the yank register type */
  3419. - #ifdef FEAT_VISUAL
  3420.       y_current->y_width = 0;
  3421. - #endif
  3422.       y_current->y_array = (char_u **)lalloc_clear((long_u)(sizeof(char_u *) *
  3423.                                   yanklines), TRUE);
  3424.   
  3425. --- 2985,2991 ----
  3426. ***************
  3427. *** 3047,3053 ****
  3428.       y_idx = 0;
  3429.       lnum = oap->start.lnum;
  3430.   
  3431. - #ifdef FEAT_VISUAL
  3432.       if (oap->block_mode)
  3433.       {
  3434.       /* Visual block mode */
  3435. --- 2998,3003 ----
  3436. ***************
  3437. *** 3057,3075 ****
  3438.       if (curwin->w_curswant == MAXCOL && y_current->y_width > 0)
  3439.           y_current->y_width--;
  3440.       }
  3441. - #endif
  3442.   
  3443.       for ( ; lnum <= yankendlnum; lnum++, y_idx++)
  3444.       {
  3445.       switch (y_current->y_type)
  3446.       {
  3447. - #ifdef FEAT_VISUAL
  3448.           case MBLOCK:
  3449.           block_prep(oap, &bd, lnum, FALSE);
  3450.           if (yank_copy_line(&bd, y_idx) == FAIL)
  3451.               goto fail;
  3452.           break;
  3453. - #endif
  3454.   
  3455.           case MLINE:
  3456.           if ((y_current->y_array[y_idx] =
  3457. --- 3007,3022 ----
  3458. ***************
  3459. *** 3206,3214 ****
  3460.       if (mess)            /* Display message about yank? */
  3461.       {
  3462.       if (yanktype == MCHAR
  3463. - #ifdef FEAT_VISUAL
  3464.           && !oap->block_mode
  3465. - #endif
  3466.           && yanklines == 1)
  3467.           yanklines = 0;
  3468.       /* Some versions of Vi use ">=" here, some don't...  */
  3469. --- 3153,3159 ----
  3470. ***************
  3471. *** 3218,3234 ****
  3472.           update_topline_redraw();
  3473.           if (yanklines == 1)
  3474.           {
  3475. - #ifdef FEAT_VISUAL
  3476.           if (oap->block_mode)
  3477.               MSG(_("block of 1 line yanked"));
  3478.           else
  3479. - #endif
  3480.               MSG(_("1 line yanked"));
  3481.           }
  3482. - #ifdef FEAT_VISUAL
  3483.           else if (oap->block_mode)
  3484.           smsg((char_u *)_("block of %ld lines yanked"), yanklines);
  3485. - #endif
  3486.           else
  3487.           smsg((char_u *)_("%ld lines yanked"), yanklines);
  3488.       }
  3489. --- 3163,3175 ----
  3490. ***************
  3491. *** 3239,3249 ****
  3492.        */
  3493.       curbuf->b_op_start = oap->start;
  3494.       curbuf->b_op_end = oap->end;
  3495. !     if (yanktype == MLINE
  3496. ! #ifdef FEAT_VISUAL
  3497. !         && !oap->block_mode
  3498. ! #endif
  3499. !        )
  3500.       {
  3501.       curbuf->b_op_start.col = 0;
  3502.       curbuf->b_op_end.col = MAXCOL;
  3503. --- 3180,3186 ----
  3504.        */
  3505.       curbuf->b_op_start = oap->start;
  3506.       curbuf->b_op_end = oap->end;
  3507. !     if (yanktype == MLINE && !oap->block_mode)
  3508.       {
  3509.       curbuf->b_op_start.col = 0;
  3510.       curbuf->b_op_end.col = MAXCOL;
  3511. ***************
  3512. *** 3380,3386 ****
  3513.       long    i;            /* index in y_array[] */
  3514.       int        y_type;
  3515.       long    y_size;
  3516. - #ifdef FEAT_VISUAL
  3517.       int        oldlen;
  3518.       long    y_width = 0;
  3519.       colnr_T    vcol;
  3520. --- 3317,3322 ----
  3521. ***************
  3522. *** 3388,3394 ****
  3523.       int        incr = 0;
  3524.       long    j;
  3525.       struct block_def bd;
  3526. - #endif
  3527.       char_u    **y_array = NULL;
  3528.       long    nr_lines = 0;
  3529.       pos_T    new_cursor;
  3530. --- 3324,3329 ----
  3531. ***************
  3532. *** 3497,3510 ****
  3533.       get_yank_register(regname, FALSE);
  3534.   
  3535.       y_type = y_current->y_type;
  3536. - #ifdef FEAT_VISUAL
  3537.       y_width = y_current->y_width;
  3538. - #endif
  3539.       y_size = y_current->y_size;
  3540.       y_array = y_current->y_array;
  3541.       }
  3542.   
  3543. - #ifdef FEAT_VISUAL
  3544.       if (y_type == MLINE)
  3545.       {
  3546.       if (flags & PUT_LINE_SPLIT)
  3547. --- 3432,3442 ----
  3548. ***************
  3549. *** 3535,3541 ****
  3550.       curbuf->b_op_start = curwin->w_cursor;    /* default for '[ mark */
  3551.       curbuf->b_op_end = curwin->w_cursor;    /* default for '] mark */
  3552.       }
  3553. - #endif
  3554.   
  3555.       if (flags & PUT_LINE)    /* :put command or "p" in Visual line mode. */
  3556.       y_type = MLINE;
  3557. --- 3467,3472 ----
  3558. ***************
  3559. *** 3547,3553 ****
  3560.       goto end;
  3561.       }
  3562.   
  3563. - #ifdef FEAT_VISUAL
  3564.       if (y_type == MBLOCK)
  3565.       {
  3566.       lnum = curwin->w_cursor.lnum + y_size + 1;
  3567. --- 3478,3483 ----
  3568. ***************
  3569. *** 3556,3564 ****
  3570.       if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL)
  3571.           goto end;
  3572.       }
  3573. !     else
  3574. ! #endif
  3575. !     if (y_type == MLINE)
  3576.       {
  3577.       lnum = curwin->w_cursor.lnum;
  3578.   #ifdef FEAT_FOLDING
  3579. --- 3486,3492 ----
  3580.       if (u_save(curwin->w_cursor.lnum - 1, lnum) == FAIL)
  3581.           goto end;
  3582.       }
  3583. !     else if (y_type == MLINE)
  3584.       {
  3585.       lnum = curwin->w_cursor.lnum;
  3586.   #ifdef FEAT_FOLDING
  3587. ***************
  3588. *** 3610,3616 ****
  3589.       lnum = curwin->w_cursor.lnum;
  3590.       col = curwin->w_cursor.col;
  3591.   
  3592. - #ifdef FEAT_VISUAL
  3593.       /*
  3594.        * Block mode
  3595.        */
  3596. --- 3538,3543 ----
  3597. ***************
  3598. *** 3792,3798 ****
  3599.           curwin->w_cursor.lnum = lnum;
  3600.       }
  3601.       else
  3602. - #endif
  3603.       {
  3604.       /*
  3605.        * Character or Line mode
  3606. --- 3719,3724 ----
  3607. ***************
  3608. *** 3866,3882 ****
  3609.               curwin->w_cursor.col += (colnr_T)(totlen - 1);
  3610.               }
  3611.           }
  3612. - #ifdef FEAT_VISUAL
  3613.           if (VIsual_active)
  3614.               lnum++;
  3615. ! #endif
  3616. !         } while (
  3617. ! #ifdef FEAT_VISUAL
  3618. !             VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum
  3619. ! #else
  3620. !             FALSE /* stop after 1 paste */
  3621. ! #endif
  3622. !             );
  3623.   
  3624.           curbuf->b_op_end = curwin->w_cursor;
  3625.           /* For "CTRL-O p" in Insert mode, put cursor after last char */
  3626. --- 3792,3800 ----
  3627.               curwin->w_cursor.col += (colnr_T)(totlen - 1);
  3628.               }
  3629.           }
  3630.           if (VIsual_active)
  3631.               lnum++;
  3632. !         } while (VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum);
  3633.   
  3634.           curbuf->b_op_end = curwin->w_cursor;
  3635.           /* For "CTRL-O p" in Insert mode, put cursor after last char */
  3636. ***************
  3637. *** 4038,4046 ****
  3638.       if (regname == '=')
  3639.       vim_free(y_array);
  3640.   
  3641. - #ifdef FEAT_VISUAL
  3642.       VIsual_active = FALSE;
  3643. - #endif
  3644.   
  3645.       /* If the cursor is past the end of the line put it at the end. */
  3646.       adjust_cursor_eol();
  3647. --- 3956,3962 ----
  3648. ***************
  3649. *** 4729,4739 ****
  3650.       return;
  3651.       curwin->w_cursor = oap->start;
  3652.   
  3653. - #ifdef FEAT_VISUAL
  3654.       if (oap->is_VIsual)
  3655.       /* When there is no change: need to remove the Visual selection */
  3656.       redraw_curbuf_later(INVERTED);
  3657. - #endif
  3658.   
  3659.       /* Set '[ mark at the start of the formatted area */
  3660.       curbuf->b_op_start = oap->start;
  3661. --- 4645,4653 ----
  3662. ***************
  3663. *** 4765,4771 ****
  3664.       saved_cursor.lnum = 0;
  3665.       }
  3666.   
  3667. - #ifdef FEAT_VISUAL
  3668.       if (oap->is_VIsual)
  3669.       {
  3670.       win_T    *wp;
  3671. --- 4679,4684 ----
  3672. ***************
  3673. *** 4783,4789 ****
  3674.           }
  3675.       }
  3676.       }
  3677. - #endif
  3678.   }
  3679.   
  3680.   #if defined(FEAT_EVAL) || defined(PROTO)
  3681. --- 4696,4701 ----
  3682. ***************
  3683. *** 4794,4804 ****
  3684.   op_formatexpr(oap)
  3685.       oparg_T    *oap;
  3686.   {
  3687. - # ifdef FEAT_VISUAL
  3688.       if (oap->is_VIsual)
  3689.       /* When there is no change: need to remove the Visual selection */
  3690.       redraw_curbuf_later(INVERTED);
  3691. - # endif
  3692.   
  3693.       if (fex_format(oap->start.lnum, oap->line_count, NUL) != 0)
  3694.       /* As documented: when 'formatexpr' returns non-zero fall back to
  3695. --- 4706,4714 ----
  3696. ***************
  3697. *** 5238,5244 ****
  3698.       return FALSE;
  3699.   }
  3700.   
  3701. - #ifdef FEAT_VISUAL
  3702.   /*
  3703.    * prepare a few things for block mode yank/delete/tilde
  3704.    *
  3705. --- 5148,5153 ----
  3706. ***************
  3707. *** 5397,5403 ****
  3708.       bdp->textcol = (colnr_T) (pstart - line);
  3709.       bdp->textstart = pstart;
  3710.   }
  3711. - #endif /* FEAT_VISUAL */
  3712.   
  3713.   #ifdef FEAT_RIGHTLEFT
  3714.   static void reverse_line __ARGS((char_u *s));
  3715. --- 5306,5311 ----
  3716. ***************
  3717. *** 5748,5766 ****
  3718.       str = skipwhite(skiptowhite(str));
  3719.       if (STRNCMP(str, "CHAR", 4) == 0)
  3720.           y_current->y_type = MCHAR;
  3721. - #ifdef FEAT_VISUAL
  3722.       else if (STRNCMP(str, "BLOCK", 5) == 0)
  3723.           y_current->y_type = MBLOCK;
  3724. - #endif
  3725.       else
  3726.           y_current->y_type = MLINE;
  3727.       /* get the block width; if it's missing we get a zero, which is OK */
  3728.       str = skipwhite(skiptowhite(str));
  3729. - #ifdef FEAT_VISUAL
  3730.       y_current->y_width = getdigits(&str);
  3731. - #else
  3732. -     (void)getdigits(&str);
  3733. - #endif
  3734.       }
  3735.   
  3736.       while (!(eof = viminfo_readline(virp))
  3737. --- 5656,5668 ----
  3738. ***************
  3739. *** 5868,5878 ****
  3740.           case MCHAR:
  3741.           type = (char_u *)"CHAR";
  3742.           break;
  3743. - #ifdef FEAT_VISUAL
  3744.           case MBLOCK:
  3745.           type = (char_u *)"BLOCK";
  3746.           break;
  3747. - #endif
  3748.           default:
  3749.           sprintf((char *)IObuff, _("E574: Unknown register type %d"),
  3750.                                   y_regs[i].y_type);
  3751. --- 5770,5778 ----
  3752. ***************
  3753. *** 5886,5898 ****
  3754.       fprintf(fp, "\"%c", c);
  3755.       if (c == execreg_lastc)
  3756.           fprintf(fp, "@");
  3757. !     fprintf(fp, "\t%s\t%d\n", type,
  3758. ! #ifdef FEAT_VISUAL
  3759. !             (int)y_regs[i].y_width
  3760. ! #else
  3761. !             0
  3762. ! #endif
  3763. !             );
  3764.   
  3765.       /* If max_num_lines < 0, then we save ALL the lines in the register */
  3766.       if (max_num_lines > 0 && num_lines > max_num_lines)
  3767. --- 5786,5792 ----
  3768.       fprintf(fp, "\"%c", c);
  3769.       if (c == execreg_lastc)
  3770.           fprintf(fp, "@");
  3771. !     fprintf(fp, "\t%s\t%d\n", type, (int)y_regs[i].y_width);
  3772.   
  3773.       /* If max_num_lines < 0, then we save ALL the lines in the register */
  3774.       if (max_num_lines > 0 && num_lines > max_num_lines)
  3775. ***************
  3776. *** 6039,6048 ****
  3777.   {
  3778.       struct yankreg *old_y_previous, *old_y_current;
  3779.       pos_T    old_cursor;
  3780. - #ifdef FEAT_VISUAL
  3781.       pos_T    old_visual;
  3782.       int        old_visual_mode;
  3783. - #endif
  3784.       colnr_T    old_curswant;
  3785.       int        old_set_curswant;
  3786.       pos_T    old_op_start, old_op_end;
  3787. --- 5933,5940 ----
  3788. ***************
  3789. *** 6063,6072 ****
  3790.       old_set_curswant = curwin->w_set_curswant;
  3791.       old_op_start = curbuf->b_op_start;
  3792.       old_op_end = curbuf->b_op_end;
  3793. - #ifdef FEAT_VISUAL
  3794.       old_visual = VIsual;
  3795.       old_visual_mode = VIsual_mode;
  3796. - #endif
  3797.       clear_oparg(&oa);
  3798.       oa.regname = (cbd == &clip_plus ? '+' : '*');
  3799.       oa.op_type = OP_YANK;
  3800. --- 5955,5962 ----
  3801. ***************
  3802. *** 6084,6093 ****
  3803.       curwin->w_set_curswant = old_set_curswant;
  3804.       curbuf->b_op_start = old_op_start;
  3805.       curbuf->b_op_end = old_op_end;
  3806. - #ifdef FEAT_VISUAL
  3807.       VIsual = old_visual;
  3808.       VIsual_mode = old_visual_mode;
  3809. - #endif
  3810.       }
  3811.       else
  3812.       {
  3813. --- 5974,5981 ----
  3814. ***************
  3815. *** 6190,6196 ****
  3816.   }
  3817.   
  3818.   
  3819. - # if defined(FEAT_VISUAL) || defined(FEAT_EVAL)
  3820.   /*
  3821.    * If we have written to a clipboard register, send the text to the clipboard.
  3822.    */
  3823. --- 6078,6083 ----
  3824. ***************
  3825. *** 6208,6214 ****
  3826.       clip_gen_set_selection(&clip_plus);
  3827.       }
  3828.   }
  3829. - # endif
  3830.   
  3831.   #endif /* FEAT_CLIPBOARD || PROTO */
  3832.   
  3833. --- 6095,6100 ----
  3834. ***************
  3835. *** 6273,6282 ****
  3836.   
  3837.       if (y_current->y_array != NULL)
  3838.       {
  3839. - #ifdef FEAT_VISUAL
  3840.       if (reglen != NULL && y_current->y_type == MBLOCK)
  3841.           *reglen = y_current->y_width;
  3842. - #endif
  3843.       return y_current->y_type;
  3844.       }
  3845.       return MAUTO;
  3846. --- 6159,6166 ----
  3847. ***************
  3848. *** 6454,6464 ****
  3849.       get_yank_register(name, TRUE);
  3850.       if (!y_append && !must_append)
  3851.       free_yank_all();
  3852. - #ifndef FEAT_VISUAL
  3853. -     /* Just in case - make sure we don't use MBLOCK */
  3854. -     if (yank_type == MBLOCK)
  3855. -     yank_type = MAUTO;
  3856. - #endif
  3857.       str_to_reg(y_current, yank_type, str, len, block_len);
  3858.   
  3859.   # ifdef FEAT_CLIPBOARD
  3860. --- 6338,6343 ----
  3861. ***************
  3862. *** 6496,6504 ****
  3863.       int        append = FALSE;        /* append to last line in register */
  3864.       char_u    *s;
  3865.       char_u    **pp;
  3866. - #ifdef FEAT_VISUAL
  3867.       long    maxlen;
  3868. - #endif
  3869.   
  3870.       if (y_ptr->y_array == NULL)        /* NULL means empty register */
  3871.       y_ptr->y_size = 0;
  3872. --- 6375,6381 ----
  3873. ***************
  3874. *** 6539,6547 ****
  3875.       pp[lnum] = y_ptr->y_array[lnum];
  3876.       vim_free(y_ptr->y_array);
  3877.       y_ptr->y_array = pp;
  3878. - #ifdef FEAT_VISUAL
  3879.       maxlen = 0;
  3880. - #endif
  3881.   
  3882.       /*
  3883.        * Find the end of each line and save it into the array.
  3884. --- 6416,6422 ----
  3885. ***************
  3886. *** 6552,6561 ****
  3887.           if (str[i] == '\n')
  3888.           break;
  3889.       i -= start;            /* i is now length of line */
  3890. - #ifdef FEAT_VISUAL
  3891.       if (i > maxlen)
  3892.           maxlen = i;
  3893. - #endif
  3894.       if (append)
  3895.       {
  3896.           --lnum;
  3897. --- 6427,6434 ----
  3898. ***************
  3899. *** 6585,6596 ****
  3900.       }
  3901.       y_ptr->y_type = type;
  3902.       y_ptr->y_size = lnum;
  3903. - # ifdef FEAT_VISUAL
  3904.       if (type == MBLOCK)
  3905.       y_ptr->y_width = (blocklen < 0 ? maxlen - 1 : blocklen);
  3906.       else
  3907.       y_ptr->y_width = 0;
  3908. - # endif
  3909.   }
  3910.   #endif /* FEAT_CLIPBOARD || FEAT_EVAL || PROTO */
  3911.   
  3912. --- 6458,6467 ----
  3913. ***************
  3914. *** 6684,6695 ****
  3915.       long    word_count_cursor = 0;
  3916.       int        eol_size;
  3917.       long    last_check = 100000L;
  3918. - #ifdef FEAT_VISUAL
  3919.       long    line_count_selected = 0;
  3920.       pos_T    min_pos, max_pos;
  3921.       oparg_T    oparg;
  3922.       struct block_def    bd;
  3923. - #endif
  3924.   
  3925.       /*
  3926.        * Compute the length of the file in characters.
  3927. --- 6555,6564 ----
  3928. ***************
  3929. *** 6705,6711 ****
  3930.       else
  3931.           eol_size = 1;
  3932.   
  3933. - #ifdef FEAT_VISUAL
  3934.       if (VIsual_active)
  3935.       {
  3936.           if (lt(VIsual, curwin->w_cursor))
  3937. --- 6574,6579 ----
  3938. ***************
  3939. *** 6749,6755 ****
  3940.           }
  3941.           line_count_selected = max_pos.lnum - min_pos.lnum + 1;
  3942.       }
  3943. - #endif
  3944.   
  3945.       for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
  3946.       {
  3947. --- 6617,6622 ----
  3948. ***************
  3949. *** 6762,6768 ****
  3950.           last_check = byte_count + 100000L;
  3951.           }
  3952.   
  3953. - #ifdef FEAT_VISUAL
  3954.           /* Do extra processing for VIsual mode. */
  3955.           if (VIsual_active
  3956.               && lnum >= min_pos.lnum && lnum <= max_pos.lnum)
  3957. --- 6629,6634 ----
  3958. ***************
  3959. *** 6773,6785 ****
  3960.           switch (VIsual_mode)
  3961.           {
  3962.               case Ctrl_V:
  3963. ! # ifdef FEAT_VIRTUALEDIT
  3964.               virtual_op = virtual_active();
  3965. ! # endif
  3966.               block_prep(&oparg, &bd, lnum, 0);
  3967. ! # ifdef FEAT_VIRTUALEDIT
  3968.               virtual_op = MAYBE;
  3969. ! # endif
  3970.               s = bd.textstart;
  3971.               len = (long)bd.textlen;
  3972.               break;
  3973. --- 6639,6651 ----
  3974.           switch (VIsual_mode)
  3975.           {
  3976.               case Ctrl_V:
  3977. ! #ifdef FEAT_VIRTUALEDIT
  3978.               virtual_op = virtual_active();
  3979. ! #endif
  3980.               block_prep(&oparg, &bd, lnum, 0);
  3981. ! #ifdef FEAT_VIRTUALEDIT
  3982.               virtual_op = MAYBE;
  3983. ! #endif
  3984.               s = bd.textstart;
  3985.               len = (long)bd.textlen;
  3986.               break;
  3987. ***************
  3988. *** 6811,6817 ****
  3989.           }
  3990.           }
  3991.           else
  3992. - #endif
  3993.           {
  3994.           /* In non-visual mode, check for the line the cursor is on */
  3995.           if (lnum == curwin->w_cursor.lnum)
  3996. --- 6677,6682 ----
  3997. ***************
  3998. *** 6833,6839 ****
  3999.       if (!curbuf->b_p_eol && curbuf->b_p_bin)
  4000.           byte_count -= eol_size;
  4001.   
  4002. - #ifdef FEAT_VISUAL
  4003.       if (VIsual_active)
  4004.       {
  4005.           if (VIsual_mode == Ctrl_V && curwin->w_curswant < MAXCOL)
  4006. --- 6698,6703 ----
  4007. ***************
  4008. *** 6864,6870 ****
  4009.               byte_count_cursor, byte_count);
  4010.       }
  4011.       else
  4012. - #endif
  4013.       {
  4014.           p = ml_get_curline();
  4015.           validate_virtcol();
  4016. --- 6728,6733 ----
  4017. *** ../vim-7.4.211/src/option.c    2014-03-12 18:55:52.100906804 +0100
  4018. --- src/option.c    2014-03-23 13:28:12.359168452 +0100
  4019. ***************
  4020. *** 1629,1639 ****
  4021.   #endif
  4022.                   SCRIPTID_INIT},
  4023.       {"keymodel",    "km",   P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
  4024. - #ifdef FEAT_VISUAL
  4025.                   (char_u *)&p_km, PV_NONE,
  4026. - #else
  4027. -                 (char_u *)NULL, PV_NONE,
  4028. - #endif
  4029.                   {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
  4030.       {"keywordprg",  "kp",   P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
  4031.                   (char_u *)&p_kp, PV_KP,
  4032. --- 1629,1635 ----
  4033. ***************
  4034. *** 2190,2208 ****
  4035.                   (char_u *)&p_secure, PV_NONE,
  4036.                   {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
  4037.       {"selection",   "sel",  P_STRING|P_VI_DEF,
  4038. - #ifdef FEAT_VISUAL
  4039.                   (char_u *)&p_sel, PV_NONE,
  4040. - #else
  4041. -                 (char_u *)NULL, PV_NONE,
  4042. - #endif
  4043.                   {(char_u *)"inclusive", (char_u *)0L}
  4044.                   SCRIPTID_INIT},
  4045.       {"selectmode",  "slm",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
  4046. - #ifdef FEAT_VISUAL
  4047.                   (char_u *)&p_slm, PV_NONE,
  4048. - #else
  4049. -                 (char_u *)NULL, PV_NONE,
  4050. - #endif
  4051.                   {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
  4052.       {"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
  4053.   #ifdef FEAT_SESSION
  4054. --- 2186,2196 ----
  4055. ***************
  4056. *** 2979,2991 ****
  4057.   static char *(p_wak_values[]) = {"yes", "menu", "no", NULL};
  4058.   #endif
  4059.   static char *(p_mousem_values[]) = {"extend", "popup", "popup_setpos", "mac", NULL};
  4060. - #ifdef FEAT_VISUAL
  4061.   static char *(p_sel_values[]) = {"inclusive", "exclusive", "old", NULL};
  4062.   static char *(p_slm_values[]) = {"mouse", "key", "cmd", NULL};
  4063. - #endif
  4064. - #ifdef FEAT_VISUAL
  4065.   static char *(p_km_values[]) = {"startsel", "stopsel", NULL};
  4066. - #endif
  4067.   #ifdef FEAT_BROWSE
  4068.   static char *(p_bsdir_values[]) = {"current", "last", "buffer", NULL};
  4069.   #endif
  4070. --- 2967,2975 ----
  4071. ***************
  4072. *** 6578,6584 ****
  4073.       }
  4074.   #endif
  4075.   
  4076. - #ifdef FEAT_VISUAL
  4077.       /* 'selection' */
  4078.       else if (varp == &p_sel)
  4079.       {
  4080. --- 6562,6567 ----
  4081. ***************
  4082. *** 6593,6599 ****
  4083.       if (check_opt_strings(p_slm, p_slm_values, TRUE) != OK)
  4084.           errmsg = e_invarg;
  4085.       }
  4086. - #endif
  4087.   
  4088.   #ifdef FEAT_BROWSE
  4089.       /* 'browsedir' */
  4090. --- 6576,6581 ----
  4091. ***************
  4092. *** 6605,6611 ****
  4093.       }
  4094.   #endif
  4095.   
  4096. - #ifdef FEAT_VISUAL
  4097.       /* 'keymodel' */
  4098.       else if (varp == &p_km)
  4099.       {
  4100. --- 6587,6592 ----
  4101. ***************
  4102. *** 6617,6623 ****
  4103.           km_startsel = (vim_strchr(p_km, 'a') != NULL);
  4104.       }
  4105.       }
  4106. - #endif
  4107.   
  4108.       /* 'mousemodel' */
  4109.       else if (varp == &p_mousem)
  4110. --- 6598,6603 ----
  4111. *** ../vim-7.4.211/src/os_msdos.c    2013-05-06 04:06:04.000000000 +0200
  4112. --- src/os_msdos.c    2014-03-23 13:28:24.855168644 +0100
  4113. ***************
  4114. *** 2270,2278 ****
  4115.           default:
  4116.           case 'L':    type = MLINE;    break;
  4117.           case 'C':    type = MCHAR;    break;
  4118. - #ifdef FEAT_VISUAL
  4119.           case 'B':    type = MBLOCK;    break;
  4120. - #endif
  4121.           }
  4122.       }
  4123.   
  4124. --- 2270,2276 ----
  4125. ***************
  4126. *** 2799,2807 ****
  4127.           default:
  4128.           case MLINE:        clip_sel_type = "L";    break;
  4129.           case MCHAR:        clip_sel_type = "C";    break;
  4130. - #ifdef FEAT_VISUAL
  4131.           case MBLOCK:    clip_sel_type = "B";    break;
  4132. - #endif
  4133.       }
  4134.   
  4135.       movedata(
  4136. --- 2797,2803 ----
  4137. *** ../vim-7.4.211/src/os_qnx.c    2011-09-21 19:48:08.000000000 +0200
  4138. --- src/os_qnx.c    2014-03-23 13:28:38.815168858 +0100
  4139. ***************
  4140. *** 78,86 ****
  4141.           default: /* fallthrough to line type */
  4142.           case 'L': type = MLINE; break;
  4143.           case 'C': type = MCHAR; break;
  4144. - #ifdef FEAT_VISUAL
  4145.           case 'B': type = MBLOCK; break;
  4146. - #endif
  4147.           }
  4148.           is_type_set = TRUE;
  4149.       }
  4150. --- 78,84 ----
  4151. ***************
  4152. *** 143,151 ****
  4153.           default: /* fallthrough to MLINE */
  4154.           case MLINE:    *vim_clip = 'L'; break;
  4155.           case MCHAR:    *vim_clip = 'C'; break;
  4156. - #ifdef FEAT_VISUAL
  4157.           case MBLOCK:    *vim_clip = 'B'; break;
  4158. - #endif
  4159.           }
  4160.   
  4161.           vim_strncpy(text_clip, str, len);
  4162. --- 141,147 ----
  4163. *** ../vim-7.4.211/src/quickfix.c    2014-03-12 19:41:37.096948866 +0100
  4164. --- src/quickfix.c    2014-03-23 13:28:50.907169043 +0100
  4165. ***************
  4166. *** 2347,2355 ****
  4167.       else
  4168.       height = QF_WINHEIGHT;
  4169.   
  4170. - #ifdef FEAT_VISUAL
  4171.       reset_VIsual_and_resel();            /* stop Visual mode */
  4172. - #endif
  4173.   #ifdef FEAT_GUI
  4174.       need_mouse_correct = TRUE;
  4175.   #endif
  4176. --- 2347,2353 ----
  4177. *** ../vim-7.4.211/src/regexp.c    2013-11-21 17:12:55.000000000 +0100
  4178. --- src/regexp.c    2014-03-23 13:29:14.495169404 +0100
  4179. ***************
  4180. *** 4179,4187 ****
  4181.                   - (*mb_head_off)(regline, reginput - 1), reg_buf);
  4182.       return -1;
  4183.   }
  4184.   #endif
  4185. ! #ifdef FEAT_VISUAL
  4186.   static int reg_match_visual __ARGS((void));
  4187.   
  4188.   /*
  4189. --- 4179,4186 ----
  4190.                   - (*mb_head_off)(regline, reginput - 1), reg_buf);
  4191.       return -1;
  4192.   }
  4193.   #endif
  4194.   static int reg_match_visual __ARGS((void));
  4195.   
  4196.   /*
  4197. ***************
  4198. *** 4258,4264 ****
  4199.       }
  4200.       return TRUE;
  4201.   }
  4202. - #endif
  4203.   
  4204.   #define ADVANCE_REGINPUT() mb_ptr_adv(reginput)
  4205.   
  4206. --- 4257,4262 ----
  4207. ***************
  4208. *** 4440,4448 ****
  4209.           break;
  4210.   
  4211.         case RE_VISUAL:
  4212. - #ifdef FEAT_VISUAL
  4213.           if (!reg_match_visual())
  4214. - #endif
  4215.           status = RA_NOMATCH;
  4216.           break;
  4217.   
  4218. --- 4438,4444 ----
  4219. *** ../vim-7.4.211/src/regexp_nfa.c    2013-11-28 14:20:11.000000000 +0100
  4220. --- src/regexp_nfa.c    2014-03-23 13:29:31.367169663 +0100
  4221. ***************
  4222. *** 6403,6416 ****
  4223.           break;
  4224.   
  4225.           case NFA_VISUAL:
  4226. - #ifdef FEAT_VISUAL
  4227.           result = reg_match_visual();
  4228.           if (result)
  4229.           {
  4230.               add_here = TRUE;
  4231.               add_state = t->state->out;
  4232.           }
  4233. - #endif
  4234.           break;
  4235.   
  4236.           case NFA_MOPEN1:
  4237. --- 6403,6414 ----
  4238. *** ../vim-7.4.211/src/screen.c    2013-12-11 15:51:54.000000000 +0100
  4239. --- src/screen.c    2014-03-23 13:32:10.787172106 +0100
  4240. ***************
  4241. *** 446,453 ****
  4242.   #endif
  4243.   }
  4244.   
  4245. - #if defined(FEAT_RUBY) || defined(FEAT_PERL) || defined(FEAT_VISUAL) || \
  4246. -     (defined(FEAT_CLIPBOARD) && defined(FEAT_X11)) || defined(PROTO)
  4247.   /*
  4248.    * update all windows that are editing the current buffer
  4249.    */
  4250. --- 446,451 ----
  4251. ***************
  4252. *** 458,464 ****
  4253.       redraw_curbuf_later(type);
  4254.       update_screen(type);
  4255.   }
  4256. - #endif
  4257.   
  4258.   /*
  4259.    * update_screen()
  4260. --- 456,461 ----
  4261. ***************
  4262. *** 596,609 ****
  4263.               && curwin->w_botfill == curwin->w_old_botfill
  4264.   #endif
  4265.               && curwin->w_topline == curwin->w_lines[0].wl_lnum)
  4266. - #ifdef FEAT_VISUAL
  4267.           || (type == INVERTED
  4268.               && VIsual_active
  4269.               && curwin->w_old_cursor_lnum == curwin->w_cursor.lnum
  4270.               && curwin->w_old_visual_mode == VIsual_mode
  4271.               && (curwin->w_valid & VALID_VIRTCOL)
  4272.               && curwin->w_old_curswant == curwin->w_curswant)
  4273. - #endif
  4274.           ))
  4275.       curwin->w_redr_type = type;
  4276.   
  4277. --- 593,604 ----
  4278. ***************
  4279. *** 1030,1039 ****
  4280.                      updating.  0 when no mid area updating. */
  4281.       int        bot_start = 999;/* first row of the bot area that needs
  4282.                      updating.  999 when no bot area updating */
  4283. - #ifdef FEAT_VISUAL
  4284.       int        scrolled_down = FALSE;    /* TRUE when scrolled down when
  4285.                          w_topline got smaller a bit */
  4286. - #endif
  4287.   #ifdef FEAT_SEARCH_EXTRA
  4288.       matchitem_T *cur;        /* points to the match list */
  4289.       int        top_to_mod = FALSE;    /* redraw above mod_top */
  4290. --- 1025,1032 ----
  4291. ***************
  4292. *** 1354,1362 ****
  4293.                   /* Need to update rows that are new, stop at the
  4294.                    * first one that scrolled down. */
  4295.                   top_end = i;
  4296. - #ifdef FEAT_VISUAL
  4297.                   scrolled_down = TRUE;
  4298. - #endif
  4299.   
  4300.                   /* Move the entries that were scrolled, disable
  4301.                    * the entries for the lines to be redrawn. */
  4302. --- 1347,1353 ----
  4303. ***************
  4304. *** 1513,1519 ****
  4305.       type = NOT_VALID;
  4306.       }
  4307.   
  4308. - #ifdef FEAT_VISUAL
  4309.       /* check if we are updating or removing the inverted part */
  4310.       if ((VIsual_active && buf == curwin->w_buffer)
  4311.           || (wp->w_old_cursor_lnum != 0 && type != NOT_VALID))
  4312. --- 1504,1509 ----
  4313. ***************
  4314. *** 1708,1714 ****
  4315.       wp->w_old_visual_lnum = 0;
  4316.       wp->w_old_visual_col = 0;
  4317.       }
  4318. - #endif /* FEAT_VISUAL */
  4319.   
  4320.   #if defined(FEAT_SYN_HL) || defined(FEAT_SEARCH_EXTRA)
  4321.       /* reset got_int, otherwise regexp won't work */
  4322. --- 1698,1703 ----
  4323. ***************
  4324. *** 2670,2676 ****
  4325.        * 6. set highlighting for the Visual area an other text.
  4326.        * If all folded lines are in the Visual area, highlight the line.
  4327.        */
  4328. - #ifdef FEAT_VISUAL
  4329.       if (VIsual_active && wp->w_buffer == curwin->w_buffer)
  4330.       {
  4331.       if (ltoreq(curwin->w_cursor, VIsual))
  4332. --- 2659,2664 ----
  4333. ***************
  4334. *** 2718,2724 ****
  4335.           }
  4336.       }
  4337.       }
  4338. - #endif
  4339.   
  4340.   #ifdef FEAT_SYN_HL
  4341.       /* Show 'cursorcolumn' in the fold line. */
  4342. --- 2706,2711 ----
  4343. ***************
  4344. *** 2876,2885 ****
  4345.       int        fromcol, tocol;        /* start/end of inverting */
  4346.       int        fromcol_prev = -2;    /* start of inverting after cursor */
  4347.       int        noinvcur = FALSE;    /* don't invert the cursor */
  4348. - #ifdef FEAT_VISUAL
  4349.       pos_T    *top, *bot;
  4350.       int        lnum_in_visual_area = FALSE;
  4351. - #endif
  4352.       pos_T    pos;
  4353.       long    v;
  4354.   
  4355. --- 2863,2870 ----
  4356. ***************
  4357. *** 3090,3096 ****
  4358.        */
  4359.       fromcol = -10;
  4360.       tocol = MAXCOL;
  4361. - #ifdef FEAT_VISUAL
  4362.       if (VIsual_active && wp->w_buffer == curwin->w_buffer)
  4363.       {
  4364.                       /* Visual is after curwin->w_cursor */
  4365. --- 3075,3080 ----
  4366. ***************
  4367. *** 3183,3191 ****
  4368.       /*
  4369.        * handle 'incsearch' and ":s///c" highlighting
  4370.        */
  4371. !     else
  4372. ! #endif /* FEAT_VISUAL */
  4373. !     if (highlight_match
  4374.           && wp == curwin
  4375.           && lnum >= curwin->w_cursor.lnum
  4376.           && lnum <= curwin->w_cursor.lnum + search_match_lines)
  4377. --- 3167,3173 ----
  4378.       /*
  4379.        * handle 'incsearch' and ":s///c" highlighting
  4380.        */
  4381. !     else if (highlight_match
  4382.           && wp == curwin
  4383.           && lnum >= curwin->w_cursor.lnum
  4384.           && lnum <= curwin->w_cursor.lnum + search_match_lines)
  4385. ***************
  4386. *** 3324,3330 ****
  4387.           mb_ptr_adv(ptr);
  4388.       }
  4389.   
  4390. - #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
  4391.       /* When:
  4392.        * - 'cuc' is set, or
  4393.        * - 'colorcolumn' is set, or
  4394. --- 3306,3311 ----
  4395. ***************
  4396. *** 3333,3359 ****
  4397.        * the end of the line may be before the start of the displayed part.
  4398.        */
  4399.       if (vcol < v && (
  4400. ! # ifdef FEAT_SYN_HL
  4401. !          wp->w_p_cuc
  4402. !          || draw_color_col
  4403. ! #  if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
  4404. !          ||
  4405. ! #  endif
  4406. ! # endif
  4407. ! # ifdef FEAT_VIRTUALEDIT
  4408. !          virtual_active()
  4409. ! #  ifdef FEAT_VISUAL
  4410. !          ||
  4411. ! #  endif
  4412. ! # endif
  4413. ! # ifdef FEAT_VISUAL
  4414. !          (VIsual_active && wp->w_buffer == curwin->w_buffer)
  4415. ! # endif
  4416. !          ))
  4417.       {
  4418.           vcol = v;
  4419.       }
  4420. - #endif
  4421.   
  4422.       /* Handle a character that's not completely on the screen: Put ptr at
  4423.        * that character but skip the first few screen characters. */
  4424. --- 3314,3329 ----
  4425.        * the end of the line may be before the start of the displayed part.
  4426.        */
  4427.       if (vcol < v && (
  4428. ! #ifdef FEAT_SYN_HL
  4429. !          wp->w_p_cuc || draw_color_col ||
  4430. ! #endif
  4431. ! #ifdef FEAT_VIRTUALEDIT
  4432. !          virtual_active() ||
  4433. ! #endif
  4434. !          (VIsual_active && wp->w_buffer == curwin->w_buffer)))
  4435.       {
  4436.           vcol = v;
  4437.       }
  4438.   
  4439.       /* Handle a character that's not completely on the screen: Put ptr at
  4440.        * that character but skip the first few screen characters. */
  4441. ***************
  4442. *** 4500,4508 ****
  4443.               && ((wp->w_p_list && lcs_eol > 0)
  4444.                   || ((fromcol >= 0 || fromcol_prev >= 0)
  4445.                   && tocol > vcol
  4446. - #ifdef FEAT_VISUAL
  4447.                   && VIsual_mode != Ctrl_V
  4448. - #endif
  4449.                   && (
  4450.   # ifdef FEAT_RIGHTLEFT
  4451.                       wp->w_p_rl ? (col >= 0) :
  4452. --- 4470,4476 ----
  4453. ***************
  4454. *** 4854,4864 ****
  4455.   #endif
  4456.           if (lcs_eol == lcs_eol_one
  4457.               && ((area_attr != 0 && vcol == fromcol
  4458. - #ifdef FEAT_VISUAL
  4459.                   && (VIsual_mode != Ctrl_V
  4460.                   || lnum == VIsual.lnum
  4461.                   || lnum == curwin->w_cursor.lnum)
  4462. - #endif
  4463.                   && c == NUL)
  4464.   #ifdef FEAT_SEARCH_EXTRA
  4465.               /* highlight 'hlsearch' match at end of line */
  4466. --- 4822,4830 ----
  4467. ***************
  4468. *** 9659,9668 ****
  4469.       do_mode = ((p_smd && msg_silent == 0)
  4470.           && ((State & INSERT)
  4471.           || restart_edit
  4472. ! #ifdef FEAT_VISUAL
  4473. !         || VIsual_active
  4474. ! #endif
  4475. !         ));
  4476.       if (do_mode || Recording)
  4477.       {
  4478.       /*
  4479. --- 9625,9631 ----
  4480.       do_mode = ((p_smd && msg_silent == 0)
  4481.           && ((State & INSERT)
  4482.           || restart_edit
  4483. !         || VIsual_active));
  4484.       if (do_mode || Recording)
  4485.       {
  4486.       /*
  4487. ***************
  4488. *** 9790,9796 ****
  4489.           if ((State & INSERT) && p_paste)
  4490.               MSG_PUTS_ATTR(_(" (paste)"), attr);
  4491.   
  4492. - #ifdef FEAT_VISUAL
  4493.           if (VIsual_active)
  4494.           {
  4495.               char *p;
  4496. --- 9753,9758 ----
  4497. ***************
  4498. *** 9810,9816 ****
  4499.               }
  4500.               MSG_PUTS_ATTR(_(p), attr);
  4501.           }
  4502. - #endif
  4503.           MSG_PUTS_ATTR(" --", attr);
  4504.           }
  4505.   
  4506. --- 9772,9777 ----
  4507. ***************
  4508. *** 9839,9849 ****
  4509.       msg_clr_cmdline();
  4510.   
  4511.   #ifdef FEAT_CMDL_INFO
  4512. - # ifdef FEAT_VISUAL
  4513.       /* In Visual mode the size of the selected area must be redrawn. */
  4514.       if (VIsual_active)
  4515.       clear_showcmd();
  4516. - # endif
  4517.   
  4518.       /* If the last window has no status line, the ruler is after the mode
  4519.        * message and must be redrawn */
  4520. --- 9800,9808 ----
  4521. *** ../vim-7.4.211/src/search.c    2014-01-14 21:31:30.000000000 +0100
  4522. --- src/search.c    2014-03-23 13:34:46.351174489 +0100
  4523. ***************
  4524. *** 506,512 ****
  4525.   #endif
  4526.   
  4527.   /*
  4528. !  * lowest level search function.
  4529.    * Search for 'count'th occurrence of pattern 'pat' in direction 'dir'.
  4530.    * Start at position 'pos' and return the found position in 'pos'.
  4531.    *
  4532. --- 506,512 ----
  4533.   #endif
  4534.   
  4535.   /*
  4536. !  * Lowest level search function.
  4537.    * Search for 'count'th occurrence of pattern 'pat' in direction 'dir'.
  4538.    * Start at position 'pos' and return the found position in 'pos'.
  4539.    *
  4540. ***************
  4541. *** 3198,3204 ****
  4542.       cls_bigword = bigword;
  4543.       clearpos(&start_pos);
  4544.   
  4545. - #ifdef FEAT_VISUAL
  4546.       /* Correct cursor when 'selection' is exclusive */
  4547.       if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
  4548.       dec_cursor();
  4549. --- 3198,3203 ----
  4550. ***************
  4551. *** 3208,3214 ****
  4552.        * character, select the word and/or white space under the cursor.
  4553.        */
  4554.       if (!VIsual_active || equalpos(curwin->w_cursor, VIsual))
  4555. - #endif
  4556.       {
  4557.       /*
  4558.        * Go to start of current word or white space.
  4559. --- 3207,3212 ----
  4560. ***************
  4561. *** 3245,3251 ****
  4562.           include_white = TRUE;
  4563.       }
  4564.   
  4565. - #ifdef FEAT_VISUAL
  4566.       if (VIsual_active)
  4567.       {
  4568.           /* should do something when inclusive == FALSE ! */
  4569. --- 3243,3248 ----
  4570. ***************
  4571. *** 3253,3259 ****
  4572.           redraw_curbuf_later(INVERTED);    /* update the inversion */
  4573.       }
  4574.       else
  4575. - #endif
  4576.       {
  4577.           oap->start = start_pos;
  4578.           oap->motion_type = MCHAR;
  4579. --- 3250,3255 ----
  4580. ***************
  4581. *** 3267,3273 ****
  4582.       while (count > 0)
  4583.       {
  4584.       inclusive = TRUE;
  4585. - #ifdef FEAT_VISUAL
  4586.       if (VIsual_active && lt(curwin->w_cursor, VIsual))
  4587.       {
  4588.           /*
  4589. --- 3263,3268 ----
  4590. ***************
  4591. *** 3288,3294 ****
  4592.           }
  4593.       }
  4594.       else
  4595. - #endif
  4596.       {
  4597.           /*
  4598.            * Move cursor forward one word and/or white area.
  4599. --- 3283,3288 ----
  4600. ***************
  4601. *** 3334,3351 ****
  4602.           back_in_line();
  4603.           if (cls() == 0 && curwin->w_cursor.col > 0)
  4604.           {
  4605. - #ifdef FEAT_VISUAL
  4606.           if (VIsual_active)
  4607.               VIsual = curwin->w_cursor;
  4608.           else
  4609. - #endif
  4610.               oap->start = curwin->w_cursor;
  4611.           }
  4612.       }
  4613.       curwin->w_cursor = pos;    /* put cursor back at end */
  4614.       }
  4615.   
  4616. - #ifdef FEAT_VISUAL
  4617.       if (VIsual_active)
  4618.       {
  4619.       if (*p_sel == 'e' && inclusive && ltoreq(VIsual, curwin->w_cursor))
  4620. --- 3328,3342 ----
  4621. ***************
  4622. *** 3357,3363 ****
  4623.       }
  4624.       }
  4625.       else
  4626. - #endif
  4627.       oap->inclusive = inclusive;
  4628.   
  4629.       return OK;
  4630. --- 3348,3353 ----
  4631. ***************
  4632. *** 3384,3390 ****
  4633.       pos = start_pos;
  4634.       findsent(FORWARD, 1L);    /* Find start of next sentence. */
  4635.   
  4636. - #ifdef FEAT_VISUAL
  4637.       /*
  4638.        * When the Visual area is bigger than one character: Extend it.
  4639.        */
  4640. --- 3374,3379 ----
  4641. ***************
  4642. *** 3471,3477 ****
  4643.       }
  4644.       return OK;
  4645.       }
  4646. - #endif
  4647.   
  4648.       /*
  4649.        * If the cursor started on a blank, check if it is just before the start
  4650. --- 3460,3465 ----
  4651. ***************
  4652. *** 3521,3527 ****
  4653.           find_first_blank(&start_pos);
  4654.       }
  4655.   
  4656. - #ifdef FEAT_VISUAL
  4657.       if (VIsual_active)
  4658.       {
  4659.       /* Avoid getting stuck with "is" on a single space before a sentence. */
  4660. --- 3509,3514 ----
  4661. ***************
  4662. *** 3534,3540 ****
  4663.       redraw_curbuf_later(INVERTED);    /* update the inversion */
  4664.       }
  4665.       else
  4666. - #endif
  4667.       {
  4668.       /* include a newline after the sentence, if there is one */
  4669.       if (incl(&curwin->w_cursor) == -1)
  4670. --- 3521,3526 ----
  4671. ***************
  4672. *** 3574,3582 ****
  4673.       /*
  4674.        * If we start on '(', '{', ')', '}', etc., use the whole block inclusive.
  4675.        */
  4676. - #ifdef FEAT_VISUAL
  4677.       if (!VIsual_active || equalpos(VIsual, curwin->w_cursor))
  4678. - #endif
  4679.       {
  4680.       setpcmark();
  4681.       if (what == '{')        /* ignore indent */
  4682. --- 3560,3566 ----
  4683. ***************
  4684. *** 3587,3593 ****
  4685.           /* cursor on '(' or '{', move cursor just after it */
  4686.           ++curwin->w_cursor.col;
  4687.       }
  4688. - #ifdef FEAT_VISUAL
  4689.       else if (lt(VIsual, curwin->w_cursor))
  4690.       {
  4691.       old_start = VIsual;
  4692. --- 3571,3576 ----
  4693. ***************
  4694. *** 3595,3601 ****
  4695.       }
  4696.       else
  4697.       old_end = VIsual;
  4698. - #endif
  4699.   
  4700.       /*
  4701.        * Search backwards for unclosed '(', '{', etc..
  4702. --- 3578,3583 ----
  4703. ***************
  4704. *** 3641,3647 ****
  4705.           if (decl(&curwin->w_cursor) != 0)
  4706.               break;
  4707.           }
  4708. - #ifdef FEAT_VISUAL
  4709.       /*
  4710.        * In Visual mode, when the resulting area is not bigger than what we
  4711.        * started with, extend it to the next block, and then exclude again.
  4712. --- 3623,3628 ----
  4713. ***************
  4714. *** 3666,3676 ****
  4715.           curwin->w_cursor = *end_pos;
  4716.       }
  4717.       else
  4718. - #endif
  4719.           break;
  4720.       }
  4721.   
  4722. - #ifdef FEAT_VISUAL
  4723.       if (VIsual_active)
  4724.       {
  4725.       if (*p_sel == 'e')
  4726. --- 3647,3655 ----
  4727. ***************
  4728. *** 3683,3689 ****
  4729.       showmode();
  4730.       }
  4731.       else
  4732. - #endif
  4733.       {
  4734.       oap->start = start_pos;
  4735.       oap->motion_type = MCHAR;
  4736. --- 3662,3667 ----
  4737. ***************
  4738. *** 3807,3823 ****
  4739.       old_pos = curwin->w_cursor;
  4740.       old_end = curwin->w_cursor;            /* remember where we started */
  4741.       old_start = old_end;
  4742. - #ifdef FEAT_VISUAL
  4743.       if (!VIsual_active || *p_sel == 'e')
  4744. - #endif
  4745.       decl(&old_end);                /* old_end is inclusive */
  4746.   
  4747.       /*
  4748.        * If we start on "<aaa>" select that block.
  4749.        */
  4750. - #ifdef FEAT_VISUAL
  4751.       if (!VIsual_active || equalpos(VIsual, curwin->w_cursor))
  4752. - #endif
  4753.       {
  4754.       setpcmark();
  4755.   
  4756. --- 3785,3797 ----
  4757. ***************
  4758. *** 3843,3849 ****
  4759.           old_end = curwin->w_cursor;
  4760.       }
  4761.       }
  4762. - #ifdef FEAT_VISUAL
  4763.       else if (lt(VIsual, curwin->w_cursor))
  4764.       {
  4765.       old_start = VIsual;
  4766. --- 3817,3822 ----
  4767. ***************
  4768. *** 3851,3857 ****
  4769.       }
  4770.       else
  4771.       old_end = VIsual;
  4772. - #endif
  4773.   
  4774.   again:
  4775.       /*
  4776. --- 3824,3829 ----
  4777. ***************
  4778. *** 3951,3957 ****
  4779.       }
  4780.       }
  4781.   
  4782. - #ifdef FEAT_VISUAL
  4783.       if (VIsual_active)
  4784.       {
  4785.       /* If the end is before the start there is no text between tags, select
  4786. --- 3923,3928 ----
  4787. ***************
  4788. *** 3966,3972 ****
  4789.       showmode();
  4790.       }
  4791.       else
  4792. - #endif
  4793.       {
  4794.       oap->start = start_pos;
  4795.       oap->motion_type = MCHAR;
  4796. --- 3937,3942 ----
  4797. ***************
  4798. *** 4010,4016 ****
  4799.   
  4800.       start_lnum = curwin->w_cursor.lnum;
  4801.   
  4802. - #ifdef FEAT_VISUAL
  4803.       /*
  4804.        * When visual area is more than one line: extend it.
  4805.        */
  4806. --- 3980,3985 ----
  4807. ***************
  4808. *** 4064,4070 ****
  4809.       curwin->w_cursor.col = 0;
  4810.       return retval;
  4811.       }
  4812. - #endif
  4813.   
  4814.       /*
  4815.        * First move back to the start_lnum of the paragraph or white lines
  4816. --- 4033,4038 ----
  4817. ***************
  4818. *** 4136,4142 ****
  4819.       while (start_lnum > 1 && linewhite(start_lnum - 1))
  4820.           --start_lnum;
  4821.   
  4822. - #ifdef FEAT_VISUAL
  4823.       if (VIsual_active)
  4824.       {
  4825.       /* Problem: when doing "Vipipip" nothing happens in a single white
  4826. --- 4104,4109 ----
  4827. ***************
  4828. *** 4149,4155 ****
  4829.       showmode();
  4830.       }
  4831.       else
  4832. - #endif
  4833.       {
  4834.       oap->start.lnum = start_lnum;
  4835.       oap->start.col = 0;
  4836. --- 4116,4121 ----
  4837. ***************
  4838. *** 4247,4253 ****
  4839.       int        col_end;
  4840.       int        col_start = curwin->w_cursor.col;
  4841.       int        inclusive = FALSE;
  4842. - #ifdef FEAT_VISUAL
  4843.       int        vis_empty = TRUE;    /* Visual selection <= 1 char */
  4844.       int        vis_bef_curs = FALSE;    /* Visual starts before cursor */
  4845.       int        inside_quotes = FALSE;    /* Looks like "i'" done before */
  4846. --- 4213,4218 ----
  4847. ***************
  4848. *** 4331,4347 ****
  4849.       }
  4850.       }
  4851.       else
  4852. - #endif
  4853.   
  4854. !     if (line[col_start] == quotechar
  4855. ! #ifdef FEAT_VISUAL
  4856. !         || !vis_empty
  4857. ! #endif
  4858. !         )
  4859.       {
  4860.       int    first_col = col_start;
  4861.   
  4862. - #ifdef FEAT_VISUAL
  4863.       if (!vis_empty)
  4864.       {
  4865.           if (vis_bef_curs)
  4866. --- 4296,4306 ----
  4867.       }
  4868.       }
  4869.       else
  4870.   
  4871. !     if (line[col_start] == quotechar || !vis_empty)
  4872.       {
  4873.       int    first_col = col_start;
  4874.   
  4875.       if (!vis_empty)
  4876.       {
  4877.           if (vis_bef_curs)
  4878. ***************
  4879. *** 4349,4355 ****
  4880.           else
  4881.           first_col = find_prev_quote(line, col_start, quotechar, NULL);
  4882.       }
  4883. ! #endif
  4884.       /* The cursor is on a quote, we don't know if it's the opening or
  4885.        * closing quote.  Search from the start of the line to find out.
  4886.        * Also do this when there is a Visual area, a' may leave the cursor
  4887. --- 4308,4314 ----
  4888.           else
  4889.           first_col = find_prev_quote(line, col_start, quotechar, NULL);
  4890.       }
  4891.       /* The cursor is on a quote, we don't know if it's the opening or
  4892.        * closing quote.  Search from the start of the line to find out.
  4893.        * Also do this when there is a Visual area, a' may leave the cursor
  4894. ***************
  4895. *** 4406,4419 ****
  4896.   
  4897.       /* Set start position.  After vi" another i" must include the ".
  4898.        * For v2i" include the quotes. */
  4899. !     if (!include && count < 2
  4900. ! #ifdef FEAT_VISUAL
  4901. !         && (vis_empty || !inside_quotes)
  4902. ! #endif
  4903. !         )
  4904.       ++col_start;
  4905.       curwin->w_cursor.col = col_start;
  4906. - #ifdef FEAT_VISUAL
  4907.       if (VIsual_active)
  4908.       {
  4909.       /* Set the start of the Visual area when the Visual area was empty, we
  4910. --- 4365,4373 ----
  4911.   
  4912.       /* Set start position.  After vi" another i" must include the ".
  4913.        * For v2i" include the quotes. */
  4914. !     if (!include && count < 2 && (vis_empty || !inside_quotes))
  4915.       ++col_start;
  4916.       curwin->w_cursor.col = col_start;
  4917.       if (VIsual_active)
  4918.       {
  4919.       /* Set the start of the Visual area when the Visual area was empty, we
  4920. ***************
  4921. *** 4433,4439 ****
  4922.       }
  4923.       }
  4924.       else
  4925. - #endif
  4926.       {
  4927.       oap->start = curwin->w_cursor;
  4928.       oap->motion_type = MCHAR;
  4929. --- 4387,4392 ----
  4930. ***************
  4931. *** 4441,4454 ****
  4932.   
  4933.       /* Set end position. */
  4934.       curwin->w_cursor.col = col_end;
  4935. !     if ((include || count > 1
  4936. ! #ifdef FEAT_VISUAL
  4937. !         /* After vi" another i" must include the ". */
  4938.           || (!vis_empty && inside_quotes)
  4939. - #endif
  4940.       ) && inc_cursor() == 2)
  4941.       inclusive = TRUE;
  4942. - #ifdef FEAT_VISUAL
  4943.       if (VIsual_active)
  4944.       {
  4945.       if (vis_empty || vis_bef_curs)
  4946. --- 4394,4403 ----
  4947.   
  4948.       /* Set end position. */
  4949.       curwin->w_cursor.col = col_end;
  4950. !     if ((include || count > 1 /* After vi" another i" must include the ". */
  4951.           || (!vis_empty && inside_quotes)
  4952.       ) && inc_cursor() == 2)
  4953.       inclusive = TRUE;
  4954.       if (VIsual_active)
  4955.       {
  4956.       if (vis_empty || vis_bef_curs)
  4957. ***************
  4958. *** 4480,4486 ****
  4959.       }
  4960.       }
  4961.       else
  4962. - #endif
  4963.       {
  4964.       /* Set inclusive and other oap's flags. */
  4965.       oap->inclusive = inclusive;
  4966. --- 4429,4434 ----
  4967. ***************
  4968. *** 4491,4497 ****
  4969.   
  4970.   #endif /* FEAT_TEXTOBJ */
  4971.   
  4972. - #if defined(FEAT_VISUAL) || defined(PROTO)
  4973.   static int is_one_char __ARGS((char_u *pattern));
  4974.   
  4975.   /*
  4976. --- 4439,4444 ----
  4977. ***************
  4978. *** 4690,4696 ****
  4979.       vim_regfree(regmatch.regprog);
  4980.       return result;
  4981.   }
  4982. - #endif /* FEAT_VISUAL */
  4983.   
  4984.   #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
  4985.       || defined(PROTO)
  4986. --- 4637,4642 ----
  4987. *** ../vim-7.4.211/src/spell.c    2014-03-08 16:13:39.123462070 +0100
  4988. --- src/spell.c    2014-03-23 13:35:15.195174931 +0100
  4989. ***************
  4990. *** 10191,10197 ****
  4991.       if (no_spell_checking(curwin))
  4992.       return;
  4993.   
  4994. - #ifdef FEAT_VISUAL
  4995.       if (VIsual_active)
  4996.       {
  4997.       /* Use the Visually selected text as the bad word.  But reject
  4998. --- 10191,10196 ----
  4999. ***************
  5000. *** 10209,10218 ****
  5001.       ++badlen;
  5002.       end_visual_mode();
  5003.       }
  5004. !     else
  5005. ! #endif
  5006. !     /* Find the start of the badly spelled word. */
  5007. !     if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0
  5008.           || curwin->w_cursor.col > prev_cursor.col)
  5009.       {
  5010.       /* No bad word or it starts after the cursor: use the word under the
  5011. --- 10208,10215 ----
  5012.       ++badlen;
  5013.       end_visual_mode();
  5014.       }
  5015. !     /* Find the start of the badly spelled word. */
  5016. !     else if (spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL) == 0
  5017.           || curwin->w_cursor.col > prev_cursor.col)
  5018.       {
  5019.       /* No bad word or it starts after the cursor: use the word under the
  5020. *** ../vim-7.4.211/src/syntax.c    2013-11-28 18:53:47.000000000 +0100
  5021. --- src/syntax.c    2014-03-23 13:35:30.379175164 +0100
  5022. ***************
  5023. *** 6837,6846 ****
  5024.       CENT("SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue",
  5025.            "SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue"),
  5026.   #endif
  5027. - #ifdef FEAT_VISUAL
  5028.       CENT("Visual term=reverse",
  5029.            "Visual term=reverse guibg=LightGrey"),
  5030. - #endif
  5031.   #ifdef FEAT_DIFF
  5032.       CENT("DiffAdd term=bold ctermbg=LightBlue",
  5033.            "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"),
  5034. --- 6837,6844 ----
  5035. ***************
  5036. *** 6927,6936 ****
  5037.       CENT("SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan",
  5038.            "SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan"),
  5039.   #endif
  5040. - #ifdef FEAT_VISUAL
  5041.       CENT("Visual term=reverse",
  5042.            "Visual term=reverse guibg=DarkGrey"),
  5043. - #endif
  5044.   #ifdef FEAT_DIFF
  5045.       CENT("DiffAdd term=bold ctermbg=DarkBlue",
  5046.            "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"),
  5047. --- 6925,6932 ----
  5048. *** ../vim-7.4.211/src/term.c    2014-03-19 14:01:53.153903819 +0100
  5049. --- src/term.c    2014-03-23 13:35:43.519175365 +0100
  5050. ***************
  5051. *** 3456,3467 ****
  5052.       return;
  5053.       }
  5054.   
  5055. - #  ifdef FEAT_VISUAL
  5056.       if (VIsual_active)
  5057.       checkfor = MOUSE_VISUAL;
  5058. !     else
  5059. ! #  endif
  5060. !     if (State == HITRETURN || State == ASKMORE || State == SETWSIZE)
  5061.       checkfor = MOUSE_RETURN;
  5062.       else if (State & INSERT)
  5063.       checkfor = MOUSE_INSERT;
  5064. --- 3456,3464 ----
  5065.       return;
  5066.       }
  5067.   
  5068.       if (VIsual_active)
  5069.       checkfor = MOUSE_VISUAL;
  5070. !     else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE)
  5071.       checkfor = MOUSE_RETURN;
  5072.       else if (State & INSERT)
  5073.       checkfor = MOUSE_INSERT;
  5074. *** ../vim-7.4.211/src/ui.c    2013-07-13 20:57:08.000000000 +0200
  5075. --- src/ui.c    2014-03-23 13:36:15.459175855 +0100
  5076. ***************
  5077. *** 2610,2622 ****
  5078.       if (on_sep_line)
  5079.           return IN_SEP_LINE;
  5080.   #endif
  5081. - #ifdef FEAT_VISUAL
  5082.       if (flags & MOUSE_MAY_STOP_VIS)
  5083.       {
  5084.           end_visual_mode();
  5085.           redraw_curbuf_later(INVERTED);    /* delete the inversion */
  5086.       }
  5087. - #endif
  5088.   #if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD)
  5089.       /* Continue a modeless selection in another window. */
  5090.       if (cmdwin_type != 0 && row < W_WINROW(curwin))
  5091. --- 2610,2620 ----
  5092. ***************
  5093. *** 2686,2717 ****
  5094.       }
  5095.   #endif
  5096.   
  5097. - #ifdef FEAT_VISUAL
  5098.       /* Before jumping to another buffer, or moving the cursor for a left
  5099.        * click, stop Visual mode. */
  5100.       if (VIsual_active
  5101.           && (wp->w_buffer != curwin->w_buffer
  5102.               || (!on_status_line
  5103. ! # ifdef FEAT_VERTSPLIT
  5104.               && !on_sep_line
  5105. ! # endif
  5106. ! # ifdef FEAT_FOLDING
  5107.               && (
  5108. ! #  ifdef FEAT_RIGHTLEFT
  5109.                   wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc :
  5110. ! #  endif
  5111.                   col >= wp->w_p_fdc
  5112. ! #  ifdef FEAT_CMDWIN
  5113.                     + (cmdwin_type == 0 && wp == curwin ? 0 : 1)
  5114. - #  endif
  5115. -                 )
  5116.   # endif
  5117.               && (flags & MOUSE_MAY_STOP_VIS))))
  5118.       {
  5119.           end_visual_mode();
  5120.           redraw_curbuf_later(INVERTED);    /* delete the inversion */
  5121.       }
  5122. - #endif
  5123.   #ifdef FEAT_CMDWIN
  5124.       if (cmdwin_type != 0 && wp != curwin)
  5125.       {
  5126. --- 2684,2713 ----
  5127.       }
  5128.   #endif
  5129.   
  5130.       /* Before jumping to another buffer, or moving the cursor for a left
  5131.        * click, stop Visual mode. */
  5132.       if (VIsual_active
  5133.           && (wp->w_buffer != curwin->w_buffer
  5134.               || (!on_status_line
  5135. ! #ifdef FEAT_VERTSPLIT
  5136.               && !on_sep_line
  5137. ! #endif
  5138. ! #ifdef FEAT_FOLDING
  5139.               && (
  5140. ! # ifdef FEAT_RIGHTLEFT
  5141.                   wp->w_p_rl ? col < W_WIDTH(wp) - wp->w_p_fdc :
  5142. ! # endif
  5143.                   col >= wp->w_p_fdc
  5144. ! # ifdef FEAT_CMDWIN
  5145.                     + (cmdwin_type == 0 && wp == curwin ? 0 : 1)
  5146.   # endif
  5147. +                 )
  5148. + #endif
  5149.               && (flags & MOUSE_MAY_STOP_VIS))))
  5150.       {
  5151.           end_visual_mode();
  5152.           redraw_curbuf_later(INVERTED);    /* delete the inversion */
  5153.       }
  5154.   #ifdef FEAT_CMDWIN
  5155.       if (cmdwin_type != 0 && wp != curwin)
  5156.       {
  5157. ***************
  5158. *** 2801,2814 ****
  5159.   #endif
  5160.       else /* keep_window_focus must be TRUE */
  5161.       {
  5162. - #ifdef FEAT_VISUAL
  5163.       /* before moving the cursor for a left click, stop Visual mode */
  5164.       if (flags & MOUSE_MAY_STOP_VIS)
  5165.       {
  5166.           end_visual_mode();
  5167.           redraw_curbuf_later(INVERTED);    /* delete the inversion */
  5168.       }
  5169. - #endif
  5170.   
  5171.   #if defined(FEAT_CMDWIN) && defined(FEAT_CLIPBOARD)
  5172.       /* Continue a modeless selection in another window. */
  5173. --- 2797,2808 ----
  5174. ***************
  5175. *** 2933,2939 ****
  5176.       if (mouse_comp_pos(curwin, &row, &col, &curwin->w_cursor.lnum))
  5177.       mouse_past_bottom = TRUE;
  5178.   
  5179. - #ifdef FEAT_VISUAL
  5180.       /* Start Visual mode before coladvance(), for when 'sel' != "old" */
  5181.       if ((flags & MOUSE_MAY_VIS) && !VIsual_active)
  5182.       {
  5183. --- 2927,2932 ----
  5184. ***************
  5185. *** 2947,2953 ****
  5186.       if (p_smd && msg_silent == 0)
  5187.           redraw_cmdline = TRUE;    /* show visual mode later */
  5188.       }
  5189. - #endif
  5190.   
  5191.       curwin->w_curswant = col;
  5192.       curwin->w_set_curswant = FALSE;    /* May still have been TRUE */
  5193. --- 2940,2945 ----
  5194. *** ../vim-7.4.211/src/undo.c    2014-03-12 16:51:35.060792541 +0100
  5195. --- src/undo.c    2014-03-23 13:37:05.435176620 +0100
  5196. ***************
  5197. *** 532,540 ****
  5198.   
  5199.       /* save named marks and Visual marks for undo */
  5200.       mch_memmove(uhp->uh_namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS);
  5201. - #ifdef FEAT_VISUAL
  5202.       uhp->uh_visual = curbuf->b_visual;
  5203. - #endif
  5204.   
  5205.       curbuf->b_u_newhead = uhp;
  5206.       if (curbuf->b_u_oldhead == NULL)
  5207. --- 532,538 ----
  5208. ***************
  5209. *** 1014,1029 ****
  5210.       /* Assume NMARKS will stay the same. */
  5211.       for (i = 0; i < NMARKS; ++i)
  5212.       serialize_pos(uhp->uh_namedm[i], fp);
  5213. - #ifdef FEAT_VISUAL
  5214.       serialize_visualinfo(&uhp->uh_visual, fp);
  5215. - #else
  5216. -     {
  5217. -     visualinfo_T info;
  5218. -     memset(&info, 0, sizeof(visualinfo_T));
  5219. -     serialize_visualinfo(&info, fp);
  5220. -     }
  5221. - #endif
  5222.       put_time(fp, uhp->uh_time);
  5223.   
  5224.       /* Optional fields. */
  5225. --- 1012,1018 ----
  5226. ***************
  5227. *** 1082,1095 ****
  5228.       uhp->uh_flags = get2c(fp);
  5229.       for (i = 0; i < NMARKS; ++i)
  5230.       unserialize_pos(&uhp->uh_namedm[i], fp);
  5231. - #ifdef FEAT_VISUAL
  5232.       unserialize_visualinfo(&uhp->uh_visual, fp);
  5233. - #else
  5234. -     {
  5235. -     visualinfo_T info;
  5236. -     unserialize_visualinfo(&info, fp);
  5237. -     }
  5238. - #endif
  5239.       uhp->uh_time = get8ctime(fp);
  5240.   
  5241.       /* Optional fields. */
  5242. --- 1071,1077 ----
  5243. ***************
  5244. *** 2406,2414 ****
  5245.       int        old_flags;
  5246.       int        new_flags;
  5247.       pos_T    namedm[NMARKS];
  5248. - #ifdef FEAT_VISUAL
  5249.       visualinfo_T visualinfo;
  5250. - #endif
  5251.       int        empty_buffer;            /* buffer became empty */
  5252.       u_header_T    *curhead = curbuf->b_u_curhead;
  5253.   
  5254. --- 2388,2394 ----
  5255. ***************
  5256. *** 2430,2438 ****
  5257.        * save marks before undo/redo
  5258.        */
  5259.       mch_memmove(namedm, curbuf->b_namedm, sizeof(pos_T) * NMARKS);
  5260. - #ifdef FEAT_VISUAL
  5261.       visualinfo = curbuf->b_visual;
  5262. - #endif
  5263.       curbuf->b_op_start.lnum = curbuf->b_ml.ml_line_count;
  5264.       curbuf->b_op_start.col = 0;
  5265.       curbuf->b_op_end.lnum = 0;
  5266. --- 2410,2416 ----
  5267. ***************
  5268. *** 2602,2614 ****
  5269.           curbuf->b_namedm[i] = curhead->uh_namedm[i];
  5270.           curhead->uh_namedm[i] = namedm[i];
  5271.       }
  5272. - #ifdef FEAT_VISUAL
  5273.       if (curhead->uh_visual.vi_start.lnum != 0)
  5274.       {
  5275.       curbuf->b_visual = curhead->uh_visual;
  5276.       curhead->uh_visual = visualinfo;
  5277.       }
  5278. - #endif
  5279.   
  5280.       /*
  5281.        * If the cursor is only off by one line, put it at the same position as
  5282. --- 2580,2590 ----
  5283. *** ../vim-7.4.211/src/version.c    2014-03-22 13:29:57.693846167 +0100
  5284. --- src/version.c    2014-03-23 15:01:49.719254526 +0100
  5285. ***************
  5286. *** 642,656 ****
  5287.   #else
  5288.       "-virtualedit",
  5289.   #endif
  5290. - #ifdef FEAT_VISUAL
  5291.       "+visual",
  5292. ! # ifdef FEAT_VISUALEXTRA
  5293.       "+visualextra",
  5294. - # else
  5295. -     "-visualextra",
  5296. - # endif
  5297.   #else
  5298. !     "-visual",
  5299.   #endif
  5300.   #ifdef FEAT_VIMINFO
  5301.       "+viminfo",
  5302. --- 642,652 ----
  5303.   #else
  5304.       "-virtualedit",
  5305.   #endif
  5306.       "+visual",
  5307. ! #ifdef FEAT_VISUALEXTRA
  5308.       "+visualextra",
  5309.   #else
  5310. !     "-visualextra",
  5311.   #endif
  5312.   #ifdef FEAT_VIMINFO
  5313.       "+viminfo",
  5314. *** ../vim-7.4.211/src/window.c    2014-01-10 15:53:09.000000000 +0100
  5315. --- src/window.c    2014-03-23 13:38:17.767177729 +0100
  5316. ***************
  5317. *** 130,138 ****
  5318.       case Ctrl_S:
  5319.       case 's':
  5320.           CHECK_CMDWIN
  5321. - #ifdef FEAT_VISUAL
  5322.           reset_VIsual_and_resel();    /* stop Visual mode */
  5323. - #endif
  5324.   #ifdef FEAT_QUICKFIX
  5325.           /* When splitting the quickfix window open a new buffer in it,
  5326.            * don't replicate the quickfix buffer. */
  5327. --- 130,136 ----
  5328. ***************
  5329. *** 150,158 ****
  5330.       case Ctrl_V:
  5331.       case 'v':
  5332.           CHECK_CMDWIN
  5333. - # ifdef FEAT_VISUAL
  5334.           reset_VIsual_and_resel();    /* stop Visual mode */
  5335. - # endif
  5336.   # ifdef FEAT_QUICKFIX
  5337.           /* When splitting the quickfix window open a new buffer in it,
  5338.            * don't replicate the quickfix buffer. */
  5339. --- 148,154 ----
  5340. ***************
  5341. *** 170,178 ****
  5342.       case Ctrl_HAT:
  5343.       case '^':
  5344.           CHECK_CMDWIN
  5345. - #ifdef FEAT_VISUAL
  5346.           reset_VIsual_and_resel();    /* stop Visual mode */
  5347. - #endif
  5348.           STRCPY(cbuf, "split #");
  5349.           if (Prenum)
  5350.               vim_snprintf((char *)cbuf + 7, sizeof(cbuf) - 7,
  5351. --- 166,172 ----
  5352. ***************
  5353. *** 184,192 ****
  5354.       case Ctrl_N:
  5355.       case 'n':
  5356.           CHECK_CMDWIN
  5357. - #ifdef FEAT_VISUAL
  5358.           reset_VIsual_and_resel();    /* stop Visual mode */
  5359. - #endif
  5360.   #ifdef FEAT_QUICKFIX
  5361.   newwindow:
  5362.   #endif
  5363. --- 178,184 ----
  5364. ***************
  5365. *** 206,223 ****
  5366.   /* quit current window */
  5367.       case Ctrl_Q:
  5368.       case 'q':
  5369. - #ifdef FEAT_VISUAL
  5370.           reset_VIsual_and_resel();    /* stop Visual mode */
  5371. - #endif
  5372.           do_cmdline_cmd((char_u *)"quit");
  5373.           break;
  5374.   
  5375.   /* close current window */
  5376.       case Ctrl_C:
  5377.       case 'c':
  5378. - #ifdef FEAT_VISUAL
  5379.           reset_VIsual_and_resel();    /* stop Visual mode */
  5380. - #endif
  5381.           do_cmdline_cmd((char_u *)"close");
  5382.           break;
  5383.   
  5384. --- 198,211 ----
  5385. ***************
  5386. *** 226,234 ****
  5387.       case Ctrl_Z:
  5388.       case 'z':
  5389.           CHECK_CMDWIN
  5390. - #ifdef FEAT_VISUAL
  5391.           reset_VIsual_and_resel();    /* stop Visual mode */
  5392. - #endif
  5393.           do_cmdline_cmd((char_u *)"pclose");
  5394.           break;
  5395.   
  5396. --- 214,220 ----
  5397. ***************
  5398. *** 248,256 ****
  5399.       case Ctrl_O:
  5400.       case 'o':
  5401.           CHECK_CMDWIN
  5402. - #ifdef FEAT_VISUAL
  5403.           reset_VIsual_and_resel();    /* stop Visual mode */
  5404. - #endif
  5405.           do_cmdline_cmd((char_u *)"only");
  5406.           break;
  5407.   
  5408. --- 234,240 ----
  5409. ***************
  5410. *** 399,416 ****
  5411.       case Ctrl_R:
  5412.       case 'r':
  5413.           CHECK_CMDWIN
  5414. - #ifdef FEAT_VISUAL
  5415.           reset_VIsual_and_resel();    /* stop Visual mode */
  5416. - #endif
  5417.           win_rotate(FALSE, (int)Prenum1);    /* downwards */
  5418.           break;
  5419.   
  5420.   /* rotate windows upwards */
  5421.       case 'R':
  5422.           CHECK_CMDWIN
  5423. - #ifdef FEAT_VISUAL
  5424.           reset_VIsual_and_resel();    /* stop Visual mode */
  5425. - #endif
  5426.           win_rotate(TRUE, (int)Prenum1);        /* upwards */
  5427.           break;
  5428.   
  5429. --- 383,396 ----
  5430. ***************
  5431. *** 499,507 ****
  5432.       case ']':
  5433.       case Ctrl_RSB:
  5434.           CHECK_CMDWIN
  5435. - #ifdef FEAT_VISUAL
  5436.           reset_VIsual_and_resel();    /* stop Visual mode */
  5437. - #endif
  5438.           if (Prenum)
  5439.               postponed_split = Prenum;
  5440.           else
  5441. --- 479,485 ----
  5442. ***************
  5443. *** 612,620 ****
  5444.   #endif
  5445.               case ']':
  5446.               case Ctrl_RSB:
  5447. - #ifdef FEAT_VISUAL
  5448.               reset_VIsual_and_resel();    /* stop Visual mode */
  5449. - #endif
  5450.               if (Prenum)
  5451.                   postponed_split = Prenum;
  5452.               else
  5453. --- 590,596 ----
  5454. ***************
  5455. *** 3726,3734 ****
  5456.   {
  5457.       tabpage_T    *tp = curtab;
  5458.   
  5459. - #ifdef FEAT_VISUAL
  5460.       reset_VIsual_and_resel();    /* stop Visual mode */
  5461. - #endif
  5462.   #ifdef FEAT_AUTOCMD
  5463.       if (trigger_leave_autocmds)
  5464.       {
  5465. --- 3702,3708 ----
  5466. ***************
  5467. *** 4029,4040 ****
  5468.       return;
  5469.   #endif
  5470.   
  5471. - #ifdef FEAT_VISUAL
  5472.       if (wp->w_buffer != curbuf)
  5473.       reset_VIsual_and_resel();
  5474.       else if (VIsual_active)
  5475.       wp->w_cursor = curwin->w_cursor;
  5476. - #endif
  5477.   
  5478.   #ifdef FEAT_GUI
  5479.       need_mouse_correct = TRUE;
  5480. --- 4003,4012 ----
  5481. ***************
  5482. *** 6037,6043 ****
  5483.       long    count;
  5484.       linenr_T    *file_lnum;
  5485.   {
  5486. - # ifdef FEAT_VISUAL
  5487.       if (VIsual_active)
  5488.       {
  5489.       int    len;
  5490. --- 6009,6014 ----
  5491. ***************
  5492. *** 6048,6054 ****
  5493.       return find_file_name_in_path(ptr, len,
  5494.                FNAME_MESS|FNAME_EXP|FNAME_REL, count, curbuf->b_ffname);
  5495.       }
  5496. - # endif
  5497.       return file_name_at_cursor(FNAME_MESS|FNAME_HYP|FNAME_EXP|FNAME_REL, count,
  5498.                      file_lnum);
  5499.   
  5500. --- 6019,6024 ----
  5501. *** ../vim-7.4.211/src/feature.h    2014-03-12 17:56:42.960852421 +0100
  5502. --- src/feature.h    2014-03-23 13:39:02.003178407 +0100
  5503. ***************
  5504. *** 214,220 ****
  5505.    * +visual        Visual mode - now always included.
  5506.    * +visualextra        Extra features for Visual mode (mostly block operators).
  5507.    */
  5508. - #define FEAT_VISUAL
  5509.   #ifdef FEAT_NORMAL
  5510.   # define FEAT_VISUALEXTRA
  5511.   #endif
  5512. --- 214,219 ----
  5513. ***************
  5514. *** 1138,1150 ****
  5515.   #ifdef FEAT_GUI
  5516.   # ifndef FEAT_CLIPBOARD
  5517.   #  define FEAT_CLIPBOARD
  5518. - #  ifndef FEAT_VISUAL
  5519. - #   define FEAT_VISUAL
  5520. - #  endif
  5521.   # endif
  5522.   #endif
  5523.   
  5524. ! #if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \
  5525.       && (defined(UNIX) || defined(VMS)) \
  5526.       && defined(WANT_X11) && defined(HAVE_X11)
  5527.   # define FEAT_XCLIPBOARD
  5528. --- 1137,1146 ----
  5529.   #ifdef FEAT_GUI
  5530.   # ifndef FEAT_CLIPBOARD
  5531.   #  define FEAT_CLIPBOARD
  5532.   # endif
  5533.   #endif
  5534.   
  5535. ! #if defined(FEAT_NORMAL) \
  5536.       && (defined(UNIX) || defined(VMS)) \
  5537.       && defined(WANT_X11) && defined(HAVE_X11)
  5538.   # define FEAT_XCLIPBOARD
  5539. *** ../vim-7.4.211/src/globals.h    2014-02-22 23:03:48.712901208 +0100
  5540. --- src/globals.h    2014-03-23 13:39:17.407178643 +0100
  5541. ***************
  5542. *** 662,668 ****
  5543.                   /* set to TRUE when "-s" commandline argument
  5544.                    * used for ex */
  5545.   
  5546. - #ifdef FEAT_VISUAL
  5547.   EXTERN pos_T    VIsual;        /* start position of active Visual selection */
  5548.   EXTERN int    VIsual_active INIT(= FALSE);
  5549.                   /* whether Visual mode is active */
  5550. --- 662,667 ----
  5551. ***************
  5552. *** 677,683 ****
  5553.   
  5554.   EXTERN int    redo_VIsual_busy INIT(= FALSE);
  5555.                   /* TRUE when redoing Visual */
  5556. - #endif
  5557.   
  5558.   #ifdef FEAT_MOUSE
  5559.   /*
  5560. --- 676,681 ----
  5561. ***************
  5562. *** 1178,1188 ****
  5563.   EXTERN int    fill_diff INIT(= '-');
  5564.   #endif
  5565.   
  5566. - #ifdef FEAT_VISUAL
  5567.   /* Whether 'keymodel' contains "stopsel" and "startsel". */
  5568.   EXTERN int    km_stopsel INIT(= FALSE);
  5569.   EXTERN int    km_startsel INIT(= FALSE);
  5570. - #endif
  5571.   
  5572.   #ifdef FEAT_CMDWIN
  5573.   EXTERN int    cedit_key INIT(= -1);    /* key value of 'cedit' option */
  5574. --- 1176,1184 ----
  5575. *** ../vim-7.4.211/src/option.h    2014-03-12 18:55:52.104906804 +0100
  5576. --- src/option.h    2014-03-23 13:39:30.991178851 +0100
  5577. ***************
  5578. *** 572,580 ****
  5579.   EXTERN char_u    *p_isp;        /* 'isprint' */
  5580.   EXTERN int    p_js;        /* 'joinspaces' */
  5581.   EXTERN char_u    *p_kp;        /* 'keywordprg' */
  5582. - #ifdef FEAT_VISUAL
  5583.   EXTERN char_u    *p_km;        /* 'keymodel' */
  5584. - #endif
  5585.   #ifdef FEAT_LANGMAP
  5586.   EXTERN char_u    *p_langmap;    /* 'langmap'*/
  5587.   #endif
  5588. --- 572,578 ----
  5589. ***************
  5590. *** 681,690 ****
  5591.   #endif
  5592.   EXTERN char_u    *p_sections;    /* 'sections' */
  5593.   EXTERN int    p_secure;    /* 'secure' */
  5594. - #ifdef FEAT_VISUAL
  5595.   EXTERN char_u    *p_sel;        /* 'selection' */
  5596.   EXTERN char_u    *p_slm;        /* 'selectmode' */
  5597. - #endif
  5598.   #ifdef FEAT_SESSION
  5599.   EXTERN char_u    *p_ssop;    /* 'sessionoptions' */
  5600.   EXTERN unsigned    ssop_flags;
  5601. --- 679,686 ----
  5602. *** ../vim-7.4.211/src/os_win32.h    2013-09-25 19:13:32.000000000 +0200
  5603. --- src/os_win32.h    2014-03-23 13:39:49.819179139 +0100
  5604. ***************
  5605. *** 68,74 ****
  5606.   #endif
  5607.   
  5608.   #define USE_FNAME_CASE        /* adjust case of file names */
  5609. ! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_VISUAL) && defined(FEAT_MOUSE)
  5610.   # define FEAT_CLIPBOARD        /* include clipboard support */
  5611.   #endif
  5612.   #if defined(__DATE__) && defined(__TIME__)
  5613. --- 68,74 ----
  5614.   #endif
  5615.   
  5616.   #define USE_FNAME_CASE        /* adjust case of file names */
  5617. ! #if !defined(FEAT_CLIPBOARD) && defined(FEAT_MOUSE)
  5618.   # define FEAT_CLIPBOARD        /* include clipboard support */
  5619.   #endif
  5620.   #if defined(__DATE__) && defined(__TIME__)
  5621. *** ../vim-7.4.211/src/structs.h    2014-03-12 18:55:52.104906804 +0100
  5622. --- src/structs.h    2014-03-23 13:40:19.175179589 +0100
  5623. ***************
  5624. *** 346,354 ****
  5625.   #endif
  5626.       int        uh_flags;    /* see below */
  5627.       pos_T    uh_namedm[NMARKS];    /* marks before undo/after redo */
  5628. - #ifdef FEAT_VISUAL
  5629.       visualinfo_T uh_visual;    /* Visual areas before undo/after redo */
  5630. - #endif
  5631.       time_t    uh_time;    /* timestamp when the change was made */
  5632.       long    uh_save_nr;    /* set when the file was saved after the
  5633.                      changes in this block */
  5634. --- 346,352 ----
  5635. ***************
  5636. *** 1406,1417 ****
  5637.   
  5638.       pos_T    b_namedm[NMARKS]; /* current named marks (mark.c) */
  5639.   
  5640. - #ifdef FEAT_VISUAL
  5641.       /* These variables are set when VIsual_active becomes FALSE */
  5642.       visualinfo_T b_visual;
  5643. ! # ifdef FEAT_EVAL
  5644.       int        b_visual_mode_eval;  /* b_visual.vi_mode for visualmode() */
  5645. - # endif
  5646.   #endif
  5647.   
  5648.       pos_T    b_last_cursor;    /* cursor position when last unloading this
  5649. --- 1404,1413 ----
  5650.   
  5651.       pos_T    b_namedm[NMARKS]; /* current named marks (mark.c) */
  5652.   
  5653.       /* These variables are set when VIsual_active becomes FALSE */
  5654.       visualinfo_T b_visual;
  5655. ! #ifdef FEAT_EVAL
  5656.       int        b_visual_mode_eval;  /* b_visual.vi_mode for visualmode() */
  5657.   #endif
  5658.   
  5659.       pos_T    b_last_cursor;    /* cursor position when last unloading this
  5660. ***************
  5661. *** 1980,1986 ****
  5662.                          time through cursupdate() to the
  5663.                          current virtual column */
  5664.   
  5665. - #ifdef FEAT_VISUAL
  5666.       /*
  5667.        * the next six are used to update the visual part
  5668.        */
  5669. --- 1976,1981 ----
  5670. ***************
  5671. *** 1991,1997 ****
  5672.       linenr_T    w_old_visual_lnum;  /* last known start of visual part */
  5673.       colnr_T    w_old_visual_col;   /* last known start of visual part */
  5674.       colnr_T    w_old_curswant;        /* last known value of Curswant */
  5675. - #endif
  5676.   
  5677.       /*
  5678.        * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
  5679. --- 1986,1991 ----
  5680. ***************
  5681. *** 2293,2302 ****
  5682.                      (inclusive) */
  5683.       int        empty;        /* op_start and op_end the same (only used by
  5684.                      do_change()) */
  5685. - #ifdef FEAT_VISUAL
  5686.       int        is_VIsual;    /* operator on Visual area */
  5687.       int        block_mode;    /* current operator is Visual block mode */
  5688. - #endif
  5689.       colnr_T    start_vcol;    /* start col for block mode operator */
  5690.       colnr_T    end_vcol;    /* end col for block mode operator */
  5691.   #ifdef FEAT_AUTOCMD
  5692. --- 2287,2294 ----
  5693. *** ../vim-7.4.211/src/version.c    2014-03-22 13:29:57.693846167 +0100
  5694. --- src/version.c    2014-03-23 15:01:49.719254526 +0100
  5695. ***************
  5696. *** 740,741 ****
  5697. --- 736,739 ----
  5698.   {   /* Add new patch number below this line */
  5699. + /**/
  5700. +     212,
  5701.   /**/
  5702.  
  5703. -- 
  5704. If all you have is a hammer, everything looks like a nail.
  5705. When your hammer is C++, everything begins to look like a thumb.
  5706.             -- Steve Hoflich, comp.lang.c++
  5707.  
  5708.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  5709. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  5710. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  5711.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  5712.