aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lsp/lua_ls.lua
diff options
context:
space:
mode:
authorawy <awy@awy.one>2025-10-20 20:55:26 +0300
committerawy <awy@awy.one>2025-10-20 20:55:26 +0300
commit662dafc52b2c8a9426bb2197ab9246a8cda318e4 (patch)
treef9d1f20e3864360bf941fd6bc02848ed77b037a8 /.config/nvim/lsp/lua_ls.lua
parent8131d9f2898b991a2d2c7a2ac601ce9e07cc9c9f (diff)
downloadhyprdots-662dafc52b2c8a9426bb2197ab9246a8cda318e4.tar.gz
nvqw
Diffstat (limited to '.config/nvim/lsp/lua_ls.lua')
-rw-r--r--.config/nvim/lsp/lua_ls.lua92
1 files changed, 92 insertions, 0 deletions
diff --git a/.config/nvim/lsp/lua_ls.lua b/.config/nvim/lsp/lua_ls.lua
new file mode 100644
index 0000000..c8a46c1
--- /dev/null
+++ b/.config/nvim/lsp/lua_ls.lua
@@ -0,0 +1,92 @@
+---@brief
+---
+--- https://github.com/luals/lua-language-server
+---
+--- Lua language server.
+---
+--- `lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).
+---
+--- The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.
+---
+--- If you primarily use `lua-language-server` for Neovim, and want to provide completions,
+--- analysis, and location handling for plugins on runtime path, you can use the following
+--- settings.
+---
+--- ```lua
+--- vim.lsp.config('lua_ls', {
+--- on_init = function(client)
+--- if client.workspace_folders then
+--- local path = client.workspace_folders[1].name
+--- if
+--- path ~= vim.fn.stdpath('config')
+--- and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))
+--- then
+--- return
+--- end
+--- end
+---
+--- client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
+--- runtime = {
+--- -- Tell the language server which version of Lua you're using (most
+--- -- likely LuaJIT in the case of Neovim)
+--- version = 'LuaJIT',
+--- -- Tell the language server how to find Lua modules same way as Neovim
+--- -- (see `:h lua-module-load`)
+--- path = {
+--- 'lua/?.lua',
+--- 'lua/?/init.lua',
+--- },
+--- },
+--- -- Make the server aware of Neovim runtime files
+--- workspace = {
+--- checkThirdParty = false,
+--- library = {
+--- vim.env.VIMRUNTIME
+--- -- Depending on the usage, you might want to add additional paths
+--- -- here.
+--- -- '${3rd}/luv/library'
+--- -- '${3rd}/busted/library'
+--- }
+--- -- Or pull in all of 'runtimepath'.
+--- -- NOTE: this is a lot slower and will cause issues when working on
+--- -- your own configuration.
+--- -- See https://github.com/neovim/nvim-lspconfig/issues/3189
+--- -- library = {
+--- -- vim.api.nvim_get_runtime_file('', true),
+--- -- }
+--- }
+--- })
+--- end,
+--- settings = {
+--- Lua = {}
+--- }
+--- })
+--- ```
+---
+--- See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:
+--- * [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)
+--- * [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)
+---
+
+---@type vim.lsp.Config
+return {
+ cmd = { 'lua-language-server' },
+ filetypes = { 'lua' },
+ root_markers = {
+ '.luarc.json',
+ '.luarc.jsonc',
+ '.luacheckrc',
+ '.stylua.toml',
+ 'stylua.toml',
+ 'selene.toml',
+ 'selene.yml',
+ '.git',
+ },
+ settings = {
+ Lua = {
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ }
+ }
+ }
+}