summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2014-08-16 16:28:36 +0200
committerBram Moolenaar <bram@vim.org>2014-08-16 16:28:36 +0200
commit400df35857e8c72fc0c99325dff077cf2e56a347 (patch)
tree7f09aa88f914f9a1af10ff141bc353da9dc8d2fe
parent6a820766e0d6fa918d3fbd91668492a80727ecd0 (diff)
downloadvim-400df35857e8c72fc0c99325dff077cf2e56a347.tar.gz
updated for version 7.4.405v7.4.405v7-4-405
Problem: Screen updating is slow when using matches. Solution: Do not use the ">=" as in patch 7.4.362, check the lnum.
-rw-r--r--src/screen.c2
-rw-r--r--src/testdir/test63.in23
-rw-r--r--src/testdir/test63.ok2
-rw-r--r--src/version.c2
4 files changed, 27 insertions, 2 deletions
diff --git a/src/screen.c b/src/screen.c
index 3ab53d9e..4c134f0e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3858,7 +3858,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
{
shl->attr_cur = shl->attr;
}
- else if (v >= (long)shl->endcol)
+ else if (v >= (long)shl->endcol && shl->lnum == lnum)
{
shl->attr_cur = 0;
next_search_hl(wp, shl, lnum, (colnr_T)v, cur);
diff --git a/src/testdir/test63.in b/src/testdir/test63.in
index 5ec315ad..a161d674 100644
--- a/src/testdir/test63.in
+++ b/src/testdir/test63.in
@@ -3,6 +3,7 @@ Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",
STARTTEST
:so small.vim
+:set encoding=utf8
:" --- Check that "matcharg()" returns the correct group and pattern if a match
:" --- is defined.
:let @r = "*** Test 1: "
@@ -164,7 +165,27 @@ STARTTEST
:if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1
: let @r .= "OK\n"
:else
-: let @r .= "FAILED\n"
+: let @r .= "FAILED: " . v5 . "/" . v6 . "/" . v8 . "/" . v10 . "/" . v11 . "\n"
+:endif
+:call clearmatches()
+:"
+:call setline(1, 'abcdΣabcdef')
+:call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]])
+:1
+:redraw!
+:let v1 = screenattr(1, 1)
+:let v4 = screenattr(1, 4)
+:let v5 = screenattr(1, 5)
+:let v6 = screenattr(1, 6)
+:let v7 = screenattr(1, 7)
+:let v8 = screenattr(1, 8)
+:let v9 = screenattr(1, 9)
+:let v10 = screenattr(1, 10)
+:let @r .= string(getmatches())."\n"
+:if v1 != v4 && v5 == v4 && v6 == v1 && v7 == v1 && v8 == v4 && v9 == v4 && v10 == v1
+: let @r .= "OK\n"
+:else
+: let @r .= "FAILED: " . v4 . "/" . v5 . "/" . v6 . "/" . v7 . "/" . v8 . "/" . v9 . "/" . v10 . "\n"
:endif
:call clearmatches()
G"rp
diff --git a/src/testdir/test63.ok b/src/testdir/test63.ok
index f804b693..5d619395 100644
--- a/src/testdir/test63.ok
+++ b/src/testdir/test63.ok
@@ -12,3 +12,5 @@ Results of test63:
*** Test 11:
[{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}]
OK
+[{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}]
+OK
diff --git a/src/version.c b/src/version.c
index 42369f1d..28a3fdb3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 405,
+/**/
404,
/**/
403,