diff options
author | Josh Rahm <rahm@google.com> | 2023-01-19 19:37:12 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-01-19 20:42:40 +0000 |
commit | 409e6f9d7e690a398c4318a8eab7fd56a2eceda3 (patch) | |
tree | 002b2a00b0ea2bb18d90f3d07495a886ccaf0324 /runtime | |
parent | 5f3b76d5cec27181770c2fff33ea417eee275172 (diff) | |
download | rneovim-fix_semantic_tokens_pull.tar.gz rneovim-fix_semantic_tokens_pull.tar.bz2 rneovim-fix_semantic_tokens_pull.zip |
fix(semantic_tokens.lua): Fix nil tokens/data in semantic_tokens.luafix_semantic_tokens_pull
Some (poorly-implemented) LSPs can return an empty JSON object in
LSP responses, which could cause tokens to be nil, which would eventually
cause an error and a bad UI experience. This fix makes sure that the
tokens variable is always set to a non-nil value.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/lua/vim/lsp/semantic_tokens.lua | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/semantic_tokens.lua b/runtime/lua/vim/lsp/semantic_tokens.lua index b1bc48dac6..a9d3d0cbd6 100644 --- a/runtime/lua/vim/lsp/semantic_tokens.lua +++ b/runtime/lua/vim/lsp/semantic_tokens.lua @@ -330,7 +330,7 @@ function STHighlighter:process_response(response, client, version) end vim.list_extend(tokens, old_tokens, idx) else - tokens = response.data + tokens = response.data or {} end -- Update the state with the new results @@ -378,7 +378,7 @@ function STHighlighter:on_win(topline, botline) -- -- Instead, we have to use normal extmarks that can attach to locations -- in the buffer and are persisted between redraws. - local highlights = current_result.highlights + local highlights = current_result.highlights or {} local idx = binary_search(highlights, topline) for i = idx, #highlights do @@ -612,7 +612,7 @@ function M.get_at_pos(bufnr, row, col) local tokens = {} for client_id, client in pairs(highlighter.client_state) do - local highlights = client.current_result.highlights + local highlights = client.current_result.highlights or {} if highlights then local idx = binary_search(highlights, row) for i = idx, #highlights do |