From bd3784310255266cf979763d391ae10af176dadc Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sat, 18 Dec 2021 10:33:15 +0100 Subject: [PATCH 1/7] Enable extensions for pass --- bootstrap/packages.txt | 2 ++ pass/.config/sh/env.d/pass-ssh.sh | 4 ++++ pass/.config/sh/env.d/pass-xdg.sh | 1 + 3 files changed, 7 insertions(+) create mode 100644 pass/.config/sh/env.d/pass-ssh.sh diff --git a/bootstrap/packages.txt b/bootstrap/packages.txt index 674b898..59a2787 100644 --- a/bootstrap/packages.txt +++ b/bootstrap/packages.txt @@ -127,6 +127,8 @@ pandoc-bin parallel paru-bin pass +pass-ssh +pass-coffin patch pavolume pdfjs diff --git a/pass/.config/sh/env.d/pass-ssh.sh b/pass/.config/sh/env.d/pass-ssh.sh new file mode 100644 index 0000000..bfe5559 --- /dev/null +++ b/pass/.config/sh/env.d/pass-ssh.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +# Settings for pass-ssh extension + +alias pass-ssh='pass ssh --fzf -d ~/.ssh/keys --ssh-t ed25519' diff --git a/pass/.config/sh/env.d/pass-xdg.sh b/pass/.config/sh/env.d/pass-xdg.sh index e9f38f6..ea8fa7e 100644 --- a/pass/.config/sh/env.d/pass-xdg.sh +++ b/pass/.config/sh/env.d/pass-xdg.sh @@ -3,3 +3,4 @@ # usually password store will be found in ~/.local/share/pass export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass" +export PASSWORD_STORE_ENABLE_EXTENSIONS=true From 8b3b49275c0c8de62b49579ca014e76e9e090b87 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sat, 18 Dec 2021 10:34:07 +0100 Subject: [PATCH 2/7] Add coffin automation to pass-pick --- pass/.local/bin/pass-pick | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/pass/.local/bin/pass-pick b/pass/.local/bin/pass-pick index d494fdf..b6ca935 100755 --- a/pass/.local/bin/pass-pick +++ b/pass/.local/bin/pass-pick @@ -109,6 +109,9 @@ set_defaults() { AUTOFILL_CHAIN="${PP_AUTOENTRY_CHAIN:-$(get_config AUTOFILL_CHAIN 'username :tab password')}" AUTOFILL_DELAY="${PP_AUTOENTRY_DELAY:-$(get_config AUTOFILL_DELAY 30)}" PASS_USERNAME_FIELD="${PP_PASS_USERNAME_FIELD:-$(get_config PASS_USERNAME_FIELD 'username user login')}" + + PASS_COFFIN_OPEN_TIME="${PP_PASS_COFFIN_OPEN_TIME:-$(get_config PASS_COFFIN_OPEN_TIME 0)}" + PASS_COFFIN_LOCATION="${PP_PASS_COFFIN_LOCATION:-$(get_config PASS_COFFIN_LOCATION)}" } # exit on escape pressed @@ -311,6 +314,26 @@ entrymenu() { esac } +open_coffin() { + ## there's a closed coffin in our directory + if [ -f "${PASS_COFFIN_LOCATION:-${PASSWORD_STORE_DIR:-~/.password-store}/.coffin/coffin.tar.gpg}" ]; then + if [ "$PASS_COFFIN_OPEN_TIME" -eq 0 ]; then + coffin_should_close_instantly=true + pass open -t 1h # we still set a maximum time limit just to hedge against failures + else + pass open -t "${PASS_COFFIN_OPEN_TIME:-3h}" + fi + fi +} + +# make sure we remember to close the coffin if the program terminates +close_coffin() { + if [ "$coffin_should_close_instantly" = true ]; then + pass close + fi +} +trap close_coffin SIGINT SIGTERM ERR EXIT + main() { local autoentry_chain="${AUTOFILL_CHAIN}" local k_autofill="${KEY_AUTOFILL}" @@ -320,6 +343,8 @@ main() { local k_clip_pass="${KEY_CLIP_PASS}" local k_submenu="${KEY_ENTRY_OPEN}" + open_coffin + entry="$( list_passwords | _picker -kb-accept-entry "" \ @@ -338,29 +363,25 @@ main() { case "$exit_value" in "0" | "10") autofill "$entry" "$autoentry_chain" - exit 0 ;; "11") clip_username "$entry" - exit 0 ;; "12") clip_password "$entry" - exit ;; "13") autofill "$entry" "username" - exit ;; "14") autofill "$entry" "password" - exit ;; "15") entrymenu "$entry" - exit ;; esac + + exit 0 } set_defaults From ff0ddb2b2d0fef04b4cfba15ebc718244a3ddb1c Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 3 Jan 2022 17:41:05 +0100 Subject: [PATCH 3/7] nvim: Switch galaxyline for lualine Recently, galaxyline created some troubles in the setup. Lualine is much much easier to configure and, since I don't need some of the more advanced features of galaxyline anyway, I can just use the simple setup it offers. If ever those features become necessary again I can presumably just reintroduce them based on the old galaxyline setup that got removed in this commit. --- nvim/.config/nvim/lua/plug/_galaxyline.lua | 244 --------------------- nvim/.config/nvim/lua/plug/_lualine.lua | 28 +++ nvim/.config/nvim/lua/plugins.lua | 27 ++- 3 files changed, 43 insertions(+), 256 deletions(-) delete mode 100644 nvim/.config/nvim/lua/plug/_galaxyline.lua create mode 100644 nvim/.config/nvim/lua/plug/_lualine.lua diff --git a/nvim/.config/nvim/lua/plug/_galaxyline.lua b/nvim/.config/nvim/lua/plug/_galaxyline.lua deleted file mode 100644 index 7aeef64..0000000 --- a/nvim/.config/nvim/lua/plug/_galaxyline.lua +++ /dev/null @@ -1,244 +0,0 @@ --- set up statusline -local gl = require 'galaxyline' -local gls = gl.section -local fileinfo = require 'galaxyline.provider_fileinfo' -local devicons = require 'nvim-web-devicons' - -local mode_colors = { - normal = '#' .. '98c379', - insert = '#' .. '61afef', - replace = '#' .. 'e06c75', - visual = '#' .. 'e5c07b', - command = '#' .. 'd19a66', - terminal = '#' .. '56b6c2' -} - --- create icons from unicode -local function u(code) - if type(code) == 'string' then code = tonumber('0x' .. code) end - local c = string.char - if code <= 0x7f then return c(code) end - local t = {} - if code <= 0x07ff then - t[1] = c(bit.bor(0xc0, bit.rshift(code, 6))) - t[2] = c(bit.bor(0x80, bit.band(code, 0x3f))) - elseif code <= 0xffff then - t[1] = c(bit.bor(0xe0, bit.rshift(code, 12))) - t[2] = c(bit.bor(0x80, bit.band(bit.rshift(code, 6), 0x3f))) - t[3] = c(bit.bor(0x80, bit.band(code, 0x3f))) - else - t[1] = c(bit.bor(0xf0, bit.rshift(code, 18))) - t[2] = c(bit.bor(0x80, bit.band(bit.rshift(code, 12), 0x3f))) - t[3] = c(bit.bor(0x80, bit.band(bit.rshift(code, 6), 0x3f))) - t[4] = c(bit.bor(0x80, bit.band(code, 0x3f))) - end - return table.concat(t) -end - -local mode_map = { - ['n'] = {'NORMAL', mode_colors.normal}, - ['i'] = {'INSERT', mode_colors.insert}, - ['R'] = {'REPLACE', mode_colors.replace}, - ['v'] = {'VISUAL', mode_colors.visual}, - ['V'] = {'V-LINE', mode_colors.visual}, - ['c'] = {'COMMAND', mode_colors.command}, - ['s'] = {'SELECT', mode_colors.visual}, - ['S'] = {'S-LINE', mode_colors.visual}, - ['t'] = {'TERMINAL', mode_colors.terminal}, - [''] = {'V-BLOCK', mode_colors.visual}, - [''] = {'S-BLOCK', mode_colors.visual}, - ['Rv'] = {'VIRTUAL'}, - ['rm'] = {'--MORE'} -} - -local sep = { - right_filled = u 'e0b2', - left_filled = u 'e0b0', - right = u 'e0b3', - left = u 'e0b1' -} - -local icons = { - locker = u 'f023', - unsaved = u 'f693', - lsp_warn = u 'f071', - lsp_error = u 'f46e' -} - -local function mode_label() return mode_map[vim.fn.mode()][1] or 'N/A' end -local function mode_hl() return mode_map[vim.fn.mode()][2] or '#ff0000' end - -local function highlight(group, fg, bg, gui) - local cmd = string.format('highlight %s guifg=%s guibg=%s', group, fg, bg) - if gui ~= nil then cmd = cmd .. ' gui=' .. gui end - vim.cmd(cmd) -end - -local function buffer_not_empty() - if vim.fn.empty(vim.fn.expand '%:t') ~= 1 then return true end - return false -end - -local function wide_enough() - local squeeze_width = vim.fn.winwidth(0) - if squeeze_width > 80 then return true end - return false -end - -gl.short_line_list = {'NvimTree', 'vista', 'dbui'} - -gls.left = { - { - ViMode = { - provider = function() - local modehl = mode_hl() - highlight('GalaxyViMode', '000000', modehl, 'bold') - highlight('GalaxyViModeInv', modehl, '000000', 'bold') - return string.format(' %s ', mode_label()) - end, - separator = sep.left_filled, - separator_highlight = 'GalaxyViModeInv' - } - }, { - FileName = { - provider = function() - if not buffer_not_empty() then return '' end - local fname - if wide_enough() then - fname = vim.fn.fnamemodify(vim.fn.expand '%', ':~:.') - else - fname = vim.fn.expand '%:t' - end - if #fname == 0 then return '' end - if vim.bo.readonly then - fname = fname .. ' ' .. icons.locker - end - if vim.bo.modified then - fname = fname .. ' ' .. icons.unsaved - end - return ' ' .. fname .. ' ' - end, - highlight = 'Normal', - separator = sep.left, - separator_highlight = 'GalaxyViModeInv' - } - }, { - -- I am unsure how lua specifies order in these, or are tables unordered? - -- anyway, without the weird section in between add ALWAYS appears to the left - -- of the Branch display - DiffAdd = { - provider = 'DiffAdd', - condition = wide_enough, - icon = '+', - highlight = 'DiffAdded' - }, - WithoutThisAddedComesBeforeBranch = { - provider = function() return '' end - }, - DiffModified = { - provider = 'DiffModified', - condition = wide_enough, - icon = '~', - highlight = 'DiffLine' - }, - DiffRemove = { - provider = 'DiffRemove', - condition = wide_enough, - icon = '-', - highlight = 'DiffRemoved', - separator = sep.left, - separator_highlight = 'GalaxyViModeInv' - }, - GitBranch = { - provider = { - function() return '  ' end, 'GitBranch', - function() return ' ' end - }, - condition = require('galaxyline.condition').check_git_workspace and - wide_enough, - highlight = 'NonText' - } - } -} - -gls.right = { - { - LspStatus = { - provider = function() - local connected = - not vim.tbl_isempty(vim.lsp.buf_get_clients(0)) - if connected then - return ' ' .. u 'f817' .. ' ' - else - return '' - end - end, - highlight = 'DiffAdded', - separator = sep.right, - separator_highlight = 'GalaxyViModeInv' - } - }, { - DiagnosticWarn = { - provider = function() - local n = vim.lsp.diagnostic.get_count(0, 'Warning') - if n == 0 then return '' end - return string.format(' %s %d ', icons.lsp_warn, n) - end, - highlight = 'LspDiagnosticsDefaultWarning' - }, - DiagnosticError = { - provider = function() - local n = vim.lsp.diagnostic.get_count(0, 'Error') - if n == 0 then return '' end - return string.format(' %s %d ', icons.lsp_error, n) - end, - highlight = 'LspDiagnosticsDefaultError' - } - }, { - FileIcon = { - provider = function() - local fname, ext = vim.fn.expand '%:t', vim.fn.expand '%:e' - local icon, _ = devicons.get_icon(fname, ext) - if icon == nil then return '' end - return ' ' .. icon .. ' ' - end, - separator = sep.right, - highlight = 'Normal', - separator_highlight = 'GalaxyViModeInv' - }, - FileType = { - provider = function() - -- if not buffer_not_empty() then - -- return '' - -- end - return string.format(' %s ', vim.bo.filetype) - end, - -- condition = buffer_not_empty, - highlight = 'Normal' - } - }, { - PositionInfo = { - provider = { - function() - return string.format('%s:%s', vim.fn.line('.'), - vim.fn.col('.')) - end - }, - highlight = 'GalaxyViMode', - separator = sep.right_filled, - separator_highlight = 'GalaxyViModeInv' - }, - PercentInfo = { - provider = fileinfo.current_line_percent, - highlight = 'GalaxyViMode', - separator = sep.right, - separator_highlight = 'GalaxyViMode' - } - } -} -for k, v in pairs(gls.left) do gls.short_line_left[k] = v end -table.remove(gls.short_line_left, 1) - -for k, v in pairs(gls.right) do gls.short_line_right[k] = v end -table.remove(gls.short_line_right) -table.remove(gls.short_line_right) diff --git a/nvim/.config/nvim/lua/plug/_lualine.lua b/nvim/.config/nvim/lua/plug/_lualine.lua new file mode 100644 index 0000000..5c36f14 --- /dev/null +++ b/nvim/.config/nvim/lua/plug/_lualine.lua @@ -0,0 +1,28 @@ +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'auto', + component_separators = {left = '', right = ''}, + section_separators = {left = '', right = ''}, + disabled_filetypes = {}, + always_divide_middle = true + }, + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch', 'diff', 'diagnostics'}, + lualine_c = {'filename'}, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {'progress', 'location'}, + lualine_z = {'hostname'} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {'branch', 'diff'}, + lualine_c = {'filename'}, + lualine_x = {}, + lualine_y = {'location'}, + lualine_z = {} + }, + tabline = {}, + extensions = {'quickfix', 'toggleterm'} +} diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index de16ac9..0178df4 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -36,12 +36,11 @@ require("packer").startup(function() 'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter requires = {'nvim-lua/plenary.nvim'}, tag = 'release', - config = function() require('gitsigns').setup{ - keymaps = { - ['n ]c'] = nil, - ['n [c'] = nil, + config = function() + require('gitsigns').setup { + keymaps = {['n ]c'] = nil, ['n [c'] = nil} } - } end, + end, event = "BufRead" } use { @@ -101,9 +100,9 @@ require("packer").startup(function() -- statusline use { - 'glepnir/galaxyline.nvim', + 'nvim-lualine/lualine.nvim', requires = {'kyazdani42/nvim-web-devicons', opt = true}, - config = function() require('plug._galaxyline') end + config = function() require('plug._lualine') end } -- writing @@ -116,7 +115,7 @@ require("packer").startup(function() require("true-zen").setup({ integrations = { gitsigns = true, - galaxyline = true, + lualine = true, tmux = {global = false}, limelight = true } @@ -135,17 +134,21 @@ require("packer").startup(function() ft = "python", config = function() vim.g.slime_target = 'tmux' - vim.g.slime_default_config = {socket_name = "default", target_pane = "{last}"} + vim.g.slime_default_config = { + socket_name = "default", + target_pane = "{last}" + } vim.g.slime_python_ipython = 1 vim.g.slime_no_mappings = 1 - end, + end } - use { 'hanschen/vim-ipython-cell', -- send code 'cells' to REPL + use { + 'hanschen/vim-ipython-cell', -- send code 'cells' to REPL ft = "python", config = function() vim.g.ipython_cell_highlight_cells_ft = {'python'} vim.g.ipython_cell_insert_tag = "## Cell" - end, + end } -- From d5cd91d1072cda1d2b0ac35723c4de6b470e6e20 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 3 Jan 2022 18:11:23 +0100 Subject: [PATCH 4/7] nvim: Add experimental navigator lsp configurator --- nvim/.config/nvim/lua/plug/_lsp.lua | 196 ++++++++-------------------- nvim/.config/nvim/lua/plugins.lua | 41 +++--- 2 files changed, 79 insertions(+), 158 deletions(-) diff --git a/nvim/.config/nvim/lua/plug/_lsp.lua b/nvim/.config/nvim/lua/plug/_lsp.lua index f2a9f72..c54a510 100644 --- a/nvim/.config/nvim/lua/plug/_lsp.lua +++ b/nvim/.config/nvim/lua/plug/_lsp.lua @@ -1,12 +1,6 @@ -local api = vim.api - -local saga = require 'lspsaga' -local lspcfg = require 'lspconfig' local cmp = require 'cmp' local lspkind = require 'lspkind' -require"lsp_signature".setup() - local has_words_before = function() local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and @@ -20,12 +14,6 @@ local feedkey = function(key, mode) mode, true) end --- Enable the following language servers -local servers = { - 'bashls', 'gopls', 'texlab', 'pyright', 'rust_analyzer', 'tsserver', 'vimls' - -- sumneko_lua further down, needs more setup -} - vim.o.completeopt = "menu,menuone,noselect" -- completion items @@ -93,141 +81,71 @@ cmp.setup.cmdline(':', { sources = cmp.config.sources({{name = 'path'}}, {{name = 'cmdline'}}) }) --- Setup lspconfig. -local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp - .protocol - .make_client_capabilities()) - -local on_attach = function(_, _) - -- Keybindings for LSPs - -- Note these are in on_attach so that they don't override bindings in a non-LSP setting - api.nvim_set_keymap("n", "gh", - "lua require 'lspsaga.provider'.lsp_finder()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "gd", - "lua require'lspsaga.provider'.preview_definition()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "gE", - "lua require 'lspsaga.codeaction'.code_action()", - {noremap = true, silent = true}) - api.nvim_set_keymap("v", "gE", - "'<,'>lua require 'lspsaga.codeaction'.range_code_action()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "K", - "lua require('lspsaga.hover').render_hover_doc()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "gK", - "lua require('lspsaga.signaturehelp').signature_help()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "gr", - "lua require('lspsaga.rename').rename()", - {noremap = true, silent = true}) - - api.nvim_set_keymap("n", "ge", - "lua require('lspsaga.diagnostic').show_line_diagnostics()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "]e", - "lua require('lspsaga.diagnostic').lsp_jump_diagnostic_next()", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "[e", - "lua require('lspsaga.diagnostic').lsp_jump_diagnostic_prev()", - {noremap = true, silent = true}) - - api.nvim_set_keymap("n", "C-f", - "lua require('lspsaga.action').smart_scroll_with_saga(1)", - {noremap = true, silent = true}) - api.nvim_set_keymap("n", "C-b", - "lua require('lspsaga.action').smart_scroll_with_saga(-1)", - {noremap = true, silent = true}) - - require("lspsaga").init_lsp_saga { - error_sign = 'X', - warn_sign = '⚠️', - hint_sign = '⚡', - infor_sign = 'ℹ️', - -- code_action_icon = '●', - finder_definition_icon = '📖 ', - finder_reference_icon = '🔖 ', - definition_preview_icon = '📖 ', - finder_action_keys = { - open = '', - split = 's', - vsplit = 'v', - quit = '', - scroll_down = '', - scroll_up = '' - }, - code_action_keys = {quit = '', exec = ''}, - rename_action_keys = {quit = '', exec = ''} - } - vim.cmd("command! LspHover lua vim.lsp.buf.hover()") - vim.cmd( - "command! LspDisable lua vim.lsp.stop_client(vim.lsp.get_active_clients())") - print('LSP ready') -end - --- set up simple servers -for _, lsp in ipairs(servers) do - lspcfg[lsp].setup {on_attach = on_attach, capabilities = capabilities} -end - -lspcfg.efm.setup { - on_attach = on_attach, - init_options = { - documentFormatting = true, - codeAction = true, - completion = true, - documentSymbol = true, - hover = true - }, - filetypes = {"sh"}, - settings = { - rootMarkers = {".git/"}, - languages = { - sh = { - { - lintCommand = 'shellcheck -f gcc -x', - lintFormats = { - '%f:%l:%c: %trror: %m', '%f:%l:%c: %tarning: %m', - '%f:%l:%c: %tote: %m' - } - }, {formatCommand = 'shfmt -ci -s -bn', formatStdin = true} - } - } - } -} +require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol + .make_client_capabilities()) -- requires the lua-language-server package to be installed -- The arch package defaults to the following directory local sumneko_root_path = "/usr/share/lua-language-server" -lspcfg.sumneko_lua.setup { - cmd = {"lua-language-server", "-E", sumneko_root_path .. "/main.lua"}, - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Setup your lua path - path = vim.split(package.path, ';') +require'navigator'.setup({ + lsp = { + servers = {'efm'}, + sumneko_lua = { + cmd = { + "lua-language-server", "-E", sumneko_root_path .. "/main.lua" }, - diagnostics = { - -- Get the language server to recognize additional globals - globals = { - 'vim', 'before_each', 'after_each', 'describe', 'it', - 'mock', 'stub' + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';') + }, + diagnostics = { + -- Get the language server to recognize additional globals + globals = { + 'vim', 'before_each', 'after_each', 'describe', + 'it', 'mock', 'stub' + } + }, + workspace = { + -- Make the server aware of additional runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + ["/usr/share/lua/5.1/busted/"] = true + } + } } + } + }, + efm = { + init_options = { + documentFormatting = true, + codeAction = true, + completion = true, + documentSymbol = true, + hover = true }, - workspace = { - -- Make the server aware of additional runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, - ["/usr/share/lua/5.1/busted/"] = true + filetypes = {"sh"}, + settings = { + rootMarkers = {".git/"}, + languages = { + sh = { + { + lintCommand = 'shellcheck -f gcc -x', + lintFormats = { + '%f:%l:%c: %trror: %m', + '%f:%l:%c: %tarning: %m', '%f:%l:%c: %tote: %m' + } + }, + {formatCommand = 'shfmt -ci -s -bn', formatStdin = true} + } } } } - }, - on_attach = on_attach -} -saga.init_lsp_saga() + } +}) +require"lsp_signature".setup() diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 0178df4..a9fac2d 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -170,29 +170,10 @@ require("packer").startup(function() use "nvim-telescope/telescope-fzy-native.nvim" use "nvim-telescope/telescope-fzf-writer.nvim" - -- lsp - use 'neovim/nvim-lspconfig' -- some commong language server configurations - use 'tami5/lspsaga.nvim' -- nice and fast ui for lsp actions WILL HAVE TO BE REPLACED SOON - use 'simrat39/symbols-outline.nvim' -- vista-like outline view for code - use 'ray-x/lsp_signature.nvim' - -- and completion - use { - 'hrsh7th/nvim-cmp', -- simple completion engine built specifically for nvim and lsp - requires = { - 'onsails/lspkind-nvim', 'andersevenrud/cmp-tmux', -- completion source from adjacent tmux panes - 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', - 'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-vsnip', - 'kdheepak/cmp-latex-symbols', 'ray-x/cmp-treesitter', - 'f3fora/cmp-spell', 'jc-doyle/cmp-pandoc-references', - 'cbarrete/completion-vcard' - } - } -- snippeting use {"hrsh7th/vim-vsnip", event = "InsertEnter"} -- snippet engine use {"rafamadriz/friendly-snippets", event = "InsertEnter"} -- many snippets - require('plug._lsp') - -- treesitter use { 'nvim-treesitter/nvim-treesitter', @@ -222,4 +203,26 @@ require("packer").startup(function() config = function() require('spellsitter').setup() end } + -- lsp + use 'neovim/nvim-lspconfig' -- some commong language server configurations + use 'simrat39/symbols-outline.nvim' -- vista-like outline view for code + use 'ray-x/lsp_signature.nvim' + use { + 'ray-x/navigator.lua', + requires = {'ray-x/guihua.lua', run = 'cd lua/fzy && make'} + } + -- and completion + use { + 'hrsh7th/nvim-cmp', -- simple completion engine built specifically for nvim and lsp + requires = { + 'onsails/lspkind-nvim', 'andersevenrud/cmp-tmux', -- completion source from adjacent tmux panes + 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', + 'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-vsnip', + 'kdheepak/cmp-latex-symbols', 'ray-x/cmp-treesitter', + 'f3fora/cmp-spell', 'jc-doyle/cmp-pandoc-references', + 'cbarrete/completion-vcard' + } + } + require('plug._lsp') + end) From 788775bbee10a82ed38a19947e6378f9b5c93436 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 4 Jan 2022 22:02:55 +0100 Subject: [PATCH 5/7] nvim: Add oscyank to yank from anywhere Added oscyank plugin which allows, through the `:OSCYank` command, to put stuff into your local clipboard from *anywhere*, even through remote ssh sessions and so on. Requires a supported terminal emulator but honestly, most semi well-known ones are on the list already. --- nvim/.config/nvim/lua/plugins.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index a9fac2d..119baa6 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -25,6 +25,7 @@ require("packer").startup(function() } -- allow seamless navigation between vim buffers and tmux splits use 'jeffkreeftmeijer/vim-numbertoggle' -- toggles numbers to absolute for all buffers but the current which is relative use 'RRethy/vim-illuminate' -- highlight other occurences of the word under cursor + use 'ojroques/vim-oscyank' -- yank from *anywhere* (even ssh session) to clipboard, using :OSCYank use 'ggandor/lightspeed.nvim' -- jump between letters with improved fFtT quicksearch, mimics sneak -- use { -- weird errors currently -- 'lukas-reineke/indent-blankline.nvim', -- show a vertical line for each indentation From 8e6bd0357683cebf27b596450df6103e0f08b83d Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 4 Jan 2022 22:04:27 +0100 Subject: [PATCH 6/7] nvim: Replace surround plugin for vim-sandwich Finally made the switch from the lua surround plugin of my choice to sandwich -- it provides sane defaults, needs little to no setup, and comes with a pretty alright default mapping method: `sa` to add surroundings to object `sr` to replace surroundings (including `srb` for automatically figuring out what to replace) `sd` to delete existing. Simple and efficient, should make the cut in my estimation. --- nvim/.config/nvim/lua/plugins.lua | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 119baa6..1a16825 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -57,18 +57,7 @@ require("packer").startup(function() -- editing use {'tpope/vim-commentary', event = "BufRead"} -- easily toggle comments for lines, paragraphs etc with gc - use { - 'blackCauldron7/surround.nvim', -- lets you change surrounding things with cs (or ds to del, ys to add) - config = function() - vim.g.surround_mappings_style = "surround" - vim.g.surround_pairs = { - nestable = {{'(', ')'}, {'[', ']'}, {'{', '}'}}, - linear = {{"'", "'"}, {'"', '"'}, {'*', '*'}, {'`', '`'}} - } - require('surround').setup {} - end, - event = "BufRead" - } + use {'machakann/vim-sandwich', event = "BufRead"} -- surround things with other things using sa/sd/sr use { 'monaqa/dial.nvim', -- extend the ^a / ^x possibilities to dates, hex, alphabets, markdown headers event = "BufRead" From a322799f39fc743313ed6ad4c407efcb77a707c6 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 4 Jan 2022 22:09:22 +0100 Subject: [PATCH 7/7] nvim: Add which-key.nvim key chord visualization Finally added a which-key like extension. This one is a lua implementation of the old Emacs idea, but comes with pretty sane defaults and seems less difficult to set up. So much so that, even out of the box, it seems somewhat useful by containing explanations of default vim bindings and showing the target for all mark jumps. (e.g. `g`` or `g'`). --- nvim/.config/nvim/lua/plugins.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 1a16825..719d95d 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -150,6 +150,10 @@ require("packer").startup(function() event = "BufWinEnter", config = function() require('plug._toggleterm') end } + use { + "folke/which-key.nvim", + config = function() require("which-key").setup {} end + } -- fuzzy matching use {