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.2 / 7.2.301 < prev    next >
Encoding:
Internet Message Format  |  2009-11-16  |  14.3 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 7.2.301
  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. NOTE: some mail and patch programs may have a problem with the non-ASCII
  11. characters in this patch.  You can fetch the patch from
  12. ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.301  and/or fetch the updated
  13. files from CVS.  http://www.vim.org/cvs.php
  14.  
  15.  
  16. Patch 7.2.301
  17. Problem:    Formatting is wrong when 'tw' is set to a small value.
  18. Solution:   Fix it and add tests.  Also fix behavior of "1" in 'fo'. (Yukihiro
  19.         Nakadaira)
  20. Files:        src/edit.c, src/testdir/Makefile, src/testdir/test68.in,
  21.         src/testdir/test68.ok, src/testdir/test69.in,
  22.         src/testdir/test69.ok
  23.  
  24.  
  25. *** ../vim-7.2.300/src/edit.c    2009-11-11 13:22:32.000000000 +0100
  26. --- src/edit.c    2009-11-17 15:34:47.000000000 +0100
  27. ***************
  28. *** 181,187 ****
  29.   static void ins_ctrl_v __ARGS((void));
  30.   static void undisplay_dollar __ARGS((void));
  31.   static void insert_special __ARGS((int, int, int));
  32. ! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only));
  33.   static void check_auto_format __ARGS((int));
  34.   static void redo_literal __ARGS((int c));
  35.   static void start_arrow __ARGS((pos_T *end_insert_pos));
  36. --- 181,187 ----
  37.   static void ins_ctrl_v __ARGS((void));
  38.   static void undisplay_dollar __ARGS((void));
  39.   static void insert_special __ARGS((int, int, int));
  40. ! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only, int c));
  41.   static void check_auto_format __ARGS((int));
  42.   static void redo_literal __ARGS((int c));
  43.   static void start_arrow __ARGS((pos_T *end_insert_pos));
  44. ***************
  45. *** 2164,2170 ****
  46.       int        i, c;
  47.       int        actual_len;        /* Take multi-byte characters */
  48.       int        actual_compl_length;    /* into account. */
  49. !     int        *wca;                /* Wide character array. */
  50.       int        has_lower = FALSE;
  51.       int        was_letter = FALSE;
  52.   
  53. --- 2164,2170 ----
  54.       int        i, c;
  55.       int        actual_len;        /* Take multi-byte characters */
  56.       int        actual_compl_length;    /* into account. */
  57. !     int        *wca;            /* Wide character array. */
  58.       int        has_lower = FALSE;
  59.       int        was_letter = FALSE;
  60.   
  61. ***************
  62. *** 5558,5564 ****
  63.       }
  64.       if (do_internal)
  65.   #endif
  66. !         internal_format(textwidth, second_indent, flags, c == NUL);
  67.       }
  68.   
  69.       if (c == NUL)        /* only formatting was wanted */
  70. --- 5558,5564 ----
  71.       }
  72.       if (do_internal)
  73.   #endif
  74. !         internal_format(textwidth, second_indent, flags, c == NUL, c);
  75.       }
  76.   
  77.       if (c == NUL)        /* only formatting was wanted */
  78. ***************
  79. *** 5738,5748 ****
  80.    * Format text at the current insert position.
  81.    */
  82.       static void
  83. ! internal_format(textwidth, second_indent, flags, format_only)
  84.       int        textwidth;
  85.       int        second_indent;
  86.       int        flags;
  87.       int        format_only;
  88.   {
  89.       int        cc;
  90.       int        save_char = NUL;
  91. --- 5738,5749 ----
  92.    * Format text at the current insert position.
  93.    */
  94.       static void
  95. ! internal_format(textwidth, second_indent, flags, format_only, c)
  96.       int        textwidth;
  97.       int        second_indent;
  98.       int        flags;
  99.       int        format_only;
  100. +     int        c; /* character to be inserted (can be NUL) */
  101.   {
  102.       int        cc;
  103.       int        save_char = NUL;
  104. ***************
  105. *** 5763,5769 ****
  106.        * When 'ai' is off we don't want a space under the cursor to be
  107.        * deleted.  Replace it with an 'x' temporarily.
  108.        */
  109. !     if (!curbuf->b_p_ai)
  110.       {
  111.       cc = gchar_cursor();
  112.       if (vim_iswhite(cc))
  113. --- 5764,5774 ----
  114.        * When 'ai' is off we don't want a space under the cursor to be
  115.        * deleted.  Replace it with an 'x' temporarily.
  116.        */
  117. !     if (!curbuf->b_p_ai
  118. ! #ifdef FEAT_VREPLACE
  119. !         && !(State & VREPLACE_FLAG)
  120. ! #endif
  121. !         )
  122.       {
  123.       cc = gchar_cursor();
  124.       if (vim_iswhite(cc))
  125. ***************
  126. *** 5789,5797 ****
  127.       char_u    *saved_text = NULL;
  128.   #endif
  129.       colnr_T    col;
  130.   
  131. !     virtcol = get_nolist_virtcol();
  132. !     if (virtcol < (colnr_T)textwidth)
  133.           break;
  134.   
  135.   #ifdef FEAT_COMMENTS
  136. --- 5794,5804 ----
  137.       char_u    *saved_text = NULL;
  138.   #endif
  139.       colnr_T    col;
  140. +     colnr_T    end_col;
  141.   
  142. !     virtcol = get_nolist_virtcol()
  143. !         + char2cells(c != NUL ? c : gchar_cursor());
  144. !     if (virtcol <= (colnr_T)textwidth)
  145.           break;
  146.   
  147.   #ifdef FEAT_COMMENTS
  148. ***************
  149. *** 5831,5842 ****
  150.       coladvance((colnr_T)textwidth);
  151.       wantcol = curwin->w_cursor.col;
  152.   
  153. !     curwin->w_cursor.col = startcol - 1;
  154. ! #ifdef FEAT_MBYTE
  155. !     /* Correct cursor for multi-byte character. */
  156. !     if (has_mbyte)
  157. !         mb_adjust_cursor();
  158. ! #endif
  159.       foundcol = 0;
  160.   
  161.       /*
  162. --- 5838,5844 ----
  163.       coladvance((colnr_T)textwidth);
  164.       wantcol = curwin->w_cursor.col;
  165.   
  166. !     curwin->w_cursor.col = startcol;
  167.       foundcol = 0;
  168.   
  169.       /*
  170. ***************
  171. *** 5847,5857 ****
  172.               || curwin->w_cursor.lnum != Insstart.lnum
  173.               || curwin->w_cursor.col >= Insstart.col)
  174.       {
  175. !         cc = gchar_cursor();
  176.           if (WHITECHAR(cc))
  177.           {
  178.           /* remember position of blank just before text */
  179. !         end_foundcol = curwin->w_cursor.col;
  180.   
  181.           /* find start of sequence of blanks */
  182.           while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
  183. --- 5849,5862 ----
  184.               || curwin->w_cursor.lnum != Insstart.lnum
  185.               || curwin->w_cursor.col >= Insstart.col)
  186.       {
  187. !         if (curwin->w_cursor.col == startcol && c != NUL)
  188. !         cc = c;
  189. !         else
  190. !         cc = gchar_cursor();
  191.           if (WHITECHAR(cc))
  192.           {
  193.           /* remember position of blank just before text */
  194. !         end_col = curwin->w_cursor.col;
  195.   
  196.           /* find start of sequence of blanks */
  197.           while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
  198. ***************
  199. *** 5871,5877 ****
  200.               /* do not break after one-letter words */
  201.               if (curwin->w_cursor.col == 0)
  202.               break;    /* one-letter word at begin */
  203.               col = curwin->w_cursor.col;
  204.               dec_cursor();
  205.               cc = gchar_cursor();
  206. --- 5876,5886 ----
  207.               /* do not break after one-letter words */
  208.               if (curwin->w_cursor.col == 0)
  209.               break;    /* one-letter word at begin */
  210. ! #ifdef FEAT_COMMENTS
  211. !             /* do not break "#a b" when 'tw' is 2 */
  212. !             if (curwin->w_cursor.col <= leader_len)
  213. !             break;
  214. ! #endif
  215.               col = curwin->w_cursor.col;
  216.               dec_cursor();
  217.               cc = gchar_cursor();
  218. ***************
  219. *** 5880,5905 ****
  220.               continue;    /* one-letter, continue */
  221.               curwin->w_cursor.col = col;
  222.           }
  223. ! #ifdef FEAT_MBYTE
  224. !         if (has_mbyte)
  225. !             foundcol = curwin->w_cursor.col
  226. !                      + (*mb_ptr2len)(ml_get_cursor());
  227. !         else
  228. ! #endif
  229. !             foundcol = curwin->w_cursor.col + 1;
  230. !         if (curwin->w_cursor.col < (colnr_T)wantcol)
  231.               break;
  232.           }
  233.   #ifdef FEAT_MBYTE
  234. !         else if (cc >= 0x100 && fo_multibyte
  235. !                   && curwin->w_cursor.col <= (colnr_T)wantcol)
  236.           {
  237.           /* Break after or before a multi-byte character. */
  238.           foundcol = curwin->w_cursor.col;
  239. -         if (curwin->w_cursor.col < (colnr_T)wantcol)
  240. -             foundcol += (*mb_char2len)(cc);
  241.           end_foundcol = foundcol;
  242. !         break;
  243.           }
  244.   #endif
  245.           if (curwin->w_cursor.col == 0)
  246. --- 5889,5948 ----
  247.               continue;    /* one-letter, continue */
  248.               curwin->w_cursor.col = col;
  249.           }
  250. !         inc_cursor();
  251. !         end_foundcol = end_col + 1;
  252. !         foundcol = curwin->w_cursor.col;
  253. !         if (curwin->w_cursor.col <= (colnr_T)wantcol)
  254.               break;
  255.           }
  256.   #ifdef FEAT_MBYTE
  257. !         else if (cc >= 0x100 && fo_multibyte)
  258.           {
  259.           /* Break after or before a multi-byte character. */
  260. +         if (curwin->w_cursor.col != startcol)
  261. +         {
  262. + #ifdef FEAT_COMMENTS
  263. +             /* Don't break until after the comment leader */
  264. +             if (curwin->w_cursor.col < leader_len)
  265. +             break;
  266. + #endif
  267. +             col = curwin->w_cursor.col;
  268. +             inc_cursor();
  269. +             /* Don't change end_foundcol if already set. */
  270. +             if (foundcol != curwin->w_cursor.col)
  271. +             {
  272. +             foundcol = curwin->w_cursor.col;
  273. +             end_foundcol = foundcol;
  274. +             if (curwin->w_cursor.col <= (colnr_T)wantcol)
  275. +                 break;
  276. +             }
  277. +             curwin->w_cursor.col = col;
  278. +         }
  279. +         if (curwin->w_cursor.col == 0)
  280. +             break;
  281. +         col = curwin->w_cursor.col;
  282. +         dec_cursor();
  283. +         cc = gchar_cursor();
  284. +         if (WHITECHAR(cc))
  285. +             continue;        /* break with space */
  286. + #ifdef FEAT_COMMENTS
  287. +         /* Don't break until after the comment leader */
  288. +         if (curwin->w_cursor.col < leader_len)
  289. +             break;
  290. + #endif
  291. +         curwin->w_cursor.col = col;
  292.           foundcol = curwin->w_cursor.col;
  293.           end_foundcol = foundcol;
  294. !         if (curwin->w_cursor.col <= (colnr_T)wantcol)
  295. !             break;
  296.           }
  297.   #endif
  298.           if (curwin->w_cursor.col == 0)
  299. ***************
  300. *** 5926,5939 ****
  301.           orig_col = startcol;    /* Will start backspacing from here */
  302.       else
  303.   #endif
  304. !         replace_offset = startcol - end_foundcol - 1;
  305.   
  306.       /*
  307.        * adjust startcol for spaces that will be deleted and
  308.        * characters that will remain on top line
  309.        */
  310.       curwin->w_cursor.col = foundcol;
  311. !     while (cc = gchar_cursor(), WHITECHAR(cc))
  312.           inc_cursor();
  313.       startcol -= curwin->w_cursor.col;
  314.       if (startcol < 0)
  315. --- 5969,5983 ----
  316.           orig_col = startcol;    /* Will start backspacing from here */
  317.       else
  318.   #endif
  319. !         replace_offset = startcol - end_foundcol;
  320.   
  321.       /*
  322.        * adjust startcol for spaces that will be deleted and
  323.        * characters that will remain on top line
  324.        */
  325.       curwin->w_cursor.col = foundcol;
  326. !     while ((cc = gchar_cursor(), WHITECHAR(cc))
  327. !             && (!fo_white_par || curwin->w_cursor.col < startcol))
  328.           inc_cursor();
  329.       startcol -= curwin->w_cursor.col;
  330.       if (startcol < 0)
  331. ***************
  332. *** 8509,8515 ****
  333.       if (mode == BACKSPACE_LINE
  334.           && (curbuf->b_p_ai
  335.   #ifdef FEAT_CINDENT
  336. !                     || cindent_on()
  337.   #endif
  338.              )
  339.   #ifdef FEAT_RIGHTLEFT
  340. --- 8553,8559 ----
  341.       if (mode == BACKSPACE_LINE
  342.           && (curbuf->b_p_ai
  343.   #ifdef FEAT_CINDENT
  344. !             || cindent_on()
  345.   #endif
  346.              )
  347.   #ifdef FEAT_RIGHTLEFT
  348. *** ../vim-7.2.300/src/testdir/Makefile    2009-11-17 17:36:13.000000000 +0100
  349. --- src/testdir/Makefile    2009-11-17 15:11:26.000000000 +0100
  350. ***************
  351. *** 22,28 ****
  352.           test48.out test49.out test51.out test52.out test53.out \
  353.           test54.out test55.out test56.out test57.out test58.out \
  354.           test59.out test60.out test61.out test62.out test63.out \
  355. !         test64.out test65.out test66.out test67.out
  356.   
  357.   SCRIPTS_GUI = test16.out
  358.   
  359. --- 22,29 ----
  360.           test48.out test49.out test51.out test52.out test53.out \
  361.           test54.out test55.out test56.out test57.out test58.out \
  362.           test59.out test60.out test61.out test62.out test63.out \
  363. !         test64.out test65.out test66.out test67.out test68.out \
  364. !         test69.out
  365.   
  366.   SCRIPTS_GUI = test16.out
  367.   
  368. *** ../vim-7.2.300/src/testdir/test68.in    2009-11-17 17:39:36.000000000 +0100
  369. --- src/testdir/test68.in    2009-11-17 15:39:09.000000000 +0100
  370. ***************
  371. *** 0 ****
  372. --- 1,56 ----
  373. + Test for text formatting.
  374. + Results of test68:
  375. + STARTTEST
  376. + :so small.vim
  377. + /^{/+1
  378. + :set noai tw=2 fo=t
  379. + gRa b
  380. + ENDTEST
  381. + {
  382. +     
  383. + }
  384. + STARTTEST
  385. + /^{/+1
  386. + :set ai tw=2 fo=tw
  387. + gqgqjjllab
  388. + ENDTEST
  389. + {
  390. + a  b  
  391. + a    
  392. + }
  393. + STARTTEST
  394. + /^{/+1
  395. + :set tw=3 fo=t
  396. + gqgqo
  397. + a 
  398. + ENDTEST
  399. + {
  400. + a 
  401. + }
  402. + STARTTEST
  403. + /^{/+1
  404. + :set tw=2 fo=tcq1 comments=:#
  405. + gqgqjgqgqo
  406. + a b
  407. + #a b
  408. + ENDTEST
  409. + {
  410. + a b
  411. + #a b
  412. + }
  413. + STARTTEST
  414. + :g/^STARTTEST/.,/^ENDTEST/d
  415. + :1;/^Results/,$wq! test.out
  416. + ENDTEST
  417. *** ../vim-7.2.300/src/testdir/test68.ok    2009-11-17 17:39:36.000000000 +0100
  418. --- src/testdir/test68.ok    2009-11-17 15:11:26.000000000 +0100
  419. ***************
  420. *** 0 ****
  421. --- 1,35 ----
  422. + Results of test68:
  423. + {
  424. + a
  425. + b
  426. + }
  427. + {
  428. + a  
  429. + b  
  430. + a  
  431. + b
  432. + }
  433. + {
  434. + a
  435. + 
  436. + a
  437. + 
  438. + }
  439. + {
  440. + a b
  441. + #a b
  442. + a b
  443. + #a b
  444. + }
  445. *** ../vim-7.2.300/src/testdir/test69.in    2009-11-17 17:39:36.000000000 +0100
  446. --- src/testdir/test69.in    2009-11-17 15:11:26.000000000 +0100
  447. ***************
  448. *** 0 ****
  449. --- 1,139 ----
  450. + Test for multi-byte text formatting.
  451. + STARTTEST
  452. + :so mbyte.vim
  453. + :set encoding=utf-8
  454. + ENDTEST
  455. + Results of test69:
  456. + STARTTEST
  457. + /^{/+1
  458. + :set tw=2 fo=t
  459. + gqgqjgqgqo
  460. + ∩╝╕∩╝╣∩╝║
  461. + abc ∩╝╕∩╝╣∩╝║
  462. + ENDTEST
  463. + {
  464. + ∩╝╕∩╝╣∩╝║
  465. + abc ∩╝╕∩╝╣∩╝║
  466. + }
  467. + STARTTEST
  468. + /^{/+1
  469. + :set tw=1 fo=tm
  470. + gqgqjgqgqjgqgqjgqgqjgqgqo
  471. + ∩╝╕
  472. + ∩╝╕a
  473. + ∩╝╕ a
  474. + ∩╝╕∩╝╣
  475. + ∩╝╕ ∩╝╣
  476. + ENDTEST
  477. + {
  478. + ∩╝╕
  479. + ∩╝╕a
  480. + ∩╝╕ a
  481. + ∩╝╕∩╝╣
  482. + ∩╝╕ ∩╝╣
  483. + }
  484. + STARTTEST
  485. + /^{/+1
  486. + :set tw=2 fo=tm
  487. + gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
  488. + ∩╝╕
  489. + ∩╝╕a
  490. + ∩╝╕ a
  491. + ∩╝╕∩╝╣
  492. + ∩╝╕ ∩╝╣
  493. + a∩╝╕
  494. + ab∩╝╕
  495. + abc∩╝╕
  496. + ab∩╝╕ c
  497. + ab∩╝╕∩╝╣
  498. + ENDTEST
  499. + {
  500. + ∩╝╕
  501. + ∩╝╕a
  502. + ∩╝╕ a
  503. + ∩╝╕∩╝╣
  504. + ∩╝╕ ∩╝╣
  505. + a∩╝╕
  506. + ab∩╝╕
  507. + abc∩╝╕
  508. + ab∩╝╕ c
  509. + ab∩╝╕∩╝╣
  510. + }
  511. + STARTTEST
  512. + /^{/+1
  513. + :set ai tw=2 fo=tm
  514. + gqgqjgqgqo
  515. + ∩╝╕
  516. + ∩╝╕a
  517. + ENDTEST
  518. + {
  519. +   ∩╝╕
  520. +   ∩╝╕a
  521. + }
  522. + STARTTEST
  523. + /^{/+1
  524. + :set noai tw=2 fo=tm
  525. + gqgqjgqgqo
  526. +   ∩╝╕
  527. +   ∩╝╕a
  528. + ENDTEST
  529. + {
  530. +   ∩╝╕
  531. +   ∩╝╕a
  532. + }
  533. + STARTTEST
  534. + /^{/+1
  535. + :set tw=2 fo=cqm comments=n:∩╝╕
  536. + gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
  537. + ∩╝╕
  538. + ∩╝╕a
  539. + ∩╝╕a∩╝╣
  540. + ∩╝╕∩╝╣
  541. + ∩╝╕∩╝╣∩╝║
  542. + ∩╝╕ ∩╝╣
  543. + ∩╝╕ ∩╝╣∩╝║
  544. + ∩╝╕∩╝╕
  545. + ∩╝╕∩╝╕a
  546. + ∩╝╕∩╝╕∩╝╣
  547. + ENDTEST
  548. + {
  549. + ∩╝╕
  550. + ∩╝╕a
  551. + ∩╝╕a∩╝╣
  552. + ∩╝╕∩╝╣
  553. + ∩╝╕∩╝╣∩╝║
  554. + ∩╝╕ ∩╝╣
  555. + ∩╝╕ ∩╝╣∩╝║
  556. + ∩╝╕∩╝╕
  557. + ∩╝╕∩╝╕a
  558. + ∩╝╕∩╝╕∩╝╣
  559. + }
  560. + STARTTEST
  561. + /^{/+1
  562. + :set tw=2 fo=tm
  563. + R∩╝╕a
  564. + ENDTEST
  565. + {
  566. + }
  567. + STARTTEST
  568. + :g/^STARTTEST/.,/^ENDTEST/d
  569. + :1;/^Results/,$wq! test.out
  570. + ENDTEST
  571. *** ../vim-7.2.300/src/testdir/test69.ok    2009-11-17 17:39:36.000000000 +0100
  572. --- src/testdir/test69.ok    2009-11-17 15:11:26.000000000 +0100
  573. ***************
  574. *** 0 ****
  575. --- 1,142 ----
  576. + Results of test69:
  577. + {
  578. + ∩╝╕∩╝╣∩╝║
  579. + abc
  580. + ∩╝╕∩╝╣∩╝║
  581. + ∩╝╕∩╝╣∩╝║
  582. + abc
  583. + ∩╝╕∩╝╣∩╝║
  584. + }
  585. + {
  586. + ∩╝╕
  587. + ∩╝╕
  588. + a
  589. + ∩╝╕
  590. + a
  591. + ∩╝╕
  592. + ∩╝╣
  593. + ∩╝╕
  594. + ∩╝╣
  595. + ∩╝╕
  596. + ∩╝╕
  597. + a
  598. + ∩╝╕
  599. + a
  600. + ∩╝╕
  601. + ∩╝╣
  602. + ∩╝╕
  603. + ∩╝╣
  604. + }
  605. + {
  606. + ∩╝╕
  607. + ∩╝╕
  608. + a
  609. + ∩╝╕
  610. + a
  611. + ∩╝╕
  612. + ∩╝╣
  613. + ∩╝╕
  614. + ∩╝╣
  615. + a
  616. + ∩╝╕
  617. + ab
  618. + ∩╝╕
  619. + abc
  620. + ∩╝╕
  621. + ab
  622. + ∩╝╕
  623. + c
  624. + ab
  625. + ∩╝╕
  626. + ∩╝╣
  627. + ∩╝╕
  628. + ∩╝╕
  629. + a
  630. + ∩╝╕
  631. + a
  632. + ∩╝╕
  633. + ∩╝╣
  634. + ∩╝╕
  635. + ∩╝╣
  636. + a
  637. + ∩╝╕
  638. + ab
  639. + ∩╝╕
  640. + abc
  641. + ∩╝╕
  642. + ab
  643. + ∩╝╕
  644. + c
  645. + ab
  646. + ∩╝╕
  647. + ∩╝╣
  648. + }
  649. + {
  650. +   ∩╝╕
  651. +   ∩╝╕
  652. +   a
  653. +   ∩╝╕
  654. +   ∩╝╕
  655. +   a
  656. + }
  657. + {
  658. +   ∩╝╕
  659. +   ∩╝╕
  660. + a
  661. +   ∩╝╕
  662. +   ∩╝╕
  663. + a
  664. + }
  665. + {
  666. + ∩╝╕
  667. + ∩╝╕a
  668. + ∩╝╕a
  669. + ∩╝╕∩╝╣
  670. + ∩╝╕∩╝╣
  671. + ∩╝╕∩╝╣
  672. + ∩╝╕∩╝║
  673. + ∩╝╕ ∩╝╣
  674. + ∩╝╕ ∩╝╣
  675. + ∩╝╕ ∩╝║
  676. + ∩╝╕∩╝╕
  677. + ∩╝╕∩╝╕a
  678. + ∩╝╕∩╝╕∩╝╣
  679. + ∩╝╕
  680. + ∩╝╕a
  681. + ∩╝╕a
  682. + ∩╝╕∩╝╣
  683. + ∩╝╕∩╝╣
  684. + ∩╝╕∩╝╣
  685. + ∩╝╕∩╝║
  686. + ∩╝╕ ∩╝╣
  687. + ∩╝╕ ∩╝╣
  688. + ∩╝╕ ∩╝║
  689. + ∩╝╕∩╝╕
  690. + ∩╝╕∩╝╕a
  691. + ∩╝╕∩╝╕∩╝╣
  692. + }
  693. + {
  694. + ∩╝╕
  695. + a
  696. + }
  697. *** ../vim-7.2.300/src/version.c    2009-11-17 17:37:34.000000000 +0100
  698. --- src/version.c    2009-11-17 17:26:35.000000000 +0100
  699. ***************
  700. *** 683,684 ****
  701. --- 683,686 ----
  702.   {   /* Add new patch number below this line */
  703. + /**/
  704. +     301,
  705.   /**/
  706.