diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 91c83ce..c9a7b62 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -12,4 +12,4 @@ require("lazy").setup("plugins", { notify = false, }, }) -require("config.lsp") +require("lsp") diff --git a/.config/nvim/lua/config/autocmd.lua b/.config/nvim/lua/config/autocmd.lua index d699f92..f787cfa 100644 --- a/.config/nvim/lua/config/autocmd.lua +++ b/.config/nvim/lua/config/autocmd.lua @@ -1,3 +1,4 @@ +-- Set proper tabstop for go vim.api.nvim_create_autocmd('FileType', { pattern = "go", command = "setlocal tabstop=4", diff --git a/.config/nvim/lua/config/lsp/init.lua b/.config/nvim/lua/config/lsp/init.lua deleted file mode 100644 index 8b34a94..0000000 --- a/.config/nvim/lua/config/lsp/init.lua +++ /dev/null @@ -1,73 +0,0 @@ -require('mason').setup() -require('mason-lspconfig').setup() - -local mason_lspconfig = require('mason-lspconfig') - -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('rn', vim.lsp.buf.rename, '[R]e[n]ame') - nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') - - nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') - nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') - nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') - nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') - nmap("i", vim.diagnostic.open_float) - - nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - -- nmap('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('', 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') - -- require("config.lsp.keybinds").init_keymap(bufnr) - - vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - vim.lsp.buf.format() - end, { desc = 'Format current buffer with LSP' }) -end - -local servers = { - ansiblels = {}, - clangd = {}, - pyright = {}, - lua_ls = require("config.lsp.lua_ls"), - gopls = {}, - rust_analyzer = {}, - cmake = {}, - bashls = {}, - hls = {} -} - -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) - -mason_lspconfig.setup({ - ensure_installed = vim.tbl_keys(servers), -}) - -mason_lspconfig.setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - capabilities = capabilities, - on_attach = on_attach, - settings = servers[server_name], - filetypes = (servers[server_name] or {}).filetypes, - } - end, -} diff --git a/.config/nvim/lua/config/lsp/lua_ls.lua b/.config/nvim/lua/config/lsp/lua_ls.lua deleted file mode 100644 index f42efb5..0000000 --- a/.config/nvim/lua/config/lsp/lua_ls.lua +++ /dev/null @@ -1,8 +0,0 @@ -require('neodev').setup() - -return { - Lua = { - workspace = { checkThirdParty = false }, - telemetry = { enable = false }, - }, -} diff --git a/.config/nvim/lua/config/mappings.lua b/.config/nvim/lua/config/mappings.lua index a710a01..a1f6a0f 100644 --- a/.config/nvim/lua/config/mappings.lua +++ b/.config/nvim/lua/config/mappings.lua @@ -6,9 +6,6 @@ map({ 'n', 'v' }, 'H', '') map({ 'n', 'v' }, 'L', '') map({ 'n', 'v' }, '', '') --- Yes... -map({ 'n', 'v' }, 'q:', ':q') - -- Movement between buffers map({ 'n', 'v' }, '', ':bp', { silent = true }) map({ 'n', 'v' }, '', ':bn', { silent = true }) @@ -21,8 +18,7 @@ map({ 'n', 'v' }, 'j', 'v:count == 0 ? "gj" : "j"', { expr = true, silent = true map('n', '', function() require('utils.close_buffer').close_buffer() end) -- Copy and paste from clipboard -map('n', 'y', '"+yy') -map('v', 'y', '"+y') +map({ 'n', 'v' }, 'y', '"+y') map({ 'n', 'v' }, 'p', '"+p') map({ 'n', 'v' }, 'P', '"+P') @@ -35,7 +31,5 @@ map({ 'n', 'v' }, 'M', '6+') -- Remap to remove last word map('i', '', '') -map('n', 'F', function() vim.lsp.buf.format() end) - map('n', '', ':m-2', { silent = true }) map('n', '', ':m+1', { silent = true }) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua index 9d3610b..d3ca167 100644 --- a/.config/nvim/lua/config/options.lua +++ b/.config/nvim/lua/config/options.lua @@ -21,7 +21,7 @@ vim.o.softtabstop = -1 -- Save undo history vim.o.undofile = true --- Case-insensitive searching UNLESS \C or capital in search +-- Case-insensitive searching vim.o.ignorecase = true vim.o.smartcase = true @@ -32,8 +32,5 @@ vim.wo.signcolumn = 'yes' vim.o.updatetime = 250 vim.o.timeoutlen = 300 --- Enable TrueColor -vim.o.termguicolors = true - vim.o.splitbelow = true vim.o.splitright = true diff --git a/.config/nvim/lua/lsp/init.lua b/.config/nvim/lua/lsp/init.lua new file mode 100644 index 0000000..71886a0 --- /dev/null +++ b/.config/nvim/lua/lsp/init.lua @@ -0,0 +1,55 @@ +local servers = { + clangd = {}, + pyright = {}, + lua_ls = require('lsp.lua_ls'), + gopls = {}, + rust_analyzer = {}, + bashls = {}, + hls = {}, +} + +vim.lsp.set_log_level("debug") + +local on_attach = function(_, bufnr) + local nmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + nmap('rn', vim.lsp.buf.rename) + nmap('ca', vim.lsp.buf.code_action) + + nmap('gd', require('telescope.builtin').lsp_definitions) + nmap('gr', require('telescope.builtin').lsp_references) + nmap('gt', require('telescope.builtin').lsp_type_definitions) + + nmap('sd', require('telescope.builtin').diagnostics) + nmap('ds', require('telescope.builtin').lsp_document_symbols) + nmap('as', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + nmap("i", vim.diagnostic.open_float) + nmap('K', vim.lsp.buf.hover) + nmap('', vim.lsp.buf.signature_help) + + nmap('gI', require('telescope.builtin').lsp_implementations) + nmap('gD', vim.lsp.buf.declaration) + + nmap('F', vim.lsp.buf.format) +end + +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local lspconfig = require('lspconfig') + +for server_name, config in pairs(servers) do + lspconfig[server_name].setup({ + capabilities = capabilities, + on_attach = on_attach, + settings = { [server_name] = config }, + }) +end + +for server_name, config in pairs(servers) do + lspconfig[server_name].setup(vim.tbl_deep_extend('keep', { + capabilities = capabilities, + on_attach = on_attach, + }, config)) +end diff --git a/.config/nvim/lua/lsp/lua_ls.lua b/.config/nvim/lua/lsp/lua_ls.lua new file mode 100644 index 0000000..65af628 --- /dev/null +++ b/.config/nvim/lua/lsp/lua_ls.lua @@ -0,0 +1,10 @@ +return { + settings = { + ['lua_ls'] = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } + } +} diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua index d198f1f..f619f9c 100644 --- a/.config/nvim/lua/plugins/init.lua +++ b/.config/nvim/lua/plugins/init.lua @@ -1,24 +1,11 @@ return { 'rcarriga/nvim-notify', - { 'kylechui/nvim-surround', version = '*', event = 'VeryLazy', opts = {} }, - { 'akinsho/bufferline.nvim', config = {} }, + 'stefandtw/quickfix-reflector.vim', + { 'akinsho/bufferline.nvim', config = {}, dependencies = { 'navarasu/onedark.nvim' } }, { 'ethanholz/nvim-lastplace', config = {} }, - { 'norcalli/nvim-colorizer.lua', opts = {}, config = function () - require('colorizer').setup() - end }, - { 'nvim-treesitter/nvim-treesitter-context', dependencies = { 'nvim-treesitter/nvim-treesitter' }}, + { 'kylechui/nvim-surround', version = '*', event = 'VeryLazy', opts = {} }, + { 'lukas-reineke/indent-blankline.nvim', main = 'ibl', opts = {} }, + { 'norcalli/nvim-colorizer.lua', opts = {}, dependencies = { 'navarasu/onedark.nvim' } }, { 'wakatime/vim-wakatime', event = 'VeryLazy' }, - - { 'lukas-reineke/indent-blankline.nvim', - main = 'ibl', - opts = {}, - dependencies = { 'olimorris/onedarkpro.nvim' } - }, - - { 'neovim/nvim-lspconfig', dependencies = { - 'folke/neodev.nvim', - 'williamboman/mason-lspconfig.nvim', - 'williamboman/mason.nvim', - { 'j-hui/fidget.nvim', opts = {} }, - }}, + { 'williamboman/mason.nvim', opts = {} }, } diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..2efbb98 --- /dev/null +++ b/.config/nvim/lua/plugins/lspconfig.lua @@ -0,0 +1,8 @@ +return { + 'neovim/nvim-lspconfig', + dependencies = { + { 'williamboman/mason.nvim', opts = {} }, + { 'folke/neodev.nvim', opts = {}}, + { 'j-hui/fidget.nvim', opts = {} }, + } +} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index fbc1d13..ff22e71 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -7,12 +7,16 @@ return { }, config = function() + local actions = require('telescope.actions') require('telescope').setup { defaults = { mappings = { i = { [''] = false, [''] = false, + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + [""] = actions.smart_send_to_qflist + actions.open_qflist, }, }, }, @@ -20,7 +24,6 @@ return { pcall(require('telescope').load_extension, 'fzf') - vim.keymap.set('n', '/', function() require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_ivy { winblend = 10, @@ -28,14 +31,10 @@ return { }) end) - vim.keymap.set('n', '?', require('telescope.builtin').live_grep) + vim.keymap.set('n', '?', require('telescope.builtin').live_grep) vim.keymap.set('n', 'of', require('telescope.builtin').oldfiles) vim.keymap.set('n', 'af', require('telescope.builtin').git_files) vim.keymap.set('n', 'sf', require('telescope.builtin').find_files) - vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags) vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string) - vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics) - vim.keymap.set('n', 'sr', require('telescope.builtin').resume) - vim.keymap.set('n', 'sm', require('telescope.builtin').treesitter) end } diff --git a/.config/nvim/lua/plugins/tree.lua b/.config/nvim/lua/plugins/tree.lua index e02b9f7..d21005c 100644 --- a/.config/nvim/lua/plugins/tree.lua +++ b/.config/nvim/lua/plugins/tree.lua @@ -1,6 +1,6 @@ return { 'nvim-tree/nvim-tree.lua', - dependencies = { 'nvim-tree/nvim-web-devicons' }, + dependencies = { 'nvim-tree/nvim-web-devicons', 'navarasu/onedark.nvim' }, config = function() vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index 83d0571..08714c8 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -1,9 +1,13 @@ return { 'nvim-treesitter/nvim-treesitter', - dependencies = { 'nvim-treesitter/nvim-treesitter-textobjects', }, + dependencies = { + 'nvim-treesitter/nvim-treesitter-textobjects', + 'nvim-treesitter/nvim-treesitter-context' + }, build = ':TSUpdate', config = function() vim.defer_fn(function() + -- - @diagnostic disable-next-line: missing-fields require('nvim-treesitter.configs').setup({ auto_install = true, highlight = { enable = true }, diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..76c74c8 --- /dev/null +++ b/.config/nvim/lua/plugins/trouble.lua @@ -0,0 +1,13 @@ +return { + "folke/trouble.nvim", + opts = {}, + cmd = "Trouble", + keys = { + { "xx", "Trouble diagnostics toggle" }, -- ?? + { "xX", "Trouble diagnostics toggle filter.buf=0" }, -- useless? + { "cs", "Trouble symbols toggle focus=false" }, -- nice as well + { "cl", "Trouble lsp toggle focus=false win.position=right" }, -- nicee + { "xL", "Trouble loclist toggle" }, -- ?? + { "xQ", "Trouble qflist toggle" }, -- ?? + }, +}