Merge remote-tracking branch 'vim/master'

This commit is contained in:
Kazuki Sakamoto
2017-03-26 20:44:25 -07:00
9 changed files with 41 additions and 14 deletions
+6 -5
View File
@@ -9,15 +9,17 @@
# Script should be run every time new Ex commands are added in Vim,
# from the src/vim directory, since it reads commands from "ex_cmds.h".
use strict;
# Find the list of Vim commands from cmdnames[] table in ex_cmds.h
my @cmds;
my @skipped;
my $skipped_cmds;
open(IN, "< ex_cmds.h") or die "can't open ex_cmds.h: $!\n";
while (<IN>) {
if (/^EX\(CMD_\S*,\s*"([a-z][^"]*)"/) {
push (@cmds, $1);
push @cmds, $1;
} elsif (/^EX\(CMD_/) {
push (@skipped, $1);
++$skipped_cmds;
}
}
@@ -68,7 +70,6 @@ for my $c1 ('a' .. 'z') {
}
print "};\n",
"\n",
"static int command_count = ", $#cmds + $#skipped + 2 , ";\n",
"static const int command_count = ", scalar(@cmds) + $skipped_cmds, ";\n",
"\n",
"/* End of automatically generated code by create_cmdidxs.pl */\n";
+1 -1
View File
@@ -11773,7 +11773,7 @@ f_synIDattr(typval_T *argvars UNUSED, typval_T *rettv)
break;
case 'n': /* name */
p = get_highlight_name(NULL, id - 1);
p = get_highlight_name_ext(NULL, id - 1, FALSE);
break;
case 'r': /* reverse */
+2 -2
View File
@@ -7962,7 +7962,7 @@ sign_list_defined(sign_T *sp)
if (sp->sn_line_hl > 0)
{
MSG_PUTS(" linehl=");
p = get_highlight_name(NULL, sp->sn_line_hl - 1);
p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE);
if (p == NULL)
MSG_PUTS("NONE");
else
@@ -7971,7 +7971,7 @@ sign_list_defined(sign_T *sp)
if (sp->sn_text_hl > 0)
{
MSG_PUTS(" texthl=");
p = get_highlight_name(NULL, sp->sn_text_hl - 1);
p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE);
if (p == NULL)
MSG_PUTS("NONE");
else
+1 -1
View File
@@ -573,7 +573,7 @@ static const unsigned char cmdidxs2[26][26] =
/* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
};
static int command_count = 541;
static const int command_count = 541;
/* End of automatically generated code by create_cmdidxs.pl */
+1
View File
@@ -52,5 +52,6 @@ void highlight_gui_started(void);
int highlight_changed(void);
void set_context_in_highlight_cmd(expand_T *xp, char_u *arg);
char_u *get_highlight_name(expand_T *xp, int idx);
char_u *get_highlight_name_ext(expand_T *xp, int idx, int skip_cleared);
void free_highlight_fonts(void);
/* vim: set ft=c : */
+15 -5
View File
@@ -9950,17 +9950,27 @@ highlight_list_two(int cnt, int attr)
|| defined(FEAT_SIGNS) || defined(PROTO)
/*
* Function given to ExpandGeneric() to obtain the list of group names.
* Also used for synIDattr() function.
*/
char_u *
get_highlight_name(expand_T *xp UNUSED, int idx)
{
return get_highlight_name_ext(xp, idx, TRUE);
}
/*
* Obtain a highlight group name.
* When "skip_cleared" is TRUE don't return a cleared entry.
*/
char_u *
get_highlight_name_ext(expand_T *xp UNUSED, int idx, int skip_cleared)
{
if (idx < 0)
return NULL;
/* Items are never removed from the table, skip the ones that were cleared.
*/
while (idx < highlight_ga.ga_len && HL_TABLE()[idx].sg_cleared)
++idx;
/* Items are never removed from the table, skip the ones that were
* cleared. */
if (skip_cleared && idx < highlight_ga.ga_len && HL_TABLE()[idx].sg_cleared)
return (char_u *)"";
#ifdef FEAT_CMDL_COMPL
if (idx == highlight_ga.ga_len && include_none != 0)
+8
View File
@@ -71,6 +71,14 @@ func Test_highlight_completion()
call assert_equal('"hi default', getreg(':'))
call feedkeys(":hi c\<S-Tab>\<Home>\"\<CR>", 'xt')
call assert_equal('"hi clear', getreg(':'))
" A cleared group does not show up in completions.
hi Anders ctermfg=green
call assert_equal(['Aardig', 'Anders'], getcompletion('A', 'highlight'))
hi clear Aardig
call assert_equal(['Anders'], getcompletion('A', 'highlight'))
hi clear Anders
call assert_equal([], getcompletion('A', 'highlight'))
endfunc
func Test_expr_completion()
+3
View File
@@ -326,13 +326,16 @@ func Test_syn_clear()
syntax keyword Bar tar
call assert_match('Foo', execute('syntax'))
call assert_match('Bar', execute('syntax'))
call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
syn clear Foo
call assert_notmatch('Foo', execute('syntax'))
call assert_match('Bar', execute('syntax'))
call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
syn clear Foo Bar
call assert_notmatch('Foo', execute('syntax'))
call assert_notmatch('Bar', execute('syntax'))
hi clear Foo
call assert_equal('Foo', synIDattr(hlID("Foo"), "name"))
hi clear Bar
endfunc
+4
View File
@@ -779,6 +779,10 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
514,
/**/
513,
/**/
512,
/**/