aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJurica Bradaric <jbradaric@gmail.com>2016-03-03 22:27:30 +0100
committerJurica Bradaric <jbradaric@gmail.com>2016-03-03 22:34:26 +0100
commit75fbc23ead01493f4428a207cc9c291f44fee0bf (patch)
tree036857c2910adcd31c6ff8fe33e86d38600847cc /src
parent32238018e4d7fa617d291c916448f041da8aea35 (diff)
downloadrneovim-75fbc23ead01493f4428a207cc9c291f44fee0bf.tar.gz
rneovim-75fbc23ead01493f4428a207cc9c291f44fee0bf.tar.bz2
rneovim-75fbc23ead01493f4428a207cc9c291f44fee0bf.zip
vim-patch:7.4.1141
Problem: Using searchpair() with a skip expression that uses syntax highlighting sometimes doesn't work. (David Fishburn) Solution: Reset next_match_idx. (Christian Brabandt) https://github.com/vim/vim/commit/6773a348da0dcf45df3c6c6649880655ec0d2042
Diffstat (limited to 'src')
-rw-r--r--src/nvim/syntax.c26
-rw-r--r--src/nvim/version.c2
2 files changed, 16 insertions, 12 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index 478fa973a1..04e28cf5ca 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -5533,25 +5533,29 @@ char_u *get_syntax_name(expand_T *xp, int idx)
}
-/*
- * Function called for expression evaluation: get syntax ID at file position.
- */
-int
-syn_get_id (
+// Function called for expression evaluation: get syntax ID at file position.
+int syn_get_id(
win_T *wp,
long lnum,
colnr_T col,
- int trans, /* remove transparency */
- bool *spellp, /* return: can do spell checking */
- int keep_state /* keep state of char at "col" */
+ int trans, // remove transparency
+ bool *spellp, // return: can do spell checking
+ int keep_state // keep state of char at "col"
)
{
- /* When the position is not after the current position and in the same
- * line of the same buffer, need to restart parsing. */
+ // When the position is not after the current position and in the same
+ // line of the same buffer, need to restart parsing.
if (wp->w_buffer != syn_buf
|| lnum != current_lnum
- || col < current_col)
+ || col < current_col) {
syntax_start(wp, lnum);
+ } else if (wp->w_buffer == syn_buf
+ && lnum == current_lnum
+ && col > current_col) {
+ // next_match may not be correct when moving around, e.g. with the
+ // "skip" expression in searchpair()
+ next_match_idx = -1;
+ }
(void)get_syntax_attr(col, spellp, keep_state);
diff --git a/src/nvim/version.c b/src/nvim/version.c
index bc10187aa3..0b4db941e8 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -149,7 +149,7 @@ static int included_patches[] = {
// 1144 NA
// 1143,
// 1142,
- // 1141,
+ 1141,
// 1140,
// 1139 NA
// 1138 NA