-
-
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.