From 50c182d827446e54a6bbad20ac00675c2ba02ceb Mon Sep 17 00:00:00 2001 From: b12f Date: Mon, 19 Aug 2024 00:23:24 +0200 Subject: [PATCH] terminal-life/nvim: lint vim files, add recent command telescope --- .editorconfig | 7 +- modules/terminal-life/nvim/cmp.vim | 78 +++++++-------- modules/terminal-life/nvim/lsp.vim | 128 ++++++++++++------------- modules/terminal-life/nvim/plugins.vim | 18 ++-- 4 files changed, 119 insertions(+), 112 deletions(-) diff --git a/.editorconfig b/.editorconfig index c53484c..f1969cc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,7 +6,8 @@ end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true charset = utf-8 -indent_style = tab +indent_style = space +indent_size = 2 # Ignore diffs/patches [*.{diff,patch}] @@ -19,8 +20,8 @@ indent_style = unset indent_size = unset [{.*,secrets}/**] -end_of_line = unset -insert_final_newline = unset +end_of_line = false +insert_final_newline = false trim_trailing_whitespace = unset charset = unset indent_style = unset diff --git a/modules/terminal-life/nvim/cmp.vim b/modules/terminal-life/nvim/cmp.vim index b462c5f..fc44123 100644 --- a/modules/terminal-life/nvim/cmp.vim +++ b/modules/terminal-life/nvim/cmp.vim @@ -4,45 +4,45 @@ local luasnip = require 'luasnip' local cmp = require 'cmp' cmp.setup { - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - mapping = { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.close(), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, - [''] = function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - }, + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, + [''] = function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, } EOF diff --git a/modules/terminal-life/nvim/lsp.vim b/modules/terminal-life/nvim/lsp.vim index 37b07a7..8d806dd 100644 --- a/modules/terminal-life/nvim/lsp.vim +++ b/modules/terminal-life/nvim/lsp.vim @@ -23,39 +23,39 @@ vim.api.nvim_set_keymap('n', 'dq', 'lua vim.diagnostic.setloclist() vim.api.nvim_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) local on_attach = function(client, bufnr) - -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + -- Enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - -- Mappings (available if LSP is configured and attached to buffer) - -- See `:help vim.lsp.*` for documentation on any of the below functions - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + -- Mappings (available if LSP is configured and attached to buffer) + -- See `:help vim.lsp.*` for documentation on any of the below functions + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - -- Show diagnostic popup on cursor hold - vim.api.nvim_create_autocmd("CursorHold", { - buffer = bufnr, - callback = function() - local opts = { - focusable = false, - close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, - border = 'rounded', - source = 'always', - prefix = ' ', - scope = 'cursor', - } - vim.diagnostic.open_float(nil, opts) - end - }) + -- Show diagnostic popup on cursor hold + vim.api.nvim_create_autocmd("CursorHold", { + buffer = bufnr, + callback = function() + local opts = { + focusable = false, + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + border = 'rounded', + source = 'always', + prefix = ' ', + scope = 'cursor', + } + vim.diagnostic.open_float(nil, opts) + end + }) end @@ -65,23 +65,23 @@ local CAPABILITIES = require('cmp_nvim_lsp').default_capabilities() --- Event handlers local HANDLERS = { - -- TODO: replace with vim.lsp.protocol.Methods - ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, FLOAT_CONFIG), - ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, FLOAT_CONFIG), + -- TODO: replace with vim.lsp.protocol.Methods + ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, FLOAT_CONFIG), + ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, FLOAT_CONFIG), } -- vscode HTML lsp needs this https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#html CAPABILITIES.textDocument.completion.completionItem.snippetSupport = true local function setup(lsp, config) - if config == nil then - config = {} - end + if config == nil then + config = {} + end - config.capabilities = CAPABILITIES - config.handlers = HANDLERS - config.on_attach = on_attach - lspconfig[lsp].setup(config) + config.capabilities = CAPABILITIES + config.handlers = HANDLERS + config.on_attach = on_attach + lspconfig[lsp].setup(config) end setup('nixd') @@ -96,28 +96,28 @@ setup('svelte') setup('html') setup('yamlls') setup('jsonls', { - json = { - schemas = require('schemastore').json.schemas(), - validate = { - enable = true - } - } + json = { + schemas = require('schemastore').json.schemas(), + validate = { + enable = true + } + } }) setup('gopls', { - settings = { - gopls = { semanticTokens = true } - } + settings = { + gopls = { semanticTokens = true } + } }) setup('phpactor') setup('pylsp') setup('solargraph') -- ruby setup('rust_analyzer', { - settings = { - ['rust-analyzer'] = { - checkOnSave = { extraArgs = { "--target-dir", "/tmp/rust-analyzer-check" } }, - diagnostics = { disabled = { 'inactive-code' } }, - }, - } + settings = { + ['rust-analyzer'] = { + checkOnSave = { extraArgs = { "--target-dir", "/tmp/rust-analyzer-check" } }, + diagnostics = { disabled = { 'inactive-code' } }, + }, + } }) setup('sqlls') setup('salt_ls') @@ -128,22 +128,22 @@ setup('terraformls') -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#denols vim.g.markdown_fenced_languages = { - "ts=typescript" + "ts=typescript" } -- Configure diagnostics vim.diagnostic.config({ - virtual_text = false, - signs = true, - underline = true, - update_in_insert = false, - severity_sort = false, + virtual_text = false, + signs = true, + underline = true, + update_in_insert = false, + severity_sort = false, }) -- Change diagnostic symbols in the sign column (gutter) local signs = { Error = "x ", Warn = "! ", Hint = "? ", Info = "i " } for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end EOF diff --git a/modules/terminal-life/nvim/plugins.vim b/modules/terminal-life/nvim/plugins.vim index dd2d4a1..b0ff194 100644 --- a/modules/terminal-life/nvim/plugins.vim +++ b/modules/terminal-life/nvim/plugins.vim @@ -54,21 +54,26 @@ telescope.setup{ defaults = { mappings = { n = { - ["k"] = actions.move_selection_next, - ["i"] = actions.move_selection_previous, - ["I"] = actions.move_to_top, - ["K"] = actions.move_to_bottom, - [""] = actions.close, + ["k"] = actions.move_selection_next, + ["i"] = actions.move_selection_previous, + ["I"] = actions.move_to_top, + ["K"] = actions.move_to_bottom, + [""] = actions.close, }, }, }, + pickers = { + find_files = { + -- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d. + find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" }, + }, + }, extensions = { fzf = { fuzzy = true, -- false will only do exact matching override_generic_sorter = true, -- override the generic sorter override_file_sorter = true, -- override the file sorter case_mode = "smart_case", -- or "ignore_case" or "respect_case" - -- the default case_mode is "smart_case" } } } @@ -80,6 +85,7 @@ vim.keymap.set('n', 'ff', builtin.find_files, {}) vim.keymap.set('n', 'f/', builtin.live_grep, {}) vim.keymap.set('n', 'f?', builtin.builtin, {}) vim.keymap.set('n', 'fb', builtin.buffers, {}) +vim.keymap.set('n', 'fr', builtin.command_history, {}) vim.keymap.set('n', 'fc', builtin.commands, {}) vim.keymap.set('n', 'ft', builtin.treesitter, {}) EOF