mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.0.0033
Problem: Cannot use overlapping positions with matchaddpos(). Solution: Check end of match. (Ozaki Kiichi) Add a test (Hirohito Higashi)
This commit is contained in:
14
src/screen.c
14
src/screen.c
@@ -7786,21 +7786,23 @@ next_search_hl_pos(
|
|||||||
shl->lnum = 0;
|
shl->lnum = 0;
|
||||||
for (i = posmatch->cur; i < MAXPOSMATCH; i++)
|
for (i = posmatch->cur; i < MAXPOSMATCH; i++)
|
||||||
{
|
{
|
||||||
if (posmatch->pos[i].lnum == 0)
|
llpos_T *pos = &posmatch->pos[i];
|
||||||
|
|
||||||
|
if (pos->lnum == 0)
|
||||||
break;
|
break;
|
||||||
if (posmatch->pos[i].col < mincol)
|
if (pos->col + pos->len - 1 <= mincol)
|
||||||
continue;
|
continue;
|
||||||
if (posmatch->pos[i].lnum == lnum)
|
if (pos->lnum == lnum)
|
||||||
{
|
{
|
||||||
if (shl->lnum == lnum)
|
if (shl->lnum == lnum)
|
||||||
{
|
{
|
||||||
/* partially sort positions by column numbers
|
/* partially sort positions by column numbers
|
||||||
* on the same line */
|
* on the same line */
|
||||||
if (posmatch->pos[i].col < posmatch->pos[bot].col)
|
if (pos->col < posmatch->pos[bot].col)
|
||||||
{
|
{
|
||||||
llpos_T tmp = posmatch->pos[i];
|
llpos_T tmp = *pos;
|
||||||
|
|
||||||
posmatch->pos[i] = posmatch->pos[bot];
|
*pos = posmatch->pos[bot];
|
||||||
posmatch->pos[bot] = tmp;
|
posmatch->pos[bot] = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -181,6 +181,16 @@ func Test_matchaddpos()
|
|||||||
redraw!
|
redraw!
|
||||||
call assert_equal(screenattr(2,2), screenattr(1,6))
|
call assert_equal(screenattr(2,2), screenattr(1,6))
|
||||||
|
|
||||||
|
" Check overlapping pos
|
||||||
|
call clearmatches()
|
||||||
|
call setline(1, ['1234567890', 'NH'])
|
||||||
|
call matchaddpos('Error', [[1,1,5], [1,3,5], [2,2]])
|
||||||
|
redraw!
|
||||||
|
call assert_notequal(screenattr(2,2), 0)
|
||||||
|
call assert_equal(screenattr(2,2), screenattr(1,5))
|
||||||
|
call assert_equal(screenattr(2,2), screenattr(1,7))
|
||||||
|
call assert_notequal(screenattr(2,2), screenattr(1,8))
|
||||||
|
|
||||||
nohl
|
nohl
|
||||||
syntax off
|
syntax off
|
||||||
set hlsearch&
|
set hlsearch&
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
33,
|
||||||
/**/
|
/**/
|
||||||
32,
|
32,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user