summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/config/plugins/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/config/plugins/lsp.lua')
-rw-r--r--.config/nvim/lua/config/plugins/lsp.lua240
1 files changed, 0 insertions, 240 deletions
diff --git a/.config/nvim/lua/config/plugins/lsp.lua b/.config/nvim/lua/config/plugins/lsp.lua
deleted file mode 100644
index eb812d2..0000000
--- a/.config/nvim/lua/config/plugins/lsp.lua
+++ /dev/null
@@ -1,240 +0,0 @@
-return {
- "neovim/nvim-lspconfig",
- event = "VeryLazy",
- dependencies = {
- { "williamboman/mason.nvim", opts = {} },
- "williamboman/mason-lspconfig.nvim",
- "WhoIsSethDaniel/mason-tool-installer.nvim",
- {
- "j-hui/fidget.nvim",
- opts = {
- notification = {
- window = {
- winblend = 0,
- },
- },
- },
- },
- },
- config = function()
- vim.api.nvim_create_autocmd("LspAttach", {
- group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
- callback = function(event)
- local map = function(keys, func, desc, mode)
- mode = mode or "n"
- vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
- end
-
- -- Jump to the definition of the word under your cursor.
- -- This is where a variable was first declared, or where a function is defined, etc.
- -- To jump back, press <C-t>.
- map("gd", require("fzf-lua").lsp_definitions, "Goto Definition")
-
- map("gk", function()
- vim.diagnostic.open_float()
- end, "Open floating diagnostic")
-
- -- Find references for the word under your cursor.
- map("gr", require("fzf-lua").lsp_references, "Goto References")
-
- -- Jump to the implementation of the word under your cursor.
- -- Useful when your language has ways of declaring types without an actual implementation.
- map("gI", require("fzf-lua").lsp_implementations, "Goto Implementation")
-
- -- Jump to the type of the word under your cursor.
- -- Useful when you're not sure what type a variable is and you want to see
- -- the definition of its *type*, not where it was *defined*.
- map("<leader>D", require("fzf-lua").lsp_typedefs, "Type Definition")
-
- -- Fuzzy find all the symbols in your current document.
- -- Symbols are things like variables, functions, types, etc.
- map("<leader>ds", require("fzf-lua").lsp_document_symbols, "Document Symbols")
-
- -- Fuzzy find all the symbols in your current workspace.
- -- Similar to document symbols, except searches over your entire project.
- map("<leader>ws", require("fzf-lua").lsp_live_workspace_symbols, "Workspace Symbols")
-
- -- Rename the variable under your cursor.
- -- Most Language Servers support renaming across files, etc.
- map("gR", vim.lsp.buf.rename, "Rename")
-
- -- Execute a code action, usually your cursor needs to be on top of an error
- -- or a suggestion from your LSP for this to activate.
- map("<leader>ca", vim.lsp.buf.code_action, "Code Action", { "n", "x" })
-
- -- WARN: This is not Goto Definition, this is Goto Declaration.
- -- For example, in C this would take you to the header.
- map("gD", vim.lsp.buf.declaration, "Goto Declaration")
- local function client_supports_method(client, method, bufnr)
- if vim.fn.has("nvim-0.11") == 1 then
- return client:supports_method(method, bufnr)
- else
- return client.supports_method(method, { bufnr = bufnr })
- end
- end
-
- -- The following two autocommands are used to highlight references of the
- -- word under your cursor when your cursor rests there for a little while.
- -- See `:help CursorHold` for information about when this is executed
- --
- -- When you move your cursor, the highlights will be cleared (the second autocommand).
- local client = vim.lsp.get_client_by_id(event.data.client_id)
- if
- client
- and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
- then
- local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
- vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
- buffer = event.buf,
- group = highlight_augroup,
- callback = vim.lsp.buf.document_highlight,
- })
-
- vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
- buffer = event.buf,
- group = highlight_augroup,
- callback = vim.lsp.buf.clear_references,
- })
-
- vim.api.nvim_create_autocmd("LspDetach", {
- group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
- callback = function(event2)
- vim.lsp.buf.clear_references()
- vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf })
- end,
- })
- end
-
- -- The following code creates a keymap to toggle inlay hints in your
- -- code, if the language server you are using supports them
- --
- vim.api.nvim_set_hl(0, "LspInlayHint", { fg = "#4c566a", bg = "NONE", italic = true })
-
- -- This may be unwanted, since they displace some of your code
- if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
- map("<leader>th", function()
- vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
- end, "Toggle Inlay Hints")
- end
- end,
- })
-
- vim.keymap.set("n", "gK", function()
- local new_config = not vim.diagnostic.config().virtual_lines
- vim.diagnostic.config({ virtual_lines = new_config })
- end, { desc = "Toggle diagnostic virtual_lines" })
-
- -- Diagnostic Config
- -- See :help vim.diagnostic.Opts
- vim.diagnostic.config({
- severity_sort = true,
- float = { border = "rounded", source = "if_many" },
- underline = { severity = vim.diagnostic.severity.ERROR },
- signs = {
- text = {
- [vim.diagnostic.severity.ERROR] = "󰅚 ",
- [vim.diagnostic.severity.WARN] = "󰀪 ",
- [vim.diagnostic.severity.INFO] = "󰋽 ",
- [vim.diagnostic.severity.HINT] = "󰌶 ",
- },
- },
- virtual_text = {
- source = "if_many",
- spacing = 2,
- },
- update_in_insert = true,
- virtual_lines = false,
- -- virtual_text = {
- -- source = "if_many",
- -- spacing = 2,
- -- format = function(diagnostic)
- -- local diagnostic_message = {
- -- [vim.diagnostic.severity.ERROR] = diagnostic.message,
- -- [vim.diagnostic.severity.WARN] = diagnostic.message,
- -- [vim.diagnostic.severity.INFO] = diagnostic.message,
- -- [vim.diagnostic.severity.HINT] = diagnostic.message,
- -- }
- -- return diagnostic_message[diagnostic.severity]
- -- end,
- -- },
- })
- local original_capabilities = vim.lsp.protocol.make_client_capabilities()
- local capabilities = require("blink.cmp").get_lsp_capabilities(original_capabilities)
- -- Enable the following language servers
- -- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
- --
- -- Add any additional override configuration in the following tables. Available keys are:
- -- - cmd (table): Override the default command used to start the server
- -- - filetypes (table): Override the default list of associated filetypes for the server
- -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
- -- - settings (table): Override the default settings passed when initializing the server.
- -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
- local lspconfig_util = require("lspconfig.util")
- local servers = {
- bashls = {},
- marksman = {},
- pyright = {
- settings = {
- python = {
- analysis = {
- typeCheckingMode = "basic",
- autoSearchPaths = true,
- useLibraryCodeForTypes = true,
- },
- },
- },
- },
- clangd = {
- cmd = {
- "clangd",
- "--fallback-style={BasedOnStyle: LLVM, IndentWidth: 4, TabWidth: 4, UseTab: Never}",
- },
- },
- rust_analyzer = {
- single_file_support = true,
- root_dir = function(fname)
- return lspconfig_util.root_pattern("Cargo.toml", "rust-project.json", ".git")(fname)
- or vim.fs.dirname(fname)
- end,
- },
- lua_ls = {},
- } -- Ensure the servers and tools above are installed
- --
- -- To check the current status of installed tools and/or manually install
- -- other tools, you can run
- -- :Mason
- --
- -- You can press `g?` for help in this menu.
- --
- -- `mason` had to be setup earlier: to configure its options see the
- -- `dependencies` table for `nvim-lspconfig` above.
- --
- -- You can add other tools here that you want Mason to install
- -- for you, so that they are available from within Neovim.
- local ensure_installed = vim.tbl_keys(servers or {})
- vim.list_extend(ensure_installed, {
- "stylua",
- "prettierd",
- })
- require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
-
- require("mason-lspconfig").setup({
- ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
- automatic_installation = false,
- automatic_enable = false,
- handlers = {
- function(server_name)
- if server_name == "rust_analyzer" then
- return
- end
- local server = servers[server_name] or {}
- -- This handles overriding only values explicitly passed
- -- by the server configuration above. Useful when disabling
- -- certain features of an LSP (for example, turning off formatting for ts_ls)
- server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {})
- require("lspconfig")[server_name].setup(server)
- end,
- },
- })
- end,
-}