diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2018-07-21 14:41:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-21 14:41:49 +0200 |
commit | 94841e5eaebc3f2fb556056dd676afff21ff5d23 (patch) | |
tree | 2bf31609b6f8e0fcb283ea4d776b39c654e9f399 /src/nvim/api/vim.c | |
parent | 5ff90a100a2af99ee4236995bef221a41eb2f643 (diff) | |
parent | 6b8cd827a98e69eb61c107bff02ad953e240d787 (diff) | |
download | rneovim-94841e5eaebc3f2fb556056dd676afff21ff5d23.tar.gz rneovim-94841e5eaebc3f2fb556056dd676afff21ff5d23.tar.bz2 rneovim-94841e5eaebc3f2fb556056dd676afff21ff5d23.zip |
Merge pull request #8221 from bfredl/hlstate
UI grid protocol revision: line based updates and semantic highlights
Diffstat (limited to 'src/nvim/api/vim.c')
-rw-r--r-- | src/nvim/api/vim.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 03567ddfd8..1ffae8ef43 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -21,6 +21,7 @@ #include "nvim/vim.h" #include "nvim/buffer.h" #include "nvim/file_search.h" +#include "nvim/highlight.h" #include "nvim/window.h" #include "nvim/types.h" #include "nvim/ex_docmd.h" @@ -1850,3 +1851,22 @@ Object nvim_get_proc(Integer pid, Error *err) #endif return rvobj; } + +/// NB: if your UI doesn't use hlstate, this will not return hlstate first time +Array nvim__inspect_cell(Integer row, Integer col, Error *err) +{ + Array ret = ARRAY_DICT_INIT; + if (row < 0 || row >= screen_Rows + || col < 0 || col >= screen_Columns) { + return ret; + } + size_t off = LineOffset[(size_t)row] + (size_t)col; + ADD(ret, STRING_OBJ(cstr_to_string((char *)ScreenLines[off]))); + int attr = ScreenAttrs[off]; + ADD(ret, DICTIONARY_OBJ(hl_get_attr_by_id(attr, true, err))); + // will not work first time + if (!highlight_use_hlstate()) { + ADD(ret, ARRAY_OBJ(hl_inspect(attr))); + } + return ret; +} |