mirror of
https://github.com/vim/vim.git
synced 2025-09-22 03:33:47 -04:00
updated for version 7.4.079
Problem: A script cannot detect whether 'hlsearch' highlighting is actually displayed. Solution: Add the "v:hlsearch" variable. (ZyX)
This commit is contained in:
parent
e5878f4be9
commit
8050efa07d
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
10
src/search.c
10
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
|
||||
}
|
||||
}
|
||||
|
@ -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!). */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
45
src/testdir/test101.in
Normal file
45
src/testdir/test101.in
Normal file
@ -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:
|
11
src/testdir/test101.ok
Normal file
11
src/testdir/test101.ok
Normal file
@ -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:
|
@ -738,6 +738,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
79,
|
||||
/**/
|
||||
78,
|
||||
/**/
|
||||
|
13
src/vim.h
13
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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user