aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/rpc.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-11-02 08:50:44 -0500
committerGitHub <noreply@github.com>2020-11-02 08:50:44 -0500
commitdc14b1468afeb53c9ca0a734a2035cc54b5e1d94 (patch)
treed34b8bafd49892a678c38f79039191c079bfa944 /runtime/lua/vim/lsp/rpc.lua
parent6224ec3d4a672a9beb7522a34e61fa3b335bf070 (diff)
downloadrneovim-dc14b1468afeb53c9ca0a734a2035cc54b5e1d94.tar.gz
rneovim-dc14b1468afeb53c9ca0a734a2035cc54b5e1d94.tar.bz2
rneovim-dc14b1468afeb53c9ca0a734a2035cc54b5e1d94.zip
lsp: remove vim.NIL from processing (#13174)
* lsp: remove vim.NIL from processing * lsp: remove instances of vim.NIL
Diffstat (limited to 'runtime/lua/vim/lsp/rpc.lua')
-rw-r--r--runtime/lua/vim/lsp/rpc.lua19
1 files changed, 17 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/rpc.lua b/runtime/lua/vim/lsp/rpc.lua
index 749a51fecc..17c411f952 100644
--- a/runtime/lua/vim/lsp/rpc.lua
+++ b/runtime/lua/vim/lsp/rpc.lua
@@ -42,13 +42,28 @@ local function is_dir(filename)
end
local NIL = vim.NIL
+
+--@private
+local recursive_convert_NIL
+recursive_convert_NIL = function(v, tbl_processed)
+ if v == NIL then
+ return nil
+ elseif not tbl_processed[v] and type(v) == 'table' then
+ tbl_processed[v] = true
+ return vim.tbl_map(function(x)
+ return recursive_convert_NIL(x, tbl_processed)
+ end, v)
+ end
+
+ return v
+end
+
--@private
--- Returns its argument, but converts `vim.NIL` to Lua `nil`.
--@param v (any) Argument
--@returns (any)
local function convert_NIL(v)
- if v == NIL then return nil end
- return v
+ return recursive_convert_NIL(v, {})
end
--@private