diff --git a/init.lua b/init.lua index 681bf2b..8d14161 100644 --- a/init.lua +++ b/init.lua @@ -1,3 +1,4 @@ +vim.opt.runtimepath:append(',~/.config/nvim/lua') require "plugin" -- Automatically source and re-compile packer whenever you save this init.lua @@ -90,7 +91,52 @@ require('telescope').setup { } require "keymap" --- write current buffer keymap + +-- LSP settings. +-- This function gets run when an LSP connects to a particular buffer. +local on_attach = function(_, bufnr) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('lr', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('lc', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') + nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') + nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') + nmap('gl', vim.diagnostic.open_float, 'Current line diagnostics') + nmap('ls', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + nmap('lw', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + -- nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + -- nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + -- nmap('wl', function() + -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + -- end, '[W]orkspace [L]ist Folders') + -- + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) +end -- [[ Configure Treesitter ]] -- See `:help nvim-treesitter` diff --git a/keymap.lua b/lua/keymap.lua similarity index 54% rename from keymap.lua rename to lua/keymap.lua index 4860c28..3e94374 100644 --- a/keymap.lua +++ b/lua/keymap.lua @@ -1,3 +1,4 @@ +-- write current buffer vim.keymap.set('n', 'w', ':w', {desc = 'Write buffer', silent = true}) -- quit keymap @@ -47,48 +48,3 @@ vim.keymap.set('n', ']d', vim.diagnostic.goto_next) -- vim.keymap.set('n', 'q', vim.diagnostic.setloclist) --- LSP settings. --- This function gets run when an LSP connects to a particular buffer. -local on_attach = function(_, bufnr) - -- NOTE: Remember that lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself - -- many times. - -- - -- In this case, we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. - local nmap = function(keys, func, desc) - if desc then - desc = 'LSP: ' .. desc - end - - vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) - end - - nmap('lr', vim.lsp.buf.rename, '[R]e[n]ame') - nmap('lc', vim.lsp.buf.code_action, '[C]ode [A]ction') - - nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') - nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') - nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') - nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') - nmap('gl', vim.diagnostic.open_float, 'Current line diagnostics') - nmap('ls', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - nmap('lw', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') - - -- See `:help K` for why this keymap - nmap('K', vim.lsp.buf.hover, 'Hover Documentation') - nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') - - -- Lesser used LSP functionality - nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') - -- nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') - -- nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') - -- nmap('wl', function() - -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - -- end, '[W]orkspace [L]ist Folders') - -- - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - vim.lsp.buf.format() - end, { desc = 'Format current buffer with LSP' }) -end diff --git a/option.lua b/lua/option.lua similarity index 100% rename from option.lua rename to lua/option.lua diff --git a/plugin.lua b/lua/plugin.lua similarity index 100% rename from plugin.lua rename to lua/plugin.lua