From b3414595c713ca161f082776f89417faddec7d2d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 17 Jun 2014 17:48:32 +0200 Subject: 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) --- src/structs.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/structs.h') diff --git a/src/structs.h b/src/structs.h index 6f953002d..c3d55cb30 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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 */ }; -- cgit v1.2.1