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 / old / 5.5.067 < prev    next >
Encoding:
Internet Message Format  |  1999-12-08  |  4.6 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 5.5.067
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. ------------
  6.  
  7. Patch 5.5.067
  8. Problem:    With 'hlsearch' set, the pattern "\>" doesn't highlight the first
  9.         match in a line. (Benji Fisher)
  10. Solution:   Fix highlighting an empty match.  Also highlight the first
  11.         character in an empty line for "$".
  12. Files:        src/screen.c
  13.  
  14.  
  15. *** ../vim-5.5.66/src/screen.c    Wed Dec  1 20:19:07 1999
  16. --- src/screen.c    Thu Dec  9 13:04:48 1999
  17. ***************
  18. *** 1323,1333 ****
  19.       reg_ic = search_hl_ic;
  20.       for (;;)
  21.       {
  22. !         if (*matchp != NUL && vim_regexec(search_hl_prog, matchp, TRUE))
  23.           {
  24.           search_hl_start = search_hl_prog->startp[0];
  25.           search_hl_end = search_hl_prog->endp[0];
  26. !         if (search_hl_end <= ptr)    /* match before leftcol */
  27.           {
  28.               /* For an empty match and with Vi-compatible searching,
  29.                * continue searching on the next character. */
  30. --- 1323,1336 ----
  31.       reg_ic = search_hl_ic;
  32.       for (;;)
  33.       {
  34. !         if (vim_regexec(search_hl_prog, matchp, matchp == line))
  35.           {
  36.           search_hl_start = search_hl_prog->startp[0];
  37.           search_hl_end = search_hl_prog->endp[0];
  38. !         /* If match ends before leftcol: Find next match. */
  39. !         if (search_hl_start < ptr
  40. !             && search_hl_end <= ptr
  41. !             && *search_hl_end != NUL)
  42.           {
  43.               /* For an empty match and with Vi-compatible searching,
  44.                * continue searching on the next character. */
  45. ***************
  46. *** 1338,1343 ****
  47. --- 1341,1354 ----
  48.               matchp = search_hl_end;
  49.               continue;
  50.           }
  51. +         /* Highlight one character for an empty match. */
  52. +         if (search_hl_start == search_hl_end)
  53. +         {
  54. +             if (*search_hl_start == NUL && search_hl_start > line)
  55. +             --search_hl_start;
  56. +             else
  57. +             ++search_hl_end;
  58. +         }
  59.           if (search_hl_start < ptr)  /* match at leftcol */
  60.               search_attr = search_hl_attr;
  61.           }
  62. ***************
  63. *** 1457,1463 ****
  64.                    * match starts at the current position */
  65.                   if (search_hl_start != search_hl_end)
  66.                   continue;
  67. !                 ++search_hl_end; /* try again after empty match */
  68.               }
  69.               }
  70.               break;
  71. --- 1468,1481 ----
  72.                    * match starts at the current position */
  73.                   if (search_hl_start != search_hl_end)
  74.                   continue;
  75. !                 /* highlight empty match, try again after it */
  76. !                 ++search_hl_end;
  77. !                 if (*search_hl_start == NUL
  78. !                             && search_hl_start > line)
  79. !                 {
  80. !                 --search_hl_start;
  81. !                 continue;
  82. !                 }
  83.               }
  84.               }
  85.               break;
  86. ***************
  87. *** 1635,1674 ****
  88.        */
  89.       if (c == NUL)
  90.       {
  91. !         if (area_attr)
  92.           {
  93. -         /* invert at least one char, used for Visual and empty line or
  94. -          * highlight match at end of line. If it's beyond the last
  95. -          * char on the screen, just overwrite that one (tricky!) */
  96. -         if (vcol == fromcol)
  97. -         {
  98.   #ifdef RIGHTLEFT
  99. !             if (wp->w_p_rl)
  100.               {
  101. !             if (col < 0)
  102. !             {
  103. !                 ++screenp;
  104. !                 ++col;
  105. !             }
  106.               }
  107. !             else
  108.   #endif
  109.               {
  110. !             if (col >= Columns)
  111. !             {
  112. !                 --screenp;
  113. !                 --col;
  114. !             }
  115.               }
  116. !             *screenp = ' ';
  117. !             *(screenp + Columns) = char_attr;
  118.   #ifdef RIGHTLEFT
  119. !             if (wp->w_p_rl)
  120. !             --col;
  121. !             else
  122.   #endif
  123. !             ++col;
  124. !         }
  125.           }
  126.   
  127.           SCREEN_LINE(screen_row, col, TRUE, wp->w_p_rl);
  128. --- 1653,1694 ----
  129.        */
  130.       if (c == NUL)
  131.       {
  132. !         /* invert at least one char, used for Visual and empty line or
  133. !          * highlight match at end of line. If it's beyond the last
  134. !          * char on the screen, just overwrite that one (tricky!) */
  135. !         if ((area_attr && vcol == fromcol)
  136. ! #ifdef EXTRA_SEARCH
  137. !             /* highlight 'hlsearch' match in empty line */
  138. !             || (search_attr && *line == NUL && wp->w_leftcol == 0)
  139. ! #endif
  140. !            )
  141.           {
  142.   #ifdef RIGHTLEFT
  143. !         if (wp->w_p_rl)
  144. !         {
  145. !             if (col < 0)
  146.               {
  147. !             ++screenp;
  148. !             ++col;
  149.               }
  150. !         }
  151. !         else
  152.   #endif
  153. +         {
  154. +             if (col >= Columns)
  155.               {
  156. !             --screenp;
  157. !             --col;
  158.               }
  159. !         }
  160. !         *screenp = ' ';
  161. !         *(screenp + Columns) = char_attr;
  162.   #ifdef RIGHTLEFT
  163. !         if (wp->w_p_rl)
  164. !             --col;
  165. !         else
  166.   #endif
  167. !             ++col;
  168.           }
  169.   
  170.           SCREEN_LINE(screen_row, col, TRUE, wp->w_p_rl);
  171. *** ../vim-5.5.66/src/version.c    Wed Dec  8 16:23:15 1999
  172. --- src/version.c    Thu Dec  9 13:07:10 1999
  173. ***************
  174. *** 420,420 ****
  175. --- 420,421 ----
  176.   {   /* Add new patch number below this line */
  177. +     67,
  178.  
  179. -- 
  180. FATHER:    Who are you?
  181. PRINCE:    I'm ... your son ...
  182. FATHER:    Not you.
  183. LAUNCELOT: I'm ... er ... Sir Launcelot, sir.
  184.                  "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
  185.  
  186. --/-/---- Bram Moolenaar ---- Bram@moolenaar.net ---- Bram@vim.org ---\-\--
  187.   \ \    www.vim.org/iccf      www.moolenaar.net       www.vim.org    / /
  188.