aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/syntax.c10
-rw-r--r--src/nvim/testdir/test_alot.vim1
-rw-r--r--src/nvim/testdir/test_syn_attr.vim24
-rw-r--r--src/nvim/version.c2
4 files changed, 33 insertions, 4 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index c753c6fabd..6fd7603629 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -7001,11 +7001,15 @@ highlight_color (
if (font || sp)
return NULL;
if (modec == 'c') {
- if (fg)
+ if (fg) {
n = HL_TABLE()[id - 1].sg_cterm_fg - 1;
- else
+ } else {
n = HL_TABLE()[id - 1].sg_cterm_bg - 1;
- sprintf((char *)name, "%d", n);
+ }
+ if (n < 0) {
+ return NULL;
+ }
+ snprintf((char *)name, sizeof(name), "%d", n);
return name;
}
/* term doesn't have color */
diff --git a/src/nvim/testdir/test_alot.vim b/src/nvim/testdir/test_alot.vim
index e5214971b4..f0efd6e4ed 100644
--- a/src/nvim/testdir/test_alot.vim
+++ b/src/nvim/testdir/test_alot.vim
@@ -8,4 +8,5 @@ source test_cmdline.vim
source test_menu.vim
source test_popup.vim
source test_regexp_utf8.vim
+source test_syn_attr.vim
source test_unlet.vim
diff --git a/src/nvim/testdir/test_syn_attr.vim b/src/nvim/testdir/test_syn_attr.vim
new file mode 100644
index 0000000000..809442eb94
--- /dev/null
+++ b/src/nvim/testdir/test_syn_attr.vim
@@ -0,0 +1,24 @@
+" Test syntax highlighting functions.
+
+func Test_missing_attr()
+ hi Mine cterm=italic
+ call assert_equal('Mine', synIDattr(hlID("Mine"), "name"))
+ call assert_equal('1', synIDattr(hlID("Mine"), "italic", 'cterm'))
+ hi Mine cterm=inverse
+ call assert_equal('1', synIDattr(hlID("Mine"), "inverse", 'cterm'))
+ hi Mine cterm=standout gui=undercurl
+ call assert_equal('1', synIDattr(hlID("Mine"), "standout", 'cterm'))
+ call assert_equal('1', synIDattr(hlID("Mine"), "undercurl", 'gui'))
+ hi Mine cterm=NONE gui=NONE
+ call assert_equal('', synIDattr(hlID("Mine"), "italic", 'cterm'))
+ call assert_equal('', synIDattr(hlID("Mine"), "inverse", 'cterm'))
+ call assert_equal('', synIDattr(hlID("Mine"), "standout", 'cterm'))
+ call assert_equal('', synIDattr(hlID("Mine"), "undercurl", 'gui'))
+
+ if has('gui')
+ hi Mine guifg=blue guibg=red font=something
+ call assert_equal('blue', synIDattr(hlID("Mine"), "fg", 'gui'))
+ call assert_equal('red', synIDattr(hlID("Mine"), "bg", 'gui'))
+ call assert_equal('something', synIDattr(hlID("Mine"), "font", 'gui'))
+ endif
+endfunc
diff --git a/src/nvim/version.c b/src/nvim/version.c
index bc826d8660..fa949224f3 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -730,7 +730,7 @@ static int included_patches[] = {
1550,
// 1549,
1548,
- // 1547,
+ 1547,
1546,
// 1545 NA
// 1544 NA