summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <david@luevano.xyz>2023-06-04 00:44:54 -0600
committerDavid Luevano Alvarado <david@luevano.xyz>2023-06-04 00:44:54 -0600
commit015726ddf1ccec5ebc12c5189bc6a711ac2c0367 (patch)
treed82bfc5719df844a6fc29f75a6c06bde666ff36f /lua
parent5cc9324f8d0547bc46b6a5ec957a5d9165f70c6e (diff)
decouple more config into separate files, move stuff into lsp
Diffstat (limited to 'lua')
-rw-r--r--lua/plugins/alpha.lua10
-rw-r--r--lua/plugins/autocompletion.lua12
-rw-r--r--lua/plugins/init.lua16
-rw-r--r--lua/plugins/lspconfig.lua84
-rw-r--r--lua/plugins/telescope-fzf-native.lua8
-rw-r--r--lua/plugins/telescope.lua31
6 files changed, 117 insertions, 44 deletions
diff --git a/lua/plugins/alpha.lua b/lua/plugins/alpha.lua
new file mode 100644
index 0000000..bd1491f
--- /dev/null
+++ b/lua/plugins/alpha.lua
@@ -0,0 +1,10 @@
+return {
+ 'goolord/alpha-nvim',
+ enabled = false,
+ dependencies = {
+ 'nvim-tree/nvim-web-devicons'
+ },
+ config = function ()
+ require('alpha').setup(require('alpha.themes.theta').config)
+ end,
+}
diff --git a/lua/plugins/autocompletion.lua b/lua/plugins/autocompletion.lua
new file mode 100644
index 0000000..333c4fe
--- /dev/null
+++ b/lua/plugins/autocompletion.lua
@@ -0,0 +1,12 @@
+return {
+ 'hrsh7th/nvim-cmp',
+ dependencies = {
+ -- Snippet Engine & its associated nvim-cmp source
+ 'L3MON4D3/LuaSnip',
+ 'saadparwaiz1/cmp_luasnip',
+ -- Adds LSP completion capabilities
+ 'hrsh7th/cmp-nvim-lsp',
+ -- Adds a number of user-friendly snippets
+ 'rafamadriz/friendly-snippets',
+ },
+}
diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua
index 3e91383..e8b57ab 100644
--- a/lua/plugins/init.lua
+++ b/lua/plugins/init.lua
@@ -8,22 +8,6 @@ return {
'tpope/vim-sleuth',
- {
- -- Autocompletion
- 'hrsh7th/nvim-cmp',
- dependencies = {
- -- Snippet Engine & its associated nvim-cmp source
- 'L3MON4D3/LuaSnip',
- 'saadparwaiz1/cmp_luasnip',
-
- -- Adds LSP completion capabilities
- 'hrsh7th/cmp-nvim-lsp',
-
- -- Adds a number of user-friendly snippets
- 'rafamadriz/friendly-snippets',
- },
- },
-
-- Useful plugin to show you pending keybinds.
{ 'folke/which-key.nvim', opts = {} },
{
diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua
index ca3a791..1657cec 100644
--- a/lua/plugins/lspconfig.lua
+++ b/lua/plugins/lspconfig.lua
@@ -1,16 +1,82 @@
+local servers = {
+ -- clangd = {},
+ -- gopls = {},
+ -- pyright = {},
+ -- rust_analyzer = {},
+ -- tsserver = {},
+
+ lua_ls = {
+ Lua = {
+ workspace = { checkThirdParty = false },
+ telemetry = { enable = false },
+ },
+ },
+}
+
return {
'neovim/nvim-lspconfig',
dependencies = {
- {
- 'williamboman/mason.nvim',
- opts = {
- ensure_installed = {
- "gopls",
- },
- },
- },
+ 'hrsh7th/cmp-nvim-lsp',
+ -- Required for the keybinds
+ 'nvim-telescope/telescope.nvim',
+ { 'williamboman/mason.nvim', config = true },
'williamboman/mason-lspconfig.nvim',
{ 'j-hui/fidget.nvim', opts = {} },
- 'folke/neodev.nvim',
+ { 'folke/neodev.nvim', opts = {} },
},
+ config = function()
+ -- nvim-cmp supports additional completion capabilities, so broadcast that to servers
+ local capabilities = vim.lsp.protocol.make_client_capabilities()
+ capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
+
+ local lspconfig = require('lspconfig')
+ local mason_lspconfig = require('mason-lspconfig')
+ mason_lspconfig.ensure_installed = vim.tbl_keys(servers)
+
+ local on_attach = function(_, bufnr)
+ 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('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
+ nmap('<leader>ca', 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('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
+ nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
+ nmap('<leader>ws', 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('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
+
+ -- Lesser used LSP functionality
+ nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
+ nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
+ nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
+ nmap('<leader>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
+
+ mason_lspconfig.setup_handlers {
+ function(server_name)
+ lspconfig[server_name].setup {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ settings = servers[server_name],
+ }
+ end,
+ }
+ end,
}
diff --git a/lua/plugins/telescope-fzf-native.lua b/lua/plugins/telescope-fzf-native.lua
deleted file mode 100644
index 1fe2371..0000000
--- a/lua/plugins/telescope-fzf-native.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-return {
- 'nvim-telescope/telescope-fzf-native.nvim',
- build = 'make',
- config = function()
- pcall(require('telescope').load_extension, 'fzf')
- return vim.fn.executable 'make' == 1
- end,
-}
diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua
index d182d7c..0961b38 100644
--- a/lua/plugins/telescope.lua
+++ b/lua/plugins/telescope.lua
@@ -3,6 +3,13 @@ return {
branch = '0.1.x',
dependencies = {
'nvim-lua/plenary.nvim',
+ {
+ 'nvim-telescope/telescope-fzf-native.nvim',
+ build = 'make',
+ cond = function()
+ return vim.fn.executable 'make' == 1
+ end,
+ }
},
opts = {
defaults = {
@@ -14,23 +21,25 @@ return {
},
},
},
- -- Best place to key keymaps in this file
config = function()
- vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
- vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
+ -- Load fzf if available
+ pcall(require('telescope').load_extension, 'fzf')
+ local ts_builtin = require('telescope.builtin')
+
+ vim.keymap.set('n', '<leader>?', ts_builtin.oldfiles, { desc = '[?] Find recently opened files' })
+ vim.keymap.set('n', '<leader><space>', ts_builtin.buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
- require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
+ ts_builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
- vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
- vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
- vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
- vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
- vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
- vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
- -- Other keybinds present for the LSP currently at init.lua
+ vim.keymap.set('n', '<leader>gf', ts_builtin.git_files, { desc = 'Search [G]it [F]iles' })
+ vim.keymap.set('n', '<leader>sf', ts_builtin.find_files, { desc = '[S]earch [F]iles' })
+ vim.keymap.set('n', '<leader>sh', ts_builtin.help_tags, { desc = '[S]earch [H]elp' })
+ vim.keymap.set('n', '<leader>sw', ts_builtin.grep_string, { desc = '[S]earch current [W]ord' })
+ vim.keymap.set('n', '<leader>sg', ts_builtin.live_grep, { desc = '[S]earch by [G]rep' })
+ vim.keymap.set('n', '<leader>sd', ts_builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
end,
}