aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-06-21 18:28:12 +0800
committerGitHub <noreply@github.com>2023-06-21 18:28:12 +0800
commitded01a819ab0e10104aa29ab67cf67e4efd75e04 (patch)
tree4a0df7155773b0264f9fb4c2478a20c09ebea633
parent8d4a53fe6e20652946948170f2436ec520f9bdfe (diff)
downloadrneovim-ded01a819ab0e10104aa29ab67cf67e4efd75e04.tar.gz
rneovim-ded01a819ab0e10104aa29ab67cf67e4efd75e04.tar.bz2
rneovim-ded01a819ab0e10104aa29ab67cf67e4efd75e04.zip
fix(folds): don't show search or match highlighting on fold (#24084)
-rw-r--r--src/nvim/drawline.c4
-rw-r--r--test/functional/ui/fold_spec.lua80
2 files changed, 82 insertions, 2 deletions
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c
index 7da8bfae14..b28afb9934 100644
--- a/src/nvim/drawline.c
+++ b/src/nvim/drawline.c
@@ -1789,7 +1789,7 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool number_onl
wlv.reset_extra_attr = false;
}
- if (has_decor && v >= 0 && wlv.n_extra == 0) {
+ if (has_decor && wlv.n_extra == 0) {
bool selected = (area_active || (area_highlighting && noinvcur
&& wlv.vcol == wp->w_virtcol));
extmark_attr = decor_redraw_col(wp, (colnr_T)v, wlv.off, selected, &decor_state);
@@ -1812,7 +1812,7 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool number_onl
}
}
- if (wlv.n_extra == 0) {
+ if (!has_fold && wlv.n_extra == 0) {
// Check for start/end of 'hlsearch' and other matches.
// After end, check for start/end of next match.
// When another match, have to check for start again.
diff --git a/test/functional/ui/fold_spec.lua b/test/functional/ui/fold_spec.lua
index 68a7c89b32..71b9e49d2f 100644
--- a/test/functional/ui/fold_spec.lua
+++ b/test/functional/ui/fold_spec.lua
@@ -2453,6 +2453,86 @@ describe("folded lines", function()
]])
end
end)
+
+ it('do not show search or match highlight #24084', function()
+ insert([[
+ line 1
+ line 2
+ line 3
+ line 4]])
+ command('2,3fold')
+ feed('/line')
+ if multigrid then
+ screen:expect([[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {2:line} 1 |
+ {5:+-- 2 lines: line 2·························}|
+ {6:line} 4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ## grid 3
+ /line^ |
+ ]])
+ else
+ screen:expect([[
+ {2:line} 1 |
+ {5:+-- 2 lines: line 2·························}|
+ {6:line} 4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ /line^ |
+ ]])
+ end
+ feed('<Esc>')
+ funcs.matchadd('Search', 'line')
+ if multigrid then
+ screen:expect([[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {6:line} 1 |
+ {5:+-- 2 lines: line 2·························}|
+ {6:line} ^4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ## grid 3
+ |
+ ]])
+ else
+ screen:expect([[
+ {6:line} 1 |
+ {5:+-- 2 lines: line 2·························}|
+ {6:line} ^4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]])
+ end
+ end)
end
describe("with ext_multigrid", function()