From bd4ec8054374146b8de408da11f1a12cadea865e Mon Sep 17 00:00:00 2001 From: DMcP89 Date: Tue, 2 Jul 2024 11:17:55 -0400 Subject: [PATCH] config updates --- git/.gitconfig | 1 + nvim/.config/nvim/init.lua | 24 +--- nvim/.config/nvim/lua/coc_config.lua | 186 +++++++++++++++++++++++++++ zsh/.zsh_aliases | 3 + zsh/.zshrc | 9 ++ 5 files changed, 203 insertions(+), 20 deletions(-) create mode 100644 nvim/.config/nvim/lua/coc_config.lua diff --git a/git/.gitconfig b/git/.gitconfig index 7937b52..4d7bc7f 100644 --- a/git/.gitconfig +++ b/git/.gitconfig @@ -9,6 +9,7 @@ lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit stash-all = stash save --include-untracked undo = reset --soft HEAD^ + nah = reset --hard HEAD graph = log --graph --all ' --pretty=format:%Cred%h%Creset %ad | [%C(bold blue)%an%Creset] %Cgreen%d%Creset %s' --date=iso [init] defaultBranch = main diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index aac09de..2574a22 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -13,6 +13,8 @@ Plug('junegunn/fzf', { ['do'] = function() vim.fn['fzf#install']() end }) Plug('ap/vim-buftabline') +Plug('neoclide/coc.nvim', { ['branch'] = 'release' }) + vim.call('plug#end') @@ -107,24 +109,6 @@ vim.cmd('autocmd FileType go nmap r (go-run)') vim.cmd('autocmd FileType go nmap t (go-test)') vim.cmd('autocmd FileType go nmap b (go-build)') -vim.cmd('au filetype go inoremap . .') - --- QOL Fixes -vim.o.completeopt = "menu,menuone,noinsert" --- Set keymap options -local opts = { expr = true, noremap = true, silent = true } - --- inoremap pumvisible() ? "\" : "\u\" -vim.api.nvim_set_keymap('i', '', 'pumvisible() ? "\\" : "\\u\\"', opts) - --- inoremap pumvisible() ? '' : '=pumvisible() ? "\Down>" : ""' -vim.api.nvim_set_keymap('i', '', 'pumvisible() ? \'\' : \'=pumvisible() ? "\\Down>" : ""\'', opts) - --- inoremap pumvisible() ? '' : '=pumvisible() ? "\Down>" : ""' -vim.api.nvim_set_keymap('i', '', 'pumvisible() ? \'\' : \'=pumvisible() ? "\\Down>" : ""\'', opts) - --- inoremap pumvisible() ? '' : '=pumvisible() ? "\Up>" : ""' -vim.api.nvim_set_keymap('i', '', 'pumvisible() ? \'\' : \'=pumvisible() ? "\\Up>" : ""\'', opts) +--vim.cmd('au filetype go inoremap . .') --- inoremap pumvisible() ? '' : '=pumvisible() ? "\Up>" : ""' -vim.api.nvim_set_keymap('i', '', 'pumvisible() ? \'\' : \'=pumvisible() ? "\\Up>" : ""\'', opts) +require("coc_config") diff --git a/nvim/.config/nvim/lua/coc_config.lua b/nvim/.config/nvim/lua/coc_config.lua new file mode 100644 index 0000000..938c61a --- /dev/null +++ b/nvim/.config/nvim/lua/coc_config.lua @@ -0,0 +1,186 @@ +-- https://raw.githubusercontent.com/neoclide/coc.nvim/master/doc/coc-example-config.lua + +-- Some servers have issues with backup files, see #649 +vim.opt.backup = false +vim.opt.writebackup = false + +-- Having longer updatetime (default is 4000 ms = 4s) leads to noticeable +-- delays and poor user experience +vim.opt.updatetime = 300 + +-- Always show the signcolumn, otherwise it would shift the text each time +-- diagnostics appeared/became resolved +vim.opt.signcolumn = "yes" + +local keyset = vim.keymap.set +-- Autocomplete +function _G.check_back_space() + local col = vim.fn.col('.') - 1 + return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil +end + +-- Use Tab for trigger completion with characters ahead and navigate +-- NOTE: There's always a completion item selected by default, you may want to enable +-- no select by setting `"suggest.noselect": true` in your configuration file +-- NOTE: Use command ':verbose imap ' to make sure Tab is not mapped by +-- other plugins before putting this into your config +local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false} +keyset("i", "", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', opts) +keyset("i", "", [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], opts) + +-- Make to accept selected completion item or notify coc.nvim to format +-- u breaks current undo, please make your own choice +keyset("i", "", [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], opts) + +-- Use to trigger snippets +keyset("i", "", "(coc-snippets-expand-jump)") +-- Use to trigger completion +keyset("i", "", "coc#refresh()", {silent = true, expr = true}) + +-- Use `[g` and `]g` to navigate diagnostics +-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list +keyset("n", "[g", "(coc-diagnostic-prev)", {silent = true}) +keyset("n", "]g", "(coc-diagnostic-next)", {silent = true}) + +-- GoTo code navigation +keyset("n", "gd", "(coc-definition)", {silent = true}) +keyset("n", "gy", "(coc-type-definition)", {silent = true}) +keyset("n", "gi", "(coc-implementation)", {silent = true}) +keyset("n", "gr", "(coc-references)", {silent = true}) + + +-- Use K to show documentation in preview window +function _G.show_docs() + local cw = vim.fn.expand('') + if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then + vim.api.nvim_command('h ' .. cw) + elseif vim.api.nvim_eval('coc#rpc#ready()') then + vim.fn.CocActionAsync('doHover') + else + vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw) + end +end +keyset("n", "K", 'lua _G.show_docs()', {silent = true}) + + +-- Highlight the symbol and its references on a CursorHold event(cursor is idle) +vim.api.nvim_create_augroup("CocGroup", {}) +vim.api.nvim_create_autocmd("CursorHold", { + group = "CocGroup", + command = "silent call CocActionAsync('highlight')", + desc = "Highlight symbol under cursor on CursorHold" +}) + + +-- Symbol renaming +keyset("n", "rn", "(coc-rename)", {silent = true}) + + +-- Formatting selected code +keyset("x", "f", "(coc-format-selected)", {silent = true}) +keyset("n", "f", "(coc-format-selected)", {silent = true}) + + +-- Setup formatexpr specified filetype(s) +vim.api.nvim_create_autocmd("FileType", { + group = "CocGroup", + pattern = "typescript,json", + command = "setl formatexpr=CocAction('formatSelected')", + desc = "Setup formatexpr specified filetype(s)." +}) + +-- Update signature help on jump placeholder +vim.api.nvim_create_autocmd("User", { + group = "CocGroup", + pattern = "CocJumpPlaceholder", + command = "call CocActionAsync('showSignatureHelp')", + desc = "Update signature help on jump placeholder" +}) + +-- Apply codeAction to the selected region +-- Example: `aap` for current paragraph +local opts = {silent = true, nowait = true} +keyset("x", "a", "(coc-codeaction-selected)", opts) +keyset("n", "a", "(coc-codeaction-selected)", opts) + +-- Remap keys for apply code actions at the cursor position. +keyset("n", "ac", "(coc-codeaction-cursor)", opts) +-- Remap keys for apply source code actions for current file. +keyset("n", "as", "(coc-codeaction-source)", opts) +-- Apply the most preferred quickfix action on the current line. +keyset("n", "qf", "(coc-fix-current)", opts) + +-- Remap keys for apply refactor code actions. +keyset("n", "re", "(coc-codeaction-refactor)", { silent = true }) +keyset("x", "r", "(coc-codeaction-refactor-selected)", { silent = true }) +keyset("n", "r", "(coc-codeaction-refactor-selected)", { silent = true }) + +-- Run the Code Lens actions on the current line +keyset("n", "cl", "(coc-codelens-action)", opts) + + +-- Map function and class text objects +-- NOTE: Requires 'textDocument.documentSymbol' support from the language server +keyset("x", "if", "(coc-funcobj-i)", opts) +keyset("o", "if", "(coc-funcobj-i)", opts) +keyset("x", "af", "(coc-funcobj-a)", opts) +keyset("o", "af", "(coc-funcobj-a)", opts) +keyset("x", "ic", "(coc-classobj-i)", opts) +keyset("o", "ic", "(coc-classobj-i)", opts) +keyset("x", "ac", "(coc-classobj-a)", opts) +keyset("o", "ac", "(coc-classobj-a)", opts) + + +-- Remap and to scroll float windows/popups +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true, expr = true} +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(1)" : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(0)" : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) + + +-- Use CTRL-S for selections ranges +-- Requires 'textDocument/selectionRange' support of language server +keyset("n", "", "(coc-range-select)", {silent = true}) +keyset("x", "", "(coc-range-select)", {silent = true}) + + +-- Add `:Format` command to format current buffer +vim.api.nvim_create_user_command("Format", "call CocAction('format')", {}) + +-- " Add `:Fold` command to fold current buffer +vim.api.nvim_create_user_command("Fold", "call CocAction('fold', )", {nargs = '?'}) + +-- Add `:OR` command for organize imports of the current buffer +vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {}) + +-- Add (Neo)Vim's native statusline support +-- NOTE: Please see `:h coc-status` for integrations with external plugins that +-- provide custom statusline: lightline.vim, vim-airline +vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}") + +-- Mappings for CoCList +-- code actions and coc stuff +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true} +-- Show all diagnostics +keyset("n", "a", ":CocList diagnostics", opts) +-- Manage extensions +keyset("n", "e", ":CocList extensions", opts) +-- Show commands +keyset("n", "c", ":CocList commands", opts) +-- Find symbol of current document +keyset("n", "o", ":CocList outline", opts) +-- Search workspace symbols +keyset("n", "s", ":CocList -I symbols", opts) +-- Do default action for next item +keyset("n", "j", ":CocNext", opts) +-- Do default action for previous item +keyset("n", "k", ":CocPrev", opts) +-- Resume latest coc list +keyset("n", "p", ":CocListResume", opts) diff --git a/zsh/.zsh_aliases b/zsh/.zsh_aliases index 521e603..c381fa1 100644 --- a/zsh/.zsh_aliases +++ b/zsh/.zsh_aliases @@ -6,3 +6,6 @@ alias cpv='rsync -ah --info=progress2' alias update="sudo apt update && sudo apt upgrade -y" alias cdw="cd $HOME/workspace" alias tf="terraform" + +# remap +alias vim='nvim' diff --git a/zsh/.zshrc b/zsh/.zshrc index 27ed693..be66131 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -36,6 +36,12 @@ zstyle ':completion:*' verbose true zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' + +if [ -d /snap/bin ] ; then + PATH="/snap/bin:$PATH" +fi + + # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" @@ -89,3 +95,6 @@ export PATH=$PATH:/$HOME/.cargo/bin complete -C /usr/bin/terraform terraform source ~/.local/bin/zsh-autosuggestions/zsh-autosuggestions.zsh + +export VIRTUAL_ENV_DISABLE_PROMPT= +export BUILDX_EXPERIMENTAL=1