aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/vim.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2018-07-21 14:41:49 +0200
committerGitHub <noreply@github.com>2018-07-21 14:41:49 +0200
commit94841e5eaebc3f2fb556056dd676afff21ff5d23 (patch)
tree2bf31609b6f8e0fcb283ea4d776b39c654e9f399 /src/nvim/api/vim.c
parent5ff90a100a2af99ee4236995bef221a41eb2f643 (diff)
parent6b8cd827a98e69eb61c107bff02ad953e240d787 (diff)
downloadrneovim-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.c20
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;
+}