0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

updated for version 7.4.330

Problem:    Using a regexp pattern to highlight a specific position can be
            slow.
Solution:   Add matchaddpos() to highlight specific positions efficiently.
            (Alexey Radkov)
This commit is contained in:
Bram Moolenaar
2014-06-17 17:48:32 +02:00
parent ec1561cac5
commit b3414595c7
12 changed files with 465 additions and 88 deletions

View File

@@ -1927,6 +1927,32 @@ typedef struct
#endif
} match_T;
/* number of positions supported by matchaddpos() */
#define MAXPOSMATCH 8
/*
* Same as lpos_T, but with additional field len.
*/
typedef struct
{
linenr_T lnum; /* line number */
colnr_T col; /* column number */
int len; /* length: 0 - to the end of line */
} llpos_T;
/*
* posmatch_T provides an array for storing match items for matchaddpos()
* function.
*/
typedef struct posmatch posmatch_T;
struct posmatch
{
llpos_T pos[MAXPOSMATCH]; /* array of positions */
int cur; /* internal position counter */
linenr_T toplnum; /* top buffer line */
linenr_T botlnum; /* bottom buffer line */
};
/*
* matchitem_T provides a linked list for storing match items for ":match" and
* the match functions.
@@ -1940,6 +1966,7 @@ struct matchitem
char_u *pattern; /* pattern to highlight */
int hlg_id; /* highlight group ID */
regmmatch_T match; /* regexp program for pattern */
posmatch_T pos; /* position matches */
match_T hl; /* struct for doing the actual highlighting */
};