diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index a70a9aa..84f5af8 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -6,28 +6,45 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set(mode, lhs, rhs, opts) end - -- Trigger code completion - bufmap('i', '', '') - -- Display documentation of the symbol under the cursor - bufmap('n', 'K', 'lua vim.lsp.buf.hover()') - -- Jump to the definition - bufmap('n', 'gd', 'lua vim.lsp.buf.definition()') - -- Jump to declaration - bufmap('n', 'gD', 'lua vim.lsp.buf.declaration()') - -- Lists all the implementations for the symbol under the cursor - bufmap('n', 'gi', 'lua vim.lsp.buf.implementation()') - -- Jumps to the definition of the type symbol - bufmap('n', 'go', 'lua vim.lsp.buf.type_definition()') - -- Lists all the references - bufmap('n', 'gr', 'lua vim.lsp.buf.references()') - -- Displays a function's signature information - bufmap('n', '', 'lua vim.lsp.buf.signature_help()') - -- Renames all references to the symbol under the cursor - bufmap('n', '', 'lua vim.lsp.buf.rename()') - -- Format current file - bufmap('n', '', 'lua vim.lsp.buf.format()') - -- Selects a code action available at the current cursor position - bufmap('n', '', 'lua vim.lsp.buf.code_action()') + local map = function(keys, func, desc) + vim.keymap.set('n', 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 . + map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + + -- Find references for the word under your cursor. + map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + + -- 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('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') + + -- 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('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') + + -- Fuzzy find all the symbols in your current document. + -- Symbols are things like variables, functions, types, etc. + map('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + + -- Fuzzy find all the symbols in your current workspace. + -- Similar to document symbols, except searches over your entire project. + map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + + -- Rename the variable under your cursor. + -- Most Language Servers support renaming across files, etc. + map('rn', vim.lsp.buf.rename, '[R]e[n]ame') + + -- 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('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + -- 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, '[G]oto [D]eclaration') end }) @@ -35,12 +52,26 @@ local capabilities = require('cmp_nvim_lsp').default_capabilities() require('mason').setup({}) require('mason-lspconfig').setup({ - ensure_installed = {'lua_ls', 'pyright', 'rust_analyzer', 'clangd' }, + ensure_installed = {'lua_ls', 'pyright', 'rust_analyzer', 'clangd', 'tsserver', }, handlers = { require('lspconfig').clangd.setup({ filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto","hpp"}, capabilities = capabilities, }), + require('lspconfig').tsserver.setup({ + init_options = { + plugins = { + { + name = "@vue/typescript-plugin", + location = "/usr/local/lib/node_modules/@vue/typescript-plugin", + languages = { "vue" }, + }, + }, + }, + filetypes = { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "vue"}, + capabilities = capabilities, + }), + require('lspconfig').volar.setup({}), require('lspconfig').rust_analyzer.setup({ capabilities = capabilities, cmd = { diff --git a/after/plugin/treescript.lua b/after/plugin/treescript.lua index f18b775..d1138e0 100644 --- a/after/plugin/treescript.lua +++ b/after/plugin/treescript.lua @@ -1,6 +1,6 @@ require('nvim-treesitter.configs').setup({ -- A list of parser names, or "all" (the five listed parsers should always be installed) - ensure_installed = { "c", "cpp", "cuda", "lua", "python", "vim", "vimdoc", "query" }, + ensure_installed = { "c", "cpp", "cuda", "lua", "python", "vim", "vimdoc", "query", "javascript" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, @@ -25,9 +25,9 @@ require('nvim-treesitter.configs').setup({ enable = true, keymaps = { init_selection = "tnn", -- set to `false` to disable one of the mappings - node_incremental = "trn", - scope_incremental = "trc", - node_decremental = "trm", + node_incremental = "tni", + scope_incremental = "tnc", + node_decremental = "tnd", }, }, })