summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-11-08 04:30:20 +0100
committerBram Moolenaar <Bram@vim.org>2013-11-08 04:30:20 +0100
commit8050efa07d7a66e8e2e88253d079a106a7f2601a (patch)
tree237a229f5815f2a54523b6122691b52dd2d0cadb
parente5878f4be9f0cb6719220fa17f113fa24b1f3039 (diff)
downloadvim-git-7.4.079.tar.gz
updated for version 7.4.079v7.4.079
Problem: A script cannot detect whether 'hlsearch' highlighting is actually displayed. Solution: Add the "v:hlsearch" variable. (ZyX)
-rw-r--r--src/eval.c9
-rw-r--r--src/ex_docmd.c2
-rw-r--r--src/option.c2
-rw-r--r--src/screen.c2
-rw-r--r--src/search.c10
-rw-r--r--src/tag.c4
-rw-r--r--src/testdir/Make_amiga.mak3
-rw-r--r--src/testdir/Make_dos.mak2
-rw-r--r--src/testdir/Make_ming.mak2
-rw-r--r--src/testdir/Make_os2.mak2
-rw-r--r--src/testdir/Make_vms.mms4
-rw-r--r--src/testdir/Makefile2
-rw-r--r--src/testdir/test101.in45
-rw-r--r--src/testdir/test101.ok11
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h13
16 files changed, 97 insertions, 18 deletions
diff --git a/src/eval.c b/src/eval.c
index 14ba4d8b2..9fbef244c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -356,6 +356,7 @@ static struct vimvar
{VV_NAME("mouse_col", VAR_NUMBER), 0},
{VV_NAME("operator", VAR_STRING), VV_RO},
{VV_NAME("searchforward", VAR_NUMBER), 0},
+ {VV_NAME("hlsearch", VAR_NUMBER), 0},
{VV_NAME("oldfiles", VAR_LIST), 0},
{VV_NAME("windowid", VAR_NUMBER), VV_RO},
};
@@ -871,6 +872,7 @@ eval_init()
hash_add(&compat_hashtab, p->vv_di.di_key);
}
set_vim_var_nr(VV_SEARCHFORWARD, 1L);
+ set_vim_var_nr(VV_HLSEARCH, 1L);
set_reg_var(0); /* default for v:register is not 0 but '"' */
#ifdef EBCDIC
@@ -20613,6 +20615,13 @@ set_var(name, tv, copy)
v->di_tv.vval.v_number = get_tv_number(tv);
if (STRCMP(varname, "searchforward") == 0)
set_search_direction(v->di_tv.vval.v_number ? '/' : '?');
+#ifdef FEAT_SEARCH_EXTRA
+ else if (STRCMP(varname, "hlsearch") == 0)
+ {
+ no_hlsearch = !v->di_tv.vval.v_number;
+ redraw_all_later(SOME_VALID);
+ }
+#endif
}
return;
}
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 24f80fbfa..5d207ea80 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11389,7 +11389,7 @@ ex_set(eap)
ex_nohlsearch(eap)
exarg_T *eap UNUSED;
{
- no_hlsearch = TRUE;
+ SET_NO_HLSEARCH(TRUE);
redraw_all_later(SOME_VALID);
}
diff --git a/src/option.c b/src/option.c
index 2b94d8525..589e13444 100644
--- a/src/option.c
+++ b/src/option.c
@@ -7811,7 +7811,7 @@ set_bool_option(opt_idx, varp, value, opt_flags)
/* when 'hlsearch' is set or reset: reset no_hlsearch */
else if ((int *)varp == &p_hls)
{
- no_hlsearch = FALSE;
+ SET_NO_HLSEARCH(FALSE);
}
#endif
diff --git a/src/screen.c b/src/screen.c
index a72ecaf20..f738e2bb6 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -7447,7 +7447,7 @@ next_search_hl(win, shl, lnum, mincol)
{
/* don't free regprog in the match list, it's a copy */
vim_regfree(shl->rm.regprog);
- no_hlsearch = TRUE;
+ SET_NO_HLSEARCH(TRUE);
}
shl->rm.regprog = NULL;
shl->lnum = 0;
diff --git a/src/search.c b/src/search.c
index d517c6052..2fb7624c4 100644
--- a/src/search.c
+++ b/src/search.c
@@ -289,7 +289,7 @@ save_re_pat(idx, pat, magic)
/* If 'hlsearch' set and search pat changed: need redraw. */
if (p_hls)
redraw_all_later(SOME_VALID);
- no_hlsearch = FALSE;
+ SET_NO_HLSEARCH(FALSE);
#endif
}
}
@@ -333,7 +333,7 @@ restore_search_patterns()
spats[1] = saved_spats[1];
last_idx = saved_last_idx;
# ifdef FEAT_SEARCH_EXTRA
- no_hlsearch = saved_no_hlsearch;
+ SET_NO_HLSEARCH(saved_no_hlsearch);
# endif
}
}
@@ -1148,7 +1148,7 @@ do_search(oap, dirc, pat, count, options, tm)
if (no_hlsearch && !(options & SEARCH_KEEP))
{
redraw_all_later(SOME_VALID);
- no_hlsearch = FALSE;
+ SET_NO_HLSEARCH(FALSE);
}
#endif
@@ -5561,7 +5561,9 @@ read_viminfo_search_pattern(virp, force)
spats[idx].off.off = off;
#ifdef FEAT_SEARCH_EXTRA
if (setlast)
- no_hlsearch = !hlsearch_on;
+ {
+ SET_NO_HLSEARCH(!hlsearch_on);
+ }
#endif
}
}
diff --git a/src/tag.c b/src/tag.c
index 55ace15bf..e7ea52a29 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -3330,7 +3330,9 @@ jumpto_tag(lbuf, forceit, keep_help)
#ifdef FEAT_SEARCH_EXTRA
/* restore no_hlsearch when keeping the old search pattern */
if (search_options)
- no_hlsearch = save_no_hlsearch;
+ {
+ SET_NO_HLSEARCH(save_no_hlsearch);
+ }
#endif
/* Return OK if jumped to another file (at least we found the file!). */
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index 81633e7ca..8842131b9 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -34,7 +34,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test81.out test82.out test83.out test84.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
test94.out test95.out test96.out test97.out test98.out \
- test99.out test100.out
+ test99.out test100.out test101.out
.SUFFIXES: .in .out
@@ -151,3 +151,4 @@ test97.out: test97.in
test98.out: test98.in
test99.out: test99.in
test100.out: test100.in
+test101.out: test101.in
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index f89d99be7..38208e748 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -33,7 +33,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
test94.out test95.out test96.out test98.out test99.out \
- test100.out
+ test100.out test101.out
SCRIPTS32 = test50.out test70.out
diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak
index eb0c469df..9ec1f06e6 100644
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -53,7 +53,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
test94.out test95.out test96.out test98.out test99.out \
- test100out
+ test100out test101.out
SCRIPTS32 = test50.out test70.out
diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak
index acb7bd76b..823a706fa 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -35,7 +35,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test81.out test82.out test83.out test84.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
test94.out test95.out test96.out test98.out test99.out \
- test100.out
+ test100.out test101.out
.SUFFIXES: .in .out
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index 816123d6f..2626b5bb9 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -4,7 +4,7 @@
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
-# Last change: 2013 Nov 07
+# Last change: 2013 Nov 08
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
@@ -79,7 +79,7 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
test82.out test83.out test84.out test88.out test89.out \
test90.out test91.out test92.out test93.out test94.out \
test95.out test96.out test97.out test98.out test99.out \
- test100.out
+ test100.out test101.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index 3620cee17..aa3777c92 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -30,7 +30,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
test94.out test95.out test96.out test97.out test98.out \
- test99.out test100.out
+ test99.out test100.out test101.out
SCRIPTS_GUI = test16.out
diff --git a/src/testdir/test101.in b/src/testdir/test101.in
new file mode 100644
index 000000000..04c934f2c
--- /dev/null
+++ b/src/testdir/test101.in
@@ -0,0 +1,45 @@
+Test for v:hlsearch vim: set ft=vim :
+
+STARTTEST
+:" Last abc: Q
+:so small.vim
+:new
+:call setline(1, repeat(['aaa'], 10))
+:set hlsearch nolazyredraw
+:let r=[]
+:command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])
+/aaa
+:AddR
+:nohlsearch
+:AddR
+:let v:hlsearch=1
+:AddR
+:let v:hlsearch=0
+:AddR
+:set hlsearch
+:AddR
+:let v:hlsearch=0
+:AddR
+n:AddR
+:let v:hlsearch=0
+:AddR
+/
+:AddR
+:let r1=r[0][0]
+:" I guess it is not guaranteed that screenattr outputs always the same character
+:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')
+:try
+: let v:hlsearch=[]
+:catch
+: call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
+:endtry
+:bwipeout!
+:$put=r
+:call garbagecollect(1)
+:"
+:/^start:/,$wq! test.out
+:" vim: et ts=4 isk-=\:
+:call getchar()
+ENDTEST
+
+start:
diff --git a/src/testdir/test101.ok b/src/testdir/test101.ok
new file mode 100644
index 000000000..3ed7436cf
--- /dev/null
+++ b/src/testdir/test101.ok
@@ -0,0 +1,11 @@
+start:
+1:highlighted
+0:not highlighted
+1:highlighted
+0:not highlighted
+1:highlighted
+0:not highlighted
+1:highlighted
+0:not highlighted
+1:highlighted
+Vim(let):E706:
diff --git a/src/version.c b/src/version.c
index aef087992..106445a02 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 79,
+/**/
78,
/**/
77,
diff --git a/src/vim.h b/src/vim.h
index 3d61f3a35..4d8d5e82f 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1864,9 +1864,10 @@ typedef int proftime_T; /* dummy for function prototypes */
#define VV_MOUSE_COL 51
#define VV_OP 52
#define VV_SEARCHFORWARD 53
-#define VV_OLDFILES 54
-#define VV_WINDOWID 55
-#define VV_LEN 56 /* number of v: vars */
+#define VV_HLSEARCH 54
+#define VV_OLDFILES 55
+#define VV_WINDOWID 56
+#define VV_LEN 57 /* number of v: vars */
#ifdef FEAT_CLIPBOARD
@@ -2246,4 +2247,10 @@ typedef int VimClipboard; /* This is required for the prototypes. */
/* Character used as separated in autoload function/variable names. */
#define AUTOLOAD_CHAR '#'
+#ifdef FEAT_EVAL
+# define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr(VV_HLSEARCH, !no_hlsearch)
+#else
+# define SET_NO_HLSEARCH(flag) no_hlsearch = (flag)
+#endif
+
#endif /* VIM__H */