-
-
Save folke/fe5d28423ea5380929c3f7ce674c41d8 to your computer and use it in GitHub Desktop.
-- put this file somewhere in your nvim config, like: ~/.config/nvim/lua/config/lua-lsp.lua | |
-- usage: require'lspconfig'.sumneko_lua.setup(require("config.lua-lsp")) | |
local library = {} | |
local path = vim.split(package.path, ";") | |
-- this is the ONLY correct way to setup your path | |
table.insert(path, "lua/?.lua") | |
table.insert(path, "lua/?/init.lua") | |
local function add(lib) | |
for _, p in pairs(vim.fn.expand(lib, false, true)) do | |
p = vim.loop.fs_realpath(p) | |
library[p] = true | |
end | |
end | |
-- add runtime | |
add("$VIMRUNTIME") | |
-- add your config | |
add("~/.config/nvim") | |
-- add plugins | |
-- if you're not using packer, then you might need to change the paths below | |
add("~/.local/share/nvim/site/pack/packer/opt/*") | |
add("~/.local/share/nvim/site/pack/packer/start/*") | |
return { | |
-- delete root from workspace to make sure we don't trigger duplicate warnings | |
on_new_config = function(config, root) | |
local libs = vim.tbl_deep_extend("force", {}, library) | |
libs[root] = nil | |
config.settings.Lua.workspace.library = libs | |
return config | |
end, | |
settings = { | |
Lua = { | |
runtime = { | |
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) | |
version = "LuaJIT", | |
-- Setup your lua path | |
path = path | |
}, | |
completion = { callSnippet = "Both" }, | |
diagnostics = { | |
-- Get the language server to recognize the `vim` global | |
globals = { "vim" } | |
}, | |
workspace = { | |
-- Make the server aware of Neovim runtime files | |
library = library, | |
maxPreload = 2000, | |
preloadFileSize = 50000 | |
}, | |
-- Do not send telemetry data containing a randomized but unique identifier | |
telemetry = { enable = false } | |
} | |
} | |
} |
-- put this file somewhere in your nvim config, like: ~/.config/nvim/lua/types.lua | |
-- DONT require this file anywhere. It's simply there for the lsp server. | |
-- this code seems weird, but it hints the lsp server to merge the required packages in the vim global variable | |
vim = require("vim.shared") | |
vim = require("vim.uri") | |
vim = require("vim.inspect") | |
-- let sumneko know where the sources are for the global vim runtime | |
vim.lsp = require("vim.lsp") | |
vim.treesitter = require("vim.treesitter") | |
vim.highlight = require("vim.highlight") |
There seems to be a small problem. So, here's my setup: ~/.config/nvim
is a symlink to ~/dotfiles/config/nvim
and when I open neovim with ~/dotfiles
as the root directory, the renaming does not work.
Removing the line ~/.config/nvim
fixes the issue and I think that's what you are trying to do with on_new_config
callback, I suppose. But, in this case the root dir expands into ~/dotfiles
and config dir expands into ~/dotfiles/config/nvim
. I think the fix would be to suggest to include the dotfiles root dir instead of the config dir if that's a symlink.
@dhruvmanila I've turned this gist in a plugin. It probably also fixes your issue. I have a similar setup.
On top of a working lua config, the plugin also comes with EmmyLua annotations for the nvim Lua API
That's awesome, thanks for doing this! I will install it and check soon.
Hrm. Ok, I'll try that.