diff options
author | Christian Clason <c.clason@uni-graz.at> | 2022-07-30 16:11:02 +0200 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-07-31 06:25:57 +0800 |
commit | 29d5ca7d66796a306f63d454ad1588df8c58e5aa (patch) | |
tree | af993106f59dbcccd29cafba6c2258d7221d7bce | |
parent | 9511faa819e8260aa7ae2c2ff140070bbc96efa9 (diff) | |
download | rneovim-29d5ca7d66796a306f63d454ad1588df8c58e5aa.tar.gz rneovim-29d5ca7d66796a306f63d454ad1588df8c58e5aa.tar.bz2 rneovim-29d5ca7d66796a306f63d454ad1588df8c58e5aa.zip |
vim-patch:9.0.0111: "nocombine" is missing from synIDattr()
Problem: "nocombine" is missing from synIDattr().
Solution: Add "nocombine". (Munif Tanjim, closes vim/vim#10816)
https://github.com/vim/vim/commit/de78632c41d870d5254e9ccd285f53674b955f4e
-rw-r--r-- | runtime/doc/builtin.txt | 1 | ||||
-rw-r--r-- | src/nvim/eval/funcs.c | 8 | ||||
-rw-r--r-- | src/nvim/testdir/test_syn_attr.vim | 30 |
3 files changed, 32 insertions, 7 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 9d33c442c2..f973277b54 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -8041,6 +8041,7 @@ synIDattr({synID}, {what} [, {mode}]) *synIDattr()* "underdotted" "1" if dotted underlined "underdashed" "1" if dashed underlined "strikethrough" "1" if struckthrough + "nocombine" "1" if nocombine Example (echoes the color of the syntax item under the cursor): > diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 255a58fede..f552c9916e 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -9498,8 +9498,12 @@ static void f_synIDattr(typval_T *argvars, typval_T *rettv, FunPtr fptr) p = highlight_has_attr(id, HL_ITALIC, modec); } break; - case 'n': // name - p = get_highlight_name_ext(NULL, id - 1, false); + case 'n': + if (TOLOWER_ASC(what[1]) == 'o') { // nocombine + p = highlight_has_attr(id, HL_NOCOMBINE, modec); + } else { // name + p = get_highlight_name_ext(NULL, id - 1, false); + } break; case 'r': // reverse p = highlight_has_attr(id, HL_INVERSE, modec); diff --git a/src/nvim/testdir/test_syn_attr.vim b/src/nvim/testdir/test_syn_attr.vim index fa0b08fde5..88f9d0d84d 100644 --- a/src/nvim/testdir/test_syn_attr.vim +++ b/src/nvim/testdir/test_syn_attr.vim @@ -1,19 +1,39 @@ " Test syntax highlighting functions. func Test_missing_attr() - hi Mine cterm=italic + throw 'Skipped: use test/functional/legacy/syn_attr_spec.lua' + + hi Mine term=bold cterm=italic call assert_equal('Mine', synIDattr(hlID("Mine"), "name")) + call assert_equal('', synIDattr("Mine"->hlID(), "bg", 'term')) + call assert_equal('', synIDattr("Mine"->hlID(), "fg", 'term')) + call assert_equal('', synIDattr("Mine"->hlID(), "sp", 'term')) + call assert_equal('1', synIDattr(hlID("Mine"), "bold", 'term')) call assert_equal('1', synIDattr(hlID("Mine"), "italic", 'cterm')) - hi Mine cterm=inverse + hi Mine term=reverse cterm=inverse + call assert_equal('1', synIDattr(hlID("Mine"), "reverse", 'term')) call assert_equal('1', synIDattr(hlID("Mine"), "inverse", 'cterm')) - hi Mine cterm=standout gui=undercurl + + hi Mine term=underline cterm=standout gui=undercurl + call assert_equal('1', synIDattr(hlID("Mine"), "underline", 'term')) call assert_equal('1', synIDattr(hlID("Mine"), "standout", 'cterm')) call assert_equal('1', synIDattr("Mine"->hlID(), "undercurl", 'gui')) - hi Mine gui=strikethrough + + hi Mine term=underdouble cterm=underdotted gui=underdashed + call assert_equal('1', synIDattr(hlID("Mine"), "underdouble", 'term')) + call assert_equal('1', synIDattr(hlID("Mine"), "underdotted", 'cterm')) + call assert_equal('1', synIDattr("Mine"->hlID(), "underdashed", 'gui')) + + hi Mine term=nocombine gui=strikethrough call assert_equal('1', synIDattr(hlID("Mine"), "strikethrough", 'gui')) - hi Mine cterm=NONE gui=NONE + call assert_equal('1', synIDattr(hlID("Mine"), "nocombine", 'term')) + call assert_equal('', synIDattr(hlID("Mine"), "nocombine", 'gui')) + hi Mine term=NONE cterm=NONE gui=NONE + call assert_equal('', synIDattr(hlID("Mine"), "bold", 'term')) call assert_equal('', synIDattr(hlID("Mine"), "italic", 'cterm')) + call assert_equal('', synIDattr(hlID("Mine"), "reverse", 'term')) call assert_equal('', synIDattr(hlID("Mine"), "inverse", 'cterm')) + call assert_equal('', synIDattr(hlID("Mine"), "underline", 'term')) call assert_equal('', synIDattr(hlID("Mine"), "standout", 'cterm')) call assert_equal('', synIDattr(hlID("Mine"), "undercurl", 'gui')) call assert_equal('', synIDattr(hlID("Mine"), "strikethrough", 'gui')) |