mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	vim-patch:8.2.4724: current instance of last search pattern not easily spotted
Problem:    Current instance of last search pattern not easily spotted.
Solution:   Add CurSearch highlighting. (closes vim/vim#10133)
a43993897a
Some code is superseded by later patches that are already ported.
Co-authored-by: LemonBoy <thatlemon@gmail.com>
			
			
This commit is contained in:
		| @@ -47,6 +47,8 @@ EDITOR | |||||||
|  |  | ||||||
| • The order in which signs are placed was changed. Higher priority signs will | • The order in which signs are placed was changed. Higher priority signs will | ||||||
|   now appear left of lower priority signs. |   now appear left of lower priority signs. | ||||||
|  | • |hl-CurSearch| now behaves the same as Vim and no longer updates on every | ||||||
|  |   cursor movement. | ||||||
|  |  | ||||||
| EVENTS | EVENTS | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4969,8 +4969,9 @@ ColorColumn	Used for the columns set with 'colorcolumn'. | |||||||
| Conceal		Placeholder characters substituted for concealed | Conceal		Placeholder characters substituted for concealed | ||||||
| 		text (see 'conceallevel'). | 		text (see 'conceallevel'). | ||||||
| 							*hl-CurSearch* | 							*hl-CurSearch* | ||||||
| CurSearch	Used for highlighting a search pattern under the cursor | CurSearch	Current match for the last search pattern (see 'hlsearch'). | ||||||
| 		(see 'hlsearch'). | 		Note: This is correct after a search, but may get outdated if | ||||||
|  | 		changes are made or the screen is redrawn. | ||||||
| 						*hl-Cursor* *hl-lCursor* | 						*hl-Cursor* *hl-lCursor* | ||||||
| Cursor		Character under the cursor. | Cursor		Character under the cursor. | ||||||
| lCursor		Character under the cursor when |language-mapping| | lCursor		Character under the cursor when |language-mapping| | ||||||
|   | |||||||
| @@ -539,8 +539,6 @@ Functions: | |||||||
| Highlight groups: | Highlight groups: | ||||||
| - |hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other | - |hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other | ||||||
|   groups |   groups | ||||||
| - |hl-CurSearch| highlights match under cursor instead of last match found |  | ||||||
|   using |n| or |N| |  | ||||||
| - |hl-CursorLine| is low-priority unless foreground color is set | - |hl-CursorLine| is low-priority unless foreground color is set | ||||||
| - |hl-VertSplit| superseded by |hl-WinSeparator| | - |hl-VertSplit| superseded by |hl-WinSeparator| | ||||||
| - Highlight groups names are allowed to contain `@` characters. | - Highlight groups names are allowed to contain `@` characters. | ||||||
|   | |||||||
| @@ -153,7 +153,6 @@ static void redraw_for_cursorline(win_T *wp) | |||||||
| /// Redraw when w_virtcol changes and | /// Redraw when w_virtcol changes and | ||||||
| /// - 'cursorcolumn' is set, or | /// - 'cursorcolumn' is set, or | ||||||
| /// - 'cursorlineopt' contains "screenline", or | /// - 'cursorlineopt' contains "screenline", or | ||||||
| /// - "CurSearch" highlight is in use, or |  | ||||||
| /// - 'concealcursor' is active, or | /// - 'concealcursor' is active, or | ||||||
| /// - Visual mode is active. | /// - Visual mode is active. | ||||||
| static void redraw_for_cursorcolumn(win_T *wp) | static void redraw_for_cursorcolumn(win_T *wp) | ||||||
| @@ -173,10 +172,8 @@ static void redraw_for_cursorcolumn(win_T *wp) | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (wp->w_p_cuc |   if (wp->w_p_cuc) { | ||||||
|       || (win_hl_attr(wp, HLF_LC) != win_hl_attr(wp, HLF_L) && using_hlsearch())) { |     // When 'cursorcolumn' is set need to redraw with UPD_SOME_VALID. | ||||||
|     // When 'cursorcolumn' is set or "CurSearch" is in use |  | ||||||
|     // need to redraw with UPD_SOME_VALID. |  | ||||||
|     redraw_later(wp, UPD_SOME_VALID); |     redraw_later(wp, UPD_SOME_VALID); | ||||||
|   } else if (wp->w_p_cul && (wp->w_p_culopt_flags & CULOPT_SCRLINE)) { |   } else if (wp->w_p_cul && (wp->w_p_culopt_flags & CULOPT_SCRLINE)) { | ||||||
|     // When 'cursorlineopt' contains "screenline" need to redraw with UPD_VALID. |     // When 'cursorlineopt' contains "screenline" need to redraw with UPD_VALID. | ||||||
|   | |||||||
| @@ -3973,6 +3973,12 @@ static void nv_next(cmdarg_T *cap) | |||||||
|     normal_search(cap, 0, NULL, 0, SEARCH_MARK | cap->arg, NULL); |     normal_search(cap, 0, NULL, 0, SEARCH_MARK | cap->arg, NULL); | ||||||
|     cap->count1 -= 1; |     cap->count1 -= 1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   // Redraw the window to refresh the highlighted matches. | ||||||
|  |   if (i > 0 && p_hls && !no_hlsearch | ||||||
|  |       && win_hl_attr(curwin, HLF_LC) != win_hl_attr(curwin, HLF_L)) { | ||||||
|  |     redraw_later(curwin, UPD_SOME_VALID); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Search for "pat" in direction "dir" ('/' or '?', 0 for repeat). | /// Search for "pat" in direction "dir" ('/' or '?', 0 for repeat). | ||||||
| @@ -3984,6 +3990,7 @@ static void nv_next(cmdarg_T *cap) | |||||||
| static int normal_search(cmdarg_T *cap, int dir, char *pat, size_t patlen, int opt, int *wrapped) | static int normal_search(cmdarg_T *cap, int dir, char *pat, size_t patlen, int opt, int *wrapped) | ||||||
| { | { | ||||||
|   searchit_arg_T sia; |   searchit_arg_T sia; | ||||||
|  |   pos_T const prev_cursor = curwin->w_cursor; | ||||||
|  |  | ||||||
|   cap->oap->motion_type = kMTCharWise; |   cap->oap->motion_type = kMTCharWise; | ||||||
|   cap->oap->inclusive = false; |   cap->oap->inclusive = false; | ||||||
| @@ -4007,6 +4014,11 @@ static int normal_search(cmdarg_T *cap, int dir, char *pat, size_t patlen, int o | |||||||
|       foldOpenCursor(); |       foldOpenCursor(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   // Redraw the window to refresh the highlighted matches. | ||||||
|  |   if (!equalpos(curwin->w_cursor, prev_cursor) && p_hls && !no_hlsearch | ||||||
|  |       && win_hl_attr(curwin, HLF_LC) != win_hl_attr(curwin, HLF_L)) { | ||||||
|  |     redraw_later(curwin, UPD_SOME_VALID); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   // "/$" will put the cursor after the end of the line, may need to |   // "/$" will put the cursor after the end of the line, may need to | ||||||
|   // correct that here |   // correct that here | ||||||
|   | |||||||
| @@ -4322,9 +4322,3 @@ bool search_was_last_used(void) | |||||||
| { | { | ||||||
|   return last_idx == 0; |   return last_idx == 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| /// @return  true if 'hlsearch' highlight is currently in use. |  | ||||||
| bool using_hlsearch(void) |  | ||||||
| { |  | ||||||
|   return spats[last_idx].pat != NULL && p_hls && !no_hlsearch; |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq