From dd6db425a1eaf0b32bad08ab5f0a1553da9ea1fc Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Tue, 2 Aug 2022 00:46:11 -0500 Subject: [PATCH] refactor(nvim): use nvim-environments --- .../nvim/after/ftplugin/Dockerfile.lua | 3 + .../after/ftplugin/NeogitCommitMessage.lua | 1 + .../primary/nvim/after/ftplugin/Outline.lua | 1 + .../primary/nvim/after/ftplugin/azure.lua | 1 + .../primary/nvim/after/ftplugin/html.lua | 4 + .../primary/nvim/after/ftplugin/http.lua | 9 + .../primary/nvim/after/ftplugin/make.lua | 2 + .../primary/nvim/after/ftplugin/markdown.lua | 5 + .../primary/nvim/after/ftplugin/norg.lua | 6 + .../primary/nvim/after/ftplugin/rust.lua | 35 + .../primary/nvim/after/ftplugin/sh.lua | 2 + .../primary/nvim/after/ftplugin/sql.lua | 13 + .../primary/nvim/after/ftplugin/terraform.lua | 4 + .../primary/nvim/after/ftplugin/xml.lua | 4 + .../primary/nvim/after/ftplugin/yaml.lua | 4 + .../primary/nvim/after/ftplugin/zsh.lua | 3 + .../primary/nvim/ftdetect/cf3.vim | 2 + .../primary/nvim/ftplugin/cf3.vim | 221 +++++ dots/.nvim-environments/primary/nvim/init.lua | 5 + .../primary/nvim/lua/core/autocmds.lua | 50 + .../primary/nvim/lua/core/disabled.lua | 25 + .../primary/nvim/lua/core/globals.lua | 9 + .../primary/nvim/lua/core/init.lua | 7 + .../primary/nvim/lua/core/lsp.lua | 52 + .../primary/nvim/lua/core/mappings.lua | 55 + .../primary/nvim/lua/core/options.lua | 124 +++ .../primary/nvim/lua/core/postload.lua | 1 + .../primary/nvim/lua/core/theme.lua | 20 + .../primary/nvim/lua/core/winbar.lua | 23 + .../primary/nvim/lua/main.lua | 16 + .../primary/nvim/lua/packer_compiled.lua | 938 ++++++++++++++++++ .../primary/nvim/lua/plugins/autocmds.lua | 31 + .../primary/nvim/lua/plugins/configs/_cmp.lua | 240 +++++ .../primary/nvim/lua/plugins/configs/_dap.lua | 67 ++ .../nvim/lua/plugins/configs/_neoclip.lua | 3 + .../nvim/lua/plugins/configs/_neorg.lua | 50 + .../nvim/lua/plugins/configs/_stabilize.lua | 20 + .../nvim/lua/plugins/configs/_windline.lua | 7 + .../nvim/lua/plugins/configs/alpha.lua | 134 +++ .../nvim/lua/plugins/configs/bufferline.lua | 18 + .../primary/nvim/lua/plugins/configs/coq.lua | 10 + .../nvim/lua/plugins/configs/dap-ui.lua | 9 + .../lua/plugins/configs/diag-scrollbar.lua | 18 + .../lua/plugins/configs/fidget-spinner.lua | 10 + .../lua/plugins/configs/file-explorer.lua | 18 + .../nvim/lua/plugins/configs/hydra.lua | 117 +++ .../lua/plugins/configs/indent-blankline.lua | 25 + .../primary/nvim/lua/plugins/configs/lsp.lua | 187 ++++ .../nvim/lua/plugins/configs/neoformat.lua | 8 + .../nvim/lua/plugins/configs/neotree.lua | 14 + .../nvim/lua/plugins/configs/null_ls.lua | 17 + .../lua/plugins/configs/nvim-colorizer.lua | 3 + .../nvim/lua/plugins/configs/nvim-notify.lua | 34 + .../nvim/lua/plugins/configs/python-dap.lua | 3 + .../nvim/lua/plugins/configs/statusline.lua | 137 +++ .../lua/plugins/configs/telescope-nvim.lua | 90 ++ .../lua/plugins/configs/todo-comments.lua | 1 + .../nvim/lua/plugins/configs/tokyonight.lua | 7 + .../nvim/lua/plugins/configs/treesitter.lua | 21 + .../primary/nvim/lua/plugins/init.lua | 5 + .../primary/nvim/lua/plugins/mappings.lua | 162 +++ .../primary/nvim/lua/plugins/plugins.lua | 797 +++++++++++++++ .../primary/nvim/lua/plugins/postload.lua | 4 + .../primary/nvim/lua/utils/funcs.lua | 154 +++ .../primary/nvim/spell/en.utf-8.add | 61 ++ .../primary/nvim/spell/en.utf-8.add.spl | Bin 0 -> 816 bytes .../primary/nvim/syntax/cf3.vim | 626 ++++++++++++ 67 files changed, 4753 insertions(+) create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/Dockerfile.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/NeogitCommitMessage.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/Outline.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/azure.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/html.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/http.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/make.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/markdown.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/norg.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/rust.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/sh.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/sql.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/terraform.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/xml.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/yaml.lua create mode 100644 dots/.nvim-environments/primary/nvim/after/ftplugin/zsh.lua create mode 100644 dots/.nvim-environments/primary/nvim/ftdetect/cf3.vim create mode 100644 dots/.nvim-environments/primary/nvim/ftplugin/cf3.vim create mode 100755 dots/.nvim-environments/primary/nvim/init.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/core/autocmds.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/disabled.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/globals.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/init.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/core/lsp.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/mappings.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/options.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/postload.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/core/theme.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/core/winbar.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/main.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/packer_compiled.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/autocmds.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_cmp.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_dap.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neoclip.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neorg.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_stabilize.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/_windline.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/plugins/configs/alpha.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/bufferline.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/coq.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/dap-ui.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/diag-scrollbar.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/fidget-spinner.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/file-explorer.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/plugins/configs/hydra.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/indent-blankline.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/lsp.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/neoformat.lua create mode 100644 dots/.nvim-environments/primary/nvim/lua/plugins/configs/neotree.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/null_ls.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-colorizer.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-notify.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/python-dap.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/statusline.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/telescope-nvim.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/todo-comments.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/tokyonight.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/configs/treesitter.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/init.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/mappings.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/plugins.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/plugins/postload.lua create mode 100755 dots/.nvim-environments/primary/nvim/lua/utils/funcs.lua create mode 100644 dots/.nvim-environments/primary/nvim/spell/en.utf-8.add create mode 100644 dots/.nvim-environments/primary/nvim/spell/en.utf-8.add.spl create mode 100644 dots/.nvim-environments/primary/nvim/syntax/cf3.vim diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/Dockerfile.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/Dockerfile.lua new file mode 100644 index 00000000..38e9ce5f --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/Dockerfile.lua @@ -0,0 +1,3 @@ +local file_loc = vim.fn.expand('%:p:h') + +vim.opt.makeprg = 'docker build ' .. file_loc diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/NeogitCommitMessage.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/NeogitCommitMessage.lua new file mode 100644 index 00000000..94700636 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/NeogitCommitMessage.lua @@ -0,0 +1 @@ +vim.opt.filetype = 'gitcommit' diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/Outline.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/Outline.lua new file mode 100644 index 00000000..109e3a4f --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/Outline.lua @@ -0,0 +1 @@ +vim.opt_local.list = false diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/azure.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/azure.lua new file mode 100644 index 00000000..73bec3a3 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/azure.lua @@ -0,0 +1 @@ +vim.opt.filetype = 'yaml' diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/html.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/html.lua new file mode 100644 index 00000000..6aeb9213 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/html.lua @@ -0,0 +1,4 @@ +local opt = vim.opt + +opt.tabstop = 2 +opt.shiftwidth = 2 diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/http.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/http.lua new file mode 100644 index 00000000..e3d51499 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/http.lua @@ -0,0 +1,9 @@ +vim.keymap.set('n', 'fr', 'RestNvim', { + buffer = true, +}) +vim.keymap.set('n', 'fp', 'RestNvimPreview', { + buffer = true, +}) +vim.keymap.set('n', 'fl', 'RestNvimLast', { + buffer = true, +}) diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/make.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/make.lua new file mode 100644 index 00000000..0db62ef7 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/make.lua @@ -0,0 +1,2 @@ +vim.opt.expandtab = false +vim.opt_local.expandtab = false diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/markdown.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/markdown.lua new file mode 100644 index 00000000..ca9af84e --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/markdown.lua @@ -0,0 +1,5 @@ +local opt = vim.opt + +opt.tabstop = 2 +opt.shiftwidth = 2 +opt.textwidth = 0 diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/norg.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/norg.lua new file mode 100644 index 00000000..d819cfd9 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/norg.lua @@ -0,0 +1,6 @@ +vim.keymap.set('n', 'fge', ':Neorg gtd edit', { + buffer = true, +}) +vim.keymap.set('n', 'fgv', ':Neorg gtd views', { + buffer = true, +}) diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/rust.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/rust.lua new file mode 100644 index 00000000..d9589815 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/rust.lua @@ -0,0 +1,35 @@ +vim.keymap.set('n', 'fr', ':RustRunnables', { + buffer = true, +}) +vim.keymap.set('n', 'fd', ':RustDebuggables', { + buffer = true, +}) +vim.keymap.set('n', 'fp', ':RustParentModule', { + buffer = true, +}) +vim.keymap.set('n', 'fJ', ':RustJoinLines', { + buffer = true, +}) +vim.keymap.set('n', 'fh', ':RustHoverActions', { + buffer = true, +}) +vim.keymap.set('n', 'fH', ':RustHoverRange', { + buffer = true, +}) +vim.keymap.set('n', 'fi', ':RustToggleInlayHints', { + buffer = true, +}) +vim.keymap.set('n', 'fm', ':RustExpandMacro', { + buffer = true, +}) +vim.keymap.set('n', 'fc', ':RustOpenCargo', { + buffer = true, +}) +vim.keymap.set('n', 'fk', ':RustMoveItemUp', { + buffer = true, +}) +vim.keymap.set('n', 'fj', ':RustMoveItemDown', { + buffer = true, +}) + +vim.opt.foldmethod = 'syntax' diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/sh.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/sh.lua new file mode 100644 index 00000000..0db62ef7 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/sh.lua @@ -0,0 +1,2 @@ +vim.opt.expandtab = false +vim.opt_local.expandtab = false diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/sql.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/sql.lua new file mode 100644 index 00000000..4d5a0894 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/sql.lua @@ -0,0 +1,13 @@ +vim.keymap.set('n', 'fe', '(sqls-execute-query)', { + buffer = true, +}) +vim.keymap.set('v', 'fe', '(sqls-execute-query)', { + buffer = true, +}) + +vim.keymap.set('n', 'fsd', ':SqlsSwitchDatabase', { + buffer = true, +}) +vim.keymap.set('n', 'fsc', ':SqlsSwitchConnection', { + buffer = true, +}) diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/terraform.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/terraform.lua new file mode 100644 index 00000000..c7b84cb5 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/terraform.lua @@ -0,0 +1,4 @@ +local opt_local = vim.opt_local + +opt_local.tabstop = 2 +opt_local.shiftwidth = 2 diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/xml.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/xml.lua new file mode 100644 index 00000000..c7b84cb5 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/xml.lua @@ -0,0 +1,4 @@ +local opt_local = vim.opt_local + +opt_local.tabstop = 2 +opt_local.shiftwidth = 2 diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/yaml.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/yaml.lua new file mode 100644 index 00000000..c7b84cb5 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/yaml.lua @@ -0,0 +1,4 @@ +local opt_local = vim.opt_local + +opt_local.tabstop = 2 +opt_local.shiftwidth = 2 diff --git a/dots/.nvim-environments/primary/nvim/after/ftplugin/zsh.lua b/dots/.nvim-environments/primary/nvim/after/ftplugin/zsh.lua new file mode 100644 index 00000000..035e7cdf --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/after/ftplugin/zsh.lua @@ -0,0 +1,3 @@ +vim.opt.expandtab = false +vim.opt_local.expandtab = false +vim.opt.tabstop = 4 diff --git a/dots/.nvim-environments/primary/nvim/ftdetect/cf3.vim b/dots/.nvim-environments/primary/nvim/ftdetect/cf3.vim new file mode 100644 index 00000000..a6b58e6c --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/ftdetect/cf3.vim @@ -0,0 +1,2 @@ +au BufRead,BufNewFile *.cf set ft=cf3 + diff --git a/dots/.nvim-environments/primary/nvim/ftplugin/cf3.vim b/dots/.nvim-environments/primary/nvim/ftplugin/cf3.vim new file mode 100644 index 00000000..bfa93ee4 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/ftplugin/cf3.vim @@ -0,0 +1,221 @@ +" Vim file plugin +" This is my first attempt at a ftplugin file. Feel free to send me +" corrections or improvements. I'll give you a credit. +" +" USAGE +" There is already a vim file that uses 'cf' as a file extension. You can use +" cf3 for your cf3 file extensions or identify via your vimrc file: +" au BufRead,BufNewFile *.cf set ft=cf3 + +" Check to see if DisableCF3Ftplugin is defined +" If you only want the syntax plugin add "let g:DisableCF3Ftplugin=1" in +" ~/.vimrc +if exists("g:DisableCF3Ftplugin") + finish +endif + + +" Only do this when not done yet for this buffer +if exists("b:loaded_CFE3Ftplugin") + finish +endif +let b:loaded_CFE3Ftplugin = 1 + +let s:install_dir = expand(':p:h:h') + +" =============== Keyword Abbreviations =============== +" enable keyword abbreviations with by adding +" "let g:EnableCFE3KeywordAbbreviations=1" to your vimrc +" Convenience function ToggleCFE3KeywordAbbreviations +" mapped to ,i by default to toggle abbreviations on or off +" +function! EnableCFE3KeywordAbbreviations() + iab = => + iab ba bundle agent + iab bc bundle common + iab bu bundle + iab cano canonify( "=Eatchar('\s') + iab cla classes: + iab comma commands: + iab comme comment => "=Eatchar('\s') + iab exp expression => =Eatchar('\s') + iab fil files: + iab han handle => "=Eatchar('\s') + iab ifv ifvarclass => =Eatchar('\s') + iab met methods: + iab pro processes: + iab rep reports: + iab sli slist => { + iab str string => "=Eatchar('\s') + iab sysw ${sys.workdir} + iab ub usebundle => + iab var vars: +endfunction + +function! DisableCFE3KeywordAbbreviations() + iunab = + iunab ba + iunab bc + iunab bu + iunab cano + iunab cla + iunab comma + iunab comme + iunab exp + iunab fil + iunab han + iunab ifv + iunab met + iunab pro + iunab rep + iunab sli + iunab str + iunab sysw + iunab ub + iunab var +endfunction + +" Default abbreviations off +" to disable let g:EnableCFE3KeywordAbbreviations=1 in ~/.vimrc +if exists('g:EnableCFE3KeywordAbbreviations') + call EnableCFE3KeywordAbbreviations() +endif + +function! ToggleCFE3KeywordAbbreviations() + if !exists('b:EnableCFE3KeywordAbbreviations') + let b:EnableCFE3KeywordAbbreviations=1 + call EnableCFE3KeywordAbbreviations() + else + unlet b:EnableCFE3KeywordAbbreviations + call DisableCFE3KeywordAbbreviations() + endif +endfunction + +function! EnableCFE3PermissionFix() +" On Save set the permissions of the edited file so others can't access + :autocmd BufWritePost *.cf silent !chmod g-w,o-rwx % +endfunction + +" Default permission fix off +" To enable permission fixing in your main .vimrc +" let g:EnableCFE3PermissionFix=1 +if exists('g:EnableCFE3PermissionFix') + call EnableCFE3PermissionFix() +endif + +" maps +" Toggle KeywordAbbreviations +nnoremap ,i :call ToggleCFE3KeywordAbbreviations() +" Wrap WORD in double quotes +nnoremap ,q dEi"pa" +" Insert blank promise +nnoremap ,p o""handle => "",comment => "" +" quote list items +vnoremap ,q :s/^\s*\(.*\)\s*$/"\1",/g + +" Function to align groups of => assignment lines. +" Credit to 'Scripting the Vim editor, Part 2: User-defined functions' +" by Damian Conway +" http://www.ibm.com/developerworks/linux/library/l-vim-script-2/index.html +if !exists("*CF3AlignAssignments") +function CF3AlignAssignments (AOP) + "Patterns needed to locate assignment operators... + if a:AOP == 'vars' + let ASSIGN_OP = '\(string\|int\|real\|data\|slist\|ilist\|rlist\|expression\|and\|or\|not\|volume\)*\s\+=>' + else + let ASSIGN_OP = '=>' + endif + let ASSIGN_LINE = '^\(.\{-}\)\s*\(' . ASSIGN_OP . '\)' + + "Locate block of code to be considered (same indentation, no blanks) + let indent_pat = '^' . matchstr(getline('.'), '^\s*') . '\S' + let firstline = search('^\%('. indent_pat . '\)\@!','bnW') + 1 + let lastline = search('^\%('. indent_pat . '\)\@!', 'nW') - 1 + if lastline < 0 + let lastline = line('$') + endif + + "Find the column at which the operators should be aligned... + let max_align_col = 0 + let max_op_width = 0 + for linetext in getline(firstline, lastline) + "Does this line have an assignment in it? + let left_width = match(linetext, '\s*' . ASSIGN_OP) + + "If so, track the maximal assignment column and operator width... + if left_width >= 0 + let max_align_col = max([max_align_col, left_width]) + + let op_width = strlen(matchstr(linetext, ASSIGN_OP)) + let max_op_width = max([max_op_width, op_width+1]) + endif + endfor + + "Code needed to reformat lines so as to align operators... + let FORMATTER = '\=printf("%-*s%*s", max_align_col, submatch(1), + \ max_op_width, submatch(2))' + + " Reformat lines with operators aligned in the appropriate column... + for linenum in range(firstline, lastline) + let oldline = getline(linenum) + let newline = substitute(oldline, ASSIGN_LINE, FORMATTER, "") + call setline(linenum, newline) + endfor +endfunction +endif + +nnoremap ,= :call CF3AlignAssignments("null") +nnoremap = :call CF3AlignAssignments("vars") + +" For pasting code snippets +function! Pastefile( FILE ) + let arg_file = s:install_dir."/snippets/".a:FILE + let @" = join( readfile( arg_file ), "\n" ) + put + return "" +endfunction + +nnoremap ,k :call Pastefile("template.cf")kdd +nnoremap ,s :call Pastefile("stdlib.cf")kdd + +" TODO +" Indents + +" CREDITS +" Neil Watson +" Other Cfengine information: http://watson-wilson.ca/cfengine/ +" +" CHANGES +" Wednesday January 09 2013 +" Operator alignment now works for just '=>' with ',=' or 'string, stlist ,etc +" and => ' with '=' +" +" Wednesday October 05 2011 +" - Added comment and handle abbs. Assumes you have the Eatchar and Getchar +" functions. +" - Can now wrap words and lists in quotes. +" - Insert blank promises (,p) +" - Insert blank testing skeleton (,k) +" +" CHANGES +" Monday November 21 2011 +" - IAB's for string, slist and usebundle. + +" CHANGES +" Fri Apr 27 2012 +" Added function to align assigment operators + +" vim_cf3 files (https://github.com/neilhwatson/vim_cf3) +" Copyright (C) 2011 Neil H. Watson +" +" This program is free software: you can redistribute it and/or modify it under +" the terms of the GNU General Public License as published by the Free Software +" Foundation, either version 3 of the License, or (at your option) any later +" version. +" +" This program is distributed in the hope that it will be useful, but WITHOUT ANY +" WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +" PARTICULAR PURPOSE. See the GNU General Public License for more details. +" +" You should have received a copy of the GNU General Public License along with +" this program. If not, see . diff --git a/dots/.nvim-environments/primary/nvim/init.lua b/dots/.nvim-environments/primary/nvim/init.lua new file mode 100755 index 00000000..0368553e --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/init.lua @@ -0,0 +1,5 @@ +local loaded, impatient = pcall(require, 'impatient') +if loaded then + impatient.enable_profile() +end +require('main') diff --git a/dots/.nvim-environments/primary/nvim/lua/core/autocmds.lua b/dots/.nvim-environments/primary/nvim/lua/core/autocmds.lua new file mode 100644 index 00000000..0f49c059 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/autocmds.lua @@ -0,0 +1,50 @@ +local M = {} + +M.setup = function() + -- NOTE: Highlight text yanked + vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, + }) + + -- NOTE: Remove trailing whitespace on save + vim.api.nvim_create_autocmd("BufWritePre", { + command = "%s/\\s\\+$//e", + }) + + -- -- NOTE: Handles scenarios in which the filetype isn't detected on load + -- vim.api.nvim_create_autocmd('BufReadPost', { + -- pattern = '*', + -- callback = function() + -- local opt_ft = vim.opt_local.ft:get() + -- if opt_ft == nil or opt_ft == '' then + -- vim.cmd('filetype detect') + -- end + -- end, + -- }) + + -- NOTE: Local cursorline + vim.api.nvim_create_autocmd("BufEnter", { + pattern = "*", + callback = function() + vim.opt_local.cursorline = true + end, + }) + + vim.api.nvim_create_autocmd("WinEnter", { + pattern = "*", + callback = function() + vim.opt_local.cursorline = true + end, + }) + + vim.api.nvim_create_autocmd("WinLeave", { + pattern = "*", + callback = function() + vim.opt_local.cursorline = false + end, + }) +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/disabled.lua b/dots/.nvim-environments/primary/nvim/lua/core/disabled.lua new file mode 100755 index 00000000..22513488 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/disabled.lua @@ -0,0 +1,25 @@ +local M = {} +M.setup = function() + local disabled_built_ins = { + 'gzip', + 'zip', + 'zipPlugin', + 'tar', + 'tarPlugin', + 'getscript', + 'getscriptPlugin', + 'vimball', + 'vimballPlugin', + '2html_plugin', + 'logipat', + 'rrhelper', + 'spellfile_plugin', + 'matchit', + } + + for _, plugin in pairs(disabled_built_ins) do + vim.g['loaded_' .. plugin] = 1 + end +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/globals.lua b/dots/.nvim-environments/primary/nvim/lua/core/globals.lua new file mode 100755 index 00000000..929fdc1f --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/globals.lua @@ -0,0 +1,9 @@ +local g = vim.g + +local M = {} + +M.setup = function() + -- g.python3_host_prog = ("(%s)/.pyenv/shims/python3"):format(os.getenv("HOME")) +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/init.lua b/dots/.nvim-environments/primary/nvim/lua/core/init.lua new file mode 100755 index 00000000..c101a615 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/init.lua @@ -0,0 +1,7 @@ +require('core.disabled').setup() +require('core.options').setup() +require('core.mappings').setup() +require('core.globals').setup() +require('core.autocmds').setup() +require('core.lsp').setup() +-- require('core.winbar').setup() diff --git a/dots/.nvim-environments/primary/nvim/lua/core/lsp.lua b/dots/.nvim-environments/primary/nvim/lua/core/lsp.lua new file mode 100644 index 00000000..1033c745 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/lsp.lua @@ -0,0 +1,52 @@ +local M = {} + +M.setup = function() + local function lspSymbol(name, icon, linehlbg) + local hl = 'DiagnosticSign' .. name + local linehl = 'DiagnosticSignLineHl' .. name + vim.api.nvim_set_hl(0, linehl, { + bg = linehlbg, + }) + vim.fn.sign_define(hl, { text = icon, numhl = hl, texthl = hl, linehl = linehl }) + end + + lspSymbol('Error', '', '#2d202a') + lspSymbol('Warn', '', '#2e2a2d') + lspSymbol('Info', '', '#192b38') + lspSymbol('Hint', '', '#1a2b32') + + local border = { + { '╭', 'FloatBorder' }, + { '─', 'FloatBorder' }, + { '╮', 'FloatBorder' }, + { '│', 'FloatBorder' }, + { '╯', 'FloatBorder' }, + { '─', 'FloatBorder' }, + { '╰', 'FloatBorder' }, + { '│', 'FloatBorder' }, + } + + local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview + function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) + opts = opts or {} + opts.border = opts.border or border + return orig_util_open_floating_preview(contents, syntax, opts, ...) + end + + vim.diagnostic.config({ + virtual_text = false, + severity_sort = true, + underline = true, + update_in_insert = false, + float = { + focusable = false, + style = 'minimal', + border = 'rounded', + source = 'always', + header = '', + prefix = '', + }, + }) +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/mappings.lua b/dots/.nvim-environments/primary/nvim/lua/core/mappings.lua new file mode 100755 index 00000000..d583811a --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/mappings.lua @@ -0,0 +1,55 @@ +local M = {} + +M.setup = function() + -- set mapleader to space + vim.g.mapleader = " " + + -- Get rid of highlight after search + vim.keymap.set("n", "", ":noh") + + -- Spell Checking + vim.keymap.set("n", "st", ":set spell!") + + -- Better split movement + vim.keymap.set("n", "", "l") + vim.keymap.set("n", "", "h") + vim.keymap.set("n", "", "k") + vim.keymap.set("n", "", "j") + + -- Better split closing + vim.keymap.set("n", "", "c") + + -- Set current focused file as cwd + vim.keymap.set("n", "cd", ":cd %:p:h") + + -- Toggle showing diagnostics + local diagnostics_active = true + vim.keymap.set("n", "lh", function() + diagnostics_active = not diagnostics_active + if diagnostics_active then + vim.diagnostic.enable() + else + vim.diagnostic.disable() + end + end, { desc = "Toggle Diagnostics" }) + + -- Toggle showing command bar + vim.keymap.set("n", "cl", function() + local current_cmdheight = vim.opt.cmdheight:get() + if current_cmdheight > 0 then + vim.opt.cmdheight = 0 + else + vim.opt.cmdheight = 1 + end + end, { desc = "Toggle Cmdline" }) + + -- Toggle relativenumber + vim.keymap.set("n", "sn", function() + vim.opt.relativenumber = not vim.opt.relativenumber:get() + end, { desc = "Toggle Relativenumber" }) + + -- Sudo Write + vim.keymap.set("c", "w!!", "w !sudo tee > /dev/null %") +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/options.lua b/dots/.nvim-environments/primary/nvim/lua/core/options.lua new file mode 100755 index 00000000..b21aa05a --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/options.lua @@ -0,0 +1,124 @@ +local opt = vim.opt + +local M = {} + +M.setup = function() + -- Number settings + opt.number = true + opt.numberwidth = 2 + opt.relativenumber = true + + -- Scroll Offset + opt.scrolloff = 3 + + -- Disable showmode + opt.showmode = false + + -- Set truecolor support + opt.termguicolors = true + vim.cmd("highlight Normal guibg=none") + + -- Enable system clipboard + opt.clipboard = "unnamedplus" + + -- Set mouse support for any mode + opt.mouse = "a" + + -- Allow hidden + opt.hidden = true + + -- Useful defaults for tab, indentation, etc. + opt.tabstop = 4 + opt.shiftwidth = 4 + opt.smartindent = true + opt.breakindent = true + opt.expandtab = true + opt.smarttab = true + + -- Search settings + opt.hlsearch = true + opt.incsearch = true + opt.ignorecase = true + opt.smartcase = true + + -- Better backspaces + opt.backspace = "indent,eol,start" + + -- Make new splits vertical + opt.splitright = true + + -- Show line & column num of cursor + opt.ruler = true + + -- Set timeouts + opt.ttimeoutlen = 20 + opt.timeoutlen = 1000 + opt.updatetime = 250 + opt.signcolumn = "yes" + + -- Enable persistent undo + opt.undodir = vim.fn.stdpath("cache") .. "/undo" + opt.undofile = true + + -- Better folding + opt.foldexpr = "nvim_treesitter#foldexpr()" + opt.foldmethod = "expr" + opt.fillchars = { fold = " " } + opt.foldlevel = 20 + + -- Concealment for nicer rendering + opt.conceallevel = 2 + opt.concealcursor = "ic" + + -- Lazy Redraw to Speed Up Macros + opt.lazyredraw = true + + -- Spell Settings + opt.spelllang = { "en_us" } + + -- Better completion experience + opt.completeopt = "menuone,noselect" + + -- Set max text width + opt.textwidth = 120 + + -- Make statusline global + opt.laststatus = 3 + + -- Set listcharacters + opt.list = true + opt.listchars:append("tab:-->") + opt.listchars:append("lead:·") + opt.listchars:append("trail:·") + opt.listchars:append("extends:◣") + opt.listchars:append("precedes:◢") + opt.listchars:append("nbsp:○") + + -- Set fillchars + vim.opt.fillchars:append({ + horiz = "━", + horizup = "┻", + horizdown = "┳", + vert = "┃", + vertleft = "┨", + vertright = "┣", + verthoriz = "╋", + }) + + -- Remove end of boundry '~' + opt.fillchars:append("eob: ") + + -- Allow vim to get settings from file + opt.modeline = true + opt.modelines = 5 + + -- Set command bar height to hide when not in use + opt.cmdheight = 0 + + -- WARN: Disable swap files. + -- WARN: This is potentially VERY dangerous. + -- WARN: For my use case, this is intended + opt.swapfile = false +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/postload.lua b/dots/.nvim-environments/primary/nvim/lua/core/postload.lua new file mode 100755 index 00000000..890e5d29 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/postload.lua @@ -0,0 +1 @@ +require('core.theme').setup() diff --git a/dots/.nvim-environments/primary/nvim/lua/core/theme.lua b/dots/.nvim-environments/primary/nvim/lua/core/theme.lua new file mode 100755 index 00000000..81ccfd91 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/theme.lua @@ -0,0 +1,20 @@ +local M = {} +local util = require("utils.funcs") + +M.setup = function() + vim.g.tokyonight_style = "night" + vim.g.tokyonight_transparent = true + vim.g.tokyonight_transparent_sidebar = true + + local colorscheme_name = "kanagawa" + local loaded, _ = pcall(vim.cmd, "colorscheme " .. colorscheme_name) + + if not loaded then + vim.notify('Colorscheme "' .. colorscheme_name .. '" could not be loaded!', vim.lsp.log_levels.WARN, { + title = "Colorscheme", + }) + end + + -- vim.api.nvim_set_hl(0, "SpecialKey", { fg = "#61AFEF" }) +end +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/core/winbar.lua b/dots/.nvim-environments/primary/nvim/lua/core/winbar.lua new file mode 100644 index 00000000..9711cbda --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/core/winbar.lua @@ -0,0 +1,23 @@ +local M = {} + +M.winbar = function() + local win_number = '[' .. vim.api.nvim_win_get_number(0) .. ']' + local ignore_fts = { + 'neo-tree', + 'dashboard', + } + + for _, ft in ipairs(ignore_fts) do + if ft == vim.bo.filetype then + return win_number + end + end + return win_number .. ' %f' +end + +M.setup = function() + -- Winbar + vim.opt.winbar = "%{%v:lua.require('core.winbar').winbar()%}" +end + +return M diff --git a/dots/.nvim-environments/primary/nvim/lua/main.lua b/dots/.nvim-environments/primary/nvim/lua/main.lua new file mode 100755 index 00000000..9889ad35 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/main.lua @@ -0,0 +1,16 @@ +-- INFO: Primary loading, where most things are loaded in +-- +-- INFO: All modules/dirs that are going to be loaded +-- INFO: SHOULD have a init.lua file associated with them. +-- INFO: init.lua is responsible for loading all configuration +-- INFO: related to that directory. +require('core.init') +require('plugins.init') + +-- INFO: Post load, for things that need to setup keybindings etc after the fact +-- +-- NOTE: All postload modules should be independent of each other, they shouldn't +-- NOTE: rely on each other's load order. That type of logic should be shifted +-- NOTE: into non-postload regions then handled in postload modules. +require('plugins.postload') +require('core.postload') diff --git a/dots/.nvim-environments/primary/nvim/lua/packer_compiled.lua b/dots/.nvim-environments/primary/nvim/lua/packer_compiled.lua new file mode 100644 index 00000000..dba0f87d --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/packer_compiled.lua @@ -0,0 +1,938 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + + local time + local profile_info + local should_profile = false + if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end + else + time = function(chunk, start) end + end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + + _G._packer = _G._packer or {} + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/Users/pricehiller/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/Users/pricehiller/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/Users/pricehiller/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/Users/pricehiller/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/Users/pricehiller/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + LuaSnip = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["alpha-nvim"] = { + config = { "\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26plugins.configs.alpha\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/alpha-nvim", + url = "https://github.com/goolord/alpha-nvim" + }, + ["ansible-vim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/ansible-vim", + url = "https://github.com/pearofducks/ansible-vim" + }, + ["cmp-calc"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-calc", + url = "https://github.com/hrsh7th/cmp-calc" + }, + ["cmp-cmdline"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-cmdline", + url = "https://github.com/hrsh7th/cmp-cmdline" + }, + ["cmp-cmdline-history"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-cmdline-history", + url = "https://github.com/dmitmel/cmp-cmdline-history" + }, + ["cmp-conventionalcommits"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-conventionalcommits", + url = "https://github.com/davidsierradz/cmp-conventionalcommits" + }, + ["cmp-emoji"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-emoji", + url = "https://github.com/hrsh7th/cmp-emoji" + }, + ["cmp-fuzzy-buffer"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-fuzzy-buffer", + url = "https://github.com/tzachar/cmp-fuzzy-buffer" + }, + ["cmp-fuzzy-path"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-fuzzy-path", + url = "https://github.com/tzachar/cmp-fuzzy-path" + }, + ["cmp-npm"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-npm", + url = "https://github.com/David-Kunz/cmp-npm" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-nvim-lsp-document-symbol"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp-document-symbol", + url = "https://github.com/hrsh7th/cmp-nvim-lsp-document-symbol" + }, + ["cmp-path"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["cmp-rg"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-rg", + url = "https://github.com/lukas-reineke/cmp-rg" + }, + ["cmp-zsh"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp-zsh", + url = "https://github.com/tamago324/cmp-zsh" + }, + cmp_luasnip = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["crates.nvim"] = { + after_files = { "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/crates.nvim/after/plugin/cmp_crates.lua" }, + config = { "\27LJ\2\n4\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\vcrates\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/crates.nvim", + url = "https://github.com/saecki/crates.nvim" + }, + ["csharpls-extended-lsp.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/csharpls-extended-lsp.nvim", + url = "https://github.com/Decodetalkers/csharpls-extended-lsp.nvim" + }, + ["diffview.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/diffview.nvim", + url = "https://github.com/sindrets/diffview.nvim" + }, + ["editorconfig.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/editorconfig.nvim", + url = "https://github.com/gpanders/editorconfig.nvim" + }, + ["fidget.nvim"] = { + config = { "\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.fidget-spinner\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/fidget.nvim", + url = "https://github.com/j-hui/fidget.nvim" + }, + ["friendly-snippets"] = { + config = { "\27LJ\2\nM\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\14lazy_load luasnip.loaders.from_vscode\frequire\0" }, + load_after = {}, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, + ["fuzzy.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/fuzzy.nvim", + url = "https://github.com/tzachar/fuzzy.nvim" + }, + ["gitsigns.nvim"] = { + config = { "\27LJ\2\n|\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0005\3\4\0=\3\5\2B\0\2\1K\0\1\0\28current_line_blame_opts\1\0\1\ndelay\3\0\1\0\1\23current_line_blame\2\nsetup\rgitsigns\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["hop.nvim"] = { + config = { "\27LJ\2\nU\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\tkeys\28etovxqpdygfblzhckisuran\nsetup\bhop\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/hop.nvim", + url = "https://github.com/phaazon/hop.nvim" + }, + ["hydra.nvim"] = { + config = { "\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26plugins.configs.hydra\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/hydra.nvim", + url = "https://github.com/anuvyklack/hydra.nvim" + }, + ["impatient.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/impatient.nvim", + url = "https://github.com/lewis6991/impatient.nvim" + }, + ["inc-rename.nvim.git"] = { + config = { "\27LJ\2\n<\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\15inc_rename\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/inc-rename.nvim.git", + url = "https://github.com/smjonas/inc-rename.nvim" + }, + ["indent-blankline.nvim"] = { + config = { "\27LJ\2\n@\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0%plugins.configs.indent-blankline\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/indent-blankline.nvim", + url = "https://github.com/lukas-reineke/indent-blankline.nvim" + }, + ["kanagawa.nvim"] = { + config = { "\27LJ\2\n\5\0\0\a\0#\0@6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0026\1\3\0009\1\4\0019\1\5\1\18\3\1\0009\1\6\0015\4\a\0B\1\3\0016\1\0\0'\3\b\0B\1\2\0029\1\2\0015\3\t\0005\4\14\0005\5\f\0009\6\n\0009\6\v\6=\6\r\5=\5\15\0045\5\18\0009\6\16\0009\6\17\6=\6\19\0059\6\n\0009\6\v\6=\6\r\5=\5\20\0045\5\22\0009\6\n\0009\6\21\6=\6\r\5=\5\23\0045\5\25\0009\6\16\0009\6\24\6=\6\19\0059\6\n\0009\6\26\6=\6\r\5=\5\27\0045\5\29\0009\6\16\0009\6\28\6=\6\19\0059\6\n\0009\6\30\6=\6\r\5=\5\31\0045\5 \0009\6\16\0009\6\17\6=\6\19\0059\6\n\0009\6\v\6=\6\r\5=\5!\4=\4\"\3B\1\2\1K\0\1\0\14overrides\27NeogitCommitViewHeader\1\0\0\27NeogitDiffAddHighlight\badd\1\0\0\nadded\30NeogitDiffDeleteHighlight\vdelete\1\0\0\fremoved\31NeogitDiffContextHighlight\1\0\0\vchange\30NeogitHunkHeaderHighlight\afg\1\0\0\fchanged\bgit\21NeogitHunkHeader\1\0\0\abg\1\0\0\ttext\tdiff\1\0\3\17globalStatus\2\17dim_inactive\2\16transparent\2\rkanagawa\1\0\a\14vertright\b┣\nhoriz\b━\14horizdown\b┳\14verthoriz\b╋\rvertleft\b┨\fhorizup\b┻\tvert\b┃\vappend\14fillchars\bopt\bvim\nsetup\20kanagawa.colors\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/kanagawa.nvim", + url = "https://github.com/rebelot/kanagawa.nvim" + }, + ["keymap-layer.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/keymap-layer.nvim", + url = "https://github.com/anuvyklack/keymap-layer.nvim" + }, + ["lsp_lines.nvim"] = { + config = { "\27LJ\2\n7\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\14lsp_lines\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/lsp_lines.nvim", + url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim" + }, + ["lsp_signature.nvim"] = { + config = { "\27LJ\2\n~\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\4\20floating_window\1\15toggle_key\n\16hint_prefix\5\16hint_enable\2\nsetup\18lsp_signature\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/lsp_signature.nvim", + url = "https://github.com/ray-x/lsp_signature.nvim" + }, + ["lua-dev.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/lua-dev.nvim", + url = "https://github.com/folke/lua-dev.nvim" + }, + ["lualine.nvim"] = { + config = { "\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.statusline\frequire\0" }, + load_after = { + ["nvim-bufferline.lua"] = true + }, + loaded = false, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["markdown-preview.nvim"] = { + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/markdown-preview.nvim", + url = "https://github.com/iamcco/markdown-preview.nvim" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["mini.nvim"] = { + config = { "\27LJ\2\n\1\0\0\4\0\a\0\0156\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0016\0\0\0'\2\3\0B\0\2\0029\0\2\0005\2\5\0005\3\4\0=\3\6\2B\0\2\1K\0\1\0\rmappings\1\0\0\1\0\a\vdelete\ads\19update_n_lines\5\tfind\5\14find_left\5\14highlight\5\freplace\acs\badd\ags\18mini.surround\nsetup\20mini.cursorword\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/mini.nvim", + url = "https://github.com/echasnovski/mini.nvim" + }, + ["mkdir.nvim"] = { + commands = { "new" }, + config = { "\27LJ\2\n%\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\nmkdir\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/mkdir.nvim", + url = "https://github.com/jghauser/mkdir.nvim" + }, + ["neo-tree.nvim"] = { + config = { "\27LJ\2\n7\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\28plugins.configs.neotree\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/neo-tree.nvim", + url = "https://github.com/nvim-neo-tree/neo-tree.nvim" + }, + neoformat = { + commands = { "Neoformat" }, + config = { "\27LJ\2\n9\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\30plugins.configs.neoformat\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/neoformat", + url = "https://github.com/sbdchd/neoformat" + }, + neogen = { + config = { "\27LJ\2\nR\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\19snippet_engine\fluasnip\nsetup\vneogen\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/neogen", + url = "https://github.com/danymat/neogen" + }, + neogit = { + config = { "\27LJ\2\nz\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0005\3\4\0=\3\5\2B\0\2\1K\0\1\0\17integrations\1\0\1\rdiffview\2\1\0\1 disable_commit_confirmation\2\nsetup\vneogit\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/neogit", + url = "https://github.com/TimUntersberger/neogit" + }, + neorg = { + config = { "\27LJ\2\n6\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\27plugins.configs._neorg\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/neorg", + url = "https://github.com/nvim-neorg/neorg" + }, + ["neorg-telescope"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/neorg-telescope", + url = "https://github.com/nvim-neorg/neorg-telescope" + }, + ["neoscroll.nvim"] = { + config = { "\27LJ\2\nW\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\20easing_function\rcircular\nsetup\14neoscroll\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/neoscroll.nvim", + url = "https://github.com/karb94/neoscroll.nvim" + }, + ["nightfox.nvim"] = { + config = { "\27LJ\2\nk\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\foptions\1\0\0\1\0\2\17dim_inactive\2\16transparent\2\nsetup\rnightfox\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nightfox.nvim", + url = "https://github.com/EdenEast/nightfox.nvim" + }, + ["nui.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nui.nvim", + url = "https://github.com/MunifTanjim/nui.nvim" + }, + ["null-ls.nvim"] = { + config = { "\27LJ\2\n7\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\28plugins.configs.null_ls\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/null-ls.nvim", + url = "https://github.com/jose-elias-alvarez/null-ls.nvim" + }, + ["nvim-autopairs"] = { + config = { "\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19nvim-autopairs\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-autopairs", + url = "https://github.com/windwp/nvim-autopairs" + }, + ["nvim-bufferline.lua"] = { + after = { "lualine.nvim" }, + config = { "\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.bufferline\frequire\0" }, + load_after = { + ["nvim-web-devicons"] = true + }, + loaded = false, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-bufferline.lua", + url = "https://github.com/akinsho/nvim-bufferline.lua" + }, + ["nvim-cmp"] = { + config = { "\27LJ\2\n4\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\25plugins.configs._cmp\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-code-action-menu"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-code-action-menu", + url = "https://github.com/weilbith/nvim-code-action-menu" + }, + ["nvim-colorizer.lua"] = { + config = { "\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.nvim-colorizer\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-colorizer.lua", + url = "https://github.com/norcalli/nvim-colorizer.lua" + }, + ["nvim-comment"] = { + commands = { "CommentToggle" }, + config = { "\27LJ\2\n:\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\17nvim_comment\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-comment", + url = "https://github.com/terrortylor/nvim-comment" + }, + ["nvim-dap"] = { + after = { "nvim-dap-python", "nvim-dap-ui", "nvim-dap-virtual-text" }, + config = { "\27LJ\2\ne\0\0\3\0\4\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\0016\0\0\0'\2\3\0B\0\2\1K\0\1\0\25plugins.configs._dap\18load_launchjs\19dap.ext.vscode\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-dap", + url = "https://github.com/mfussenegger/nvim-dap" + }, + ["nvim-dap-python"] = { + config = { "\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.python-dap\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-dap-python", + url = "https://github.com/mfussenegger/nvim-dap-python" + }, + ["nvim-dap-ui"] = { + config = { "\27LJ\2\n6\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\27plugins.configs.dap-ui\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-dap-ui", + url = "https://github.com/rcarriga/nvim-dap-ui" + }, + ["nvim-dap-virtual-text"] = { + config = { "\27LJ\2\nG\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\26nvim-dap-virtual-text\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-dap-virtual-text", + url = "https://github.com/theHamsta/nvim-dap-virtual-text" + }, + ["nvim-hlslens"] = { + after = { "nvim-scrollbar" }, + keys = { { "", "/" } }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-hlslens", + url = "https://github.com/kevinhwang91/nvim-hlslens" + }, + ["nvim-keymap-amend"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-keymap-amend", + url = "https://github.com/anuvyklack/nvim-keymap-amend" + }, + ["nvim-lastplace"] = { + config = { "\27LJ\2\n\1\0\0\4\0\b\0\v6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\0025\3\6\0=\3\a\2B\0\2\1K\0\1\0\30lastplace_ignore_filetype\1\6\0\0\14gitcommit\14gitrebase\bsvn\rhgcommit\rfugitive\29lastplace_ignore_buftype\1\0\1\25lastplace_open_folds\2\1\4\0\0\rquickfix\vnofile\thelp\nsetup\19nvim-lastplace\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-lastplace", + url = "https://github.com/ethanholz/nvim-lastplace" + }, + ["nvim-lspconfig"] = { + config = { "\27LJ\2\nW\0\0\3\0\4\0\n6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0016\0\0\0'\2\3\0B\0\2\1K\0\1\0\24plugins.configs.lsp\nsetup\nmason\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-neoclip.lua"] = { + config = { "\27LJ\2\n8\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\29plugins.configs._neoclip\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-neoclip.lua", + url = "https://github.com/AckslD/nvim-neoclip.lua" + }, + ["nvim-notify"] = { + after = { "nvim-dap" }, + config = { "\27LJ\2\n;\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0 plugins.configs.nvim-notify\frequire\0" }, + loaded = true, + only_config = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-notify", + url = "https://github.com/rcarriga/nvim-notify" + }, + ["nvim-scrollbar"] = { + config = { "\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.diag-scrollbar\frequire\0" }, + load_after = { + ["nvim-hlslens"] = true + }, + loaded = false, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-scrollbar", + url = "https://github.com/petertriho/nvim-scrollbar" + }, + ["nvim-treesitter"] = { + after = { "nvim-treesitter-textobjects", "neorg" }, + config = { "\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.treesitter\frequire\0" }, + loaded = true, + only_config = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-treesitter-textobjects"] = { + config = { "\27LJ\2\n\4\0\0\6\0\20\0\0236\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\18\0005\3\6\0005\4\3\0005\5\4\0=\5\5\4=\4\a\0035\4\b\0005\5\t\0=\5\n\0045\5\v\0=\5\f\0045\5\r\0=\5\14\0045\5\15\0=\5\16\4=\4\17\3=\3\19\2B\0\2\1K\0\1\0\16textobjects\1\0\0\tmove\22goto_previous_end\1\0\3\b[ce\17@class.outer\b[fe\20@function.outer\b[bs\17@block.outer\24goto_previous_start\1\0\3\b[fs\20@function.outer\b[bs\17@block.outer\b[cs\17@class.outer\18goto_next_end\1\0\3\b]be\17@block.outer\b]fe\20@function.outer\b]ce\17@class.outer\20goto_next_start\1\0\3\b]bs\17@block.outer\b]fs\20@function.outer\b]cs\17@class.outer\1\0\2\venable\2\14set_jumps\2\vselect\1\0\0\fkeymaps\1\0\6\aif\20@function.inner\aab\17@block.outer\aib\17@block.inner\aic\17@class.inner\aaf\20@function.outer\aac\17@class.outer\1\0\2\venable\2\14lookahead\2\nsetup\28nvim-treesitter.configs\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-treesitter-textobjects", + url = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects" + }, + ["nvim-web-devicons"] = { + after = { "nvim-bufferline.lua" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["nvim-yati"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/nvim-yati", + url = "https://github.com/yioneko/nvim-yati" + }, + ["packer.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["presence.nvim"] = { + config = { "\27LJ\2\nb\0\0\4\0\4\0\b6\0\0\0'\2\1\0B\0\2\2\18\2\0\0009\0\2\0005\3\3\0B\0\3\1K\0\1\0\1\0\1\22neovim_image_text\19How do I exit?\nsetup\rpresence\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/presence.nvim", + url = "https://github.com/andweeb/presence.nvim" + }, + ["pretty-fold.nvim"] = { + config = { "\27LJ\2\nL\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\14fill_char\6 \nsetup\16pretty-fold\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/pretty-fold.nvim", + url = "https://github.com/anuvyklack/pretty-fold.nvim" + }, + ["refactoring.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/refactoring.nvim", + url = "https://github.com/ThePrimeagen/refactoring.nvim" + }, + ["rest.nvim"] = { + config = { "\27LJ\2\nU\0\0\4\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\1\2\0005\3\3\0B\1\2\1K\0\1\0\1\0\1\26skip_ssl_verification\2\nsetup\14rest-nvim\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/rest.nvim", + url = "https://github.com/NTBBloodbath/rest.nvim" + }, + ["rust-tools.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/rust-tools.nvim", + url = "https://github.com/simrat39/rust-tools.nvim" + }, + ["sqlite.lua"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/sqlite.lua", + url = "https://github.com/tami5/sqlite.lua" + }, + ["sqls.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/sqls.nvim", + url = "https://github.com/nanotee/sqls.nvim" + }, + ["stabilize.nvim"] = { + config = { "\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs._stabilize\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/stabilize.nvim", + url = "https://github.com/luukvbaal/stabilize.nvim" + }, + ["symbols-outline.nvim"] = { + commands = { "SymbolsOutline", "SymbolsOutlineOpen", "SymbolsOutlineClose" }, + config = { "\27LJ\2\n\1\0\0\3\0\3\0\0056\0\0\0009\0\1\0'\2\2\0B\0\2\1K\0\1\0|hi FocusedSymbol term=italic,bold cterm=italic ctermbg=yellow ctermfg=darkblue gui=bold,italic guibg=none guifg=#59D0FF\bcmd\bvim\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/symbols-outline.nvim", + url = "https://github.com/simrat39/symbols-outline.nvim" + }, + ["telescope-file-browser.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope-file-browser.nvim", + url = "https://github.com/nvim-telescope/telescope-file-browser.nvim" + }, + ["telescope-fzf-native.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope-fzf-native.nvim", + url = "https://github.com/nvim-telescope/telescope-fzf-native.nvim" + }, + ["telescope-media-files.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope-media-files.nvim", + url = "https://github.com/nvim-telescope/telescope-media-files.nvim" + }, + ["telescope-smart-history.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope-smart-history.nvim", + url = "https://github.com/nvim-telescope/telescope-smart-history.nvim" + }, + ["telescope-ui-select.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope-ui-select.nvim", + url = "https://github.com/nvim-telescope/telescope-ui-select.nvim" + }, + ["telescope.nvim"] = { + config = { "\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.telescope-nvim\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + telescope_find_directories = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/telescope_find_directories", + url = "https://github.com/artart222/telescope_find_directories" + }, + ["todo-comments.nvim"] = { + config = { "\27LJ\2\n?\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\18todo-comments\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/todo-comments.nvim", + url = "https://github.com/folke/todo-comments.nvim" + }, + ["tokyonight.nvim"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/tokyonight.nvim", + url = "https://github.com/folke/tokyonight.nvim" + }, + ["trouble.nvim"] = { + commands = { "Trouble", "TroubleClose", "TroubleToggle", "TroubleRefresh" }, + config = { "\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\ftrouble\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + undotree = { + commands = { "UndotreeToggle" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/undotree", + url = "https://github.com/mbbill/undotree" + }, + ["vim-log-highlighting"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/vim-log-highlighting", + url = "https://github.com/MTDL9/vim-log-highlighting" + }, + ["vim-move"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/vim-move", + url = "https://github.com/matze/vim-move" + }, + ["vim-startuptime"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/vim-startuptime", + url = "https://github.com/dstein64/vim-startuptime" + }, + ["vim-visual-multi"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/vim-visual-multi", + url = "https://github.com/mg979/vim-visual-multi" + }, + ["vim-vsnip"] = { + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/vim-vsnip", + url = "https://github.com/hrsh7th/vim-vsnip" + }, + ["which-key.nvim"] = { + config = { "\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14which-key\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/which-key.nvim", + url = "https://github.com/folke/which-key.nvim" + }, + ["workspaces.nvim"] = { + config = { "\27LJ\2\n]\0\0\5\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\1\2\0005\3\4\0005\4\3\0=\4\5\3B\1\2\1K\0\1\0\nhooks\1\0\0\1\0\1\topen\fNeotree\nsetup\15workspaces\frequire\0" }, + loaded = true, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/start/workspaces.nvim", + url = "https://github.com/natecraddock/workspaces.nvim" + }, + ["zen-mode.nvim"] = { + commands = { "ZenMode" }, + config = { "\27LJ\2\n:\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\rzen-mode\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/Users/pricehiller/.local/share/nvim/site/pack/packer/opt/zen-mode.nvim", + url = "https://github.com/folke/zen-mode.nvim" + } +} + +time([[Defining packer_plugins]], false) +local module_lazy_loads = { + ["^hlslens"] = "nvim-hlslens" +} +local lazy_load_called = {['packer.load'] = true} +local function lazy_load_module(module_name) + local to_load = {} + if lazy_load_called[module_name] then return nil end + lazy_load_called[module_name] = true + for module_pat, plugin_name in pairs(module_lazy_loads) do + if not _G.packer_plugins[plugin_name].loaded and string.match(module_name, module_pat) then + to_load[#to_load + 1] = plugin_name + end + end + + if #to_load > 0 then + require('packer.load')(to_load, {module = module_name}, _G.packer_plugins) + local loaded_mod = package.loaded[module_name] + if loaded_mod then + return function(modname) return loaded_mod end + end + end +end + +if not vim.g.packer_custom_loader_enabled then + table.insert(package.loaders, 1, lazy_load_module) + vim.g.packer_custom_loader_enabled = true +end + +-- Setup for: markdown-preview.nvim +time([[Setup for markdown-preview.nvim]], true) +try_loadstring("\27LJ\2\n=\0\0\2\0\4\0\0056\0\0\0009\0\1\0005\1\3\0=\1\2\0K\0\1\0\1\2\0\0\rmarkdown\19mkdp_filetypes\6g\bvim\0", "setup", "markdown-preview.nvim") +time([[Setup for markdown-preview.nvim]], false) +-- Setup for: undotree +time([[Setup for undotree]], true) +try_loadstring("\27LJ\2\n7\0\0\2\0\3\0\0056\0\0\0009\0\1\0)\1\3\0=\1\2\0K\0\1\0\26undotree_WindowLayout\6g\bvim\0", "setup", "undotree") +time([[Setup for undotree]], false) +-- Config for: neo-tree.nvim +time([[Config for neo-tree.nvim]], true) +try_loadstring("\27LJ\2\n7\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\28plugins.configs.neotree\frequire\0", "config", "neo-tree.nvim") +time([[Config for neo-tree.nvim]], false) +-- Config for: kanagawa.nvim +time([[Config for kanagawa.nvim]], true) +try_loadstring("\27LJ\2\n\5\0\0\a\0#\0@6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0026\1\3\0009\1\4\0019\1\5\1\18\3\1\0009\1\6\0015\4\a\0B\1\3\0016\1\0\0'\3\b\0B\1\2\0029\1\2\0015\3\t\0005\4\14\0005\5\f\0009\6\n\0009\6\v\6=\6\r\5=\5\15\0045\5\18\0009\6\16\0009\6\17\6=\6\19\0059\6\n\0009\6\v\6=\6\r\5=\5\20\0045\5\22\0009\6\n\0009\6\21\6=\6\r\5=\5\23\0045\5\25\0009\6\16\0009\6\24\6=\6\19\0059\6\n\0009\6\26\6=\6\r\5=\5\27\0045\5\29\0009\6\16\0009\6\28\6=\6\19\0059\6\n\0009\6\30\6=\6\r\5=\5\31\0045\5 \0009\6\16\0009\6\17\6=\6\19\0059\6\n\0009\6\v\6=\6\r\5=\5!\4=\4\"\3B\1\2\1K\0\1\0\14overrides\27NeogitCommitViewHeader\1\0\0\27NeogitDiffAddHighlight\badd\1\0\0\nadded\30NeogitDiffDeleteHighlight\vdelete\1\0\0\fremoved\31NeogitDiffContextHighlight\1\0\0\vchange\30NeogitHunkHeaderHighlight\afg\1\0\0\fchanged\bgit\21NeogitHunkHeader\1\0\0\abg\1\0\0\ttext\tdiff\1\0\3\17globalStatus\2\17dim_inactive\2\16transparent\2\rkanagawa\1\0\a\14vertright\b┣\nhoriz\b━\14horizdown\b┳\14verthoriz\b╋\rvertleft\b┨\fhorizup\b┻\tvert\b┃\vappend\14fillchars\bopt\bvim\nsetup\20kanagawa.colors\frequire\0", "config", "kanagawa.nvim") +time([[Config for kanagawa.nvim]], false) +-- Config for: which-key.nvim +time([[Config for which-key.nvim]], true) +try_loadstring("\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14which-key\frequire\0", "config", "which-key.nvim") +time([[Config for which-key.nvim]], false) +-- Config for: telescope.nvim +time([[Config for telescope.nvim]], true) +try_loadstring("\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.telescope-nvim\frequire\0", "config", "telescope.nvim") +time([[Config for telescope.nvim]], false) +-- Config for: alpha-nvim +time([[Config for alpha-nvim]], true) +try_loadstring("\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26plugins.configs.alpha\frequire\0", "config", "alpha-nvim") +time([[Config for alpha-nvim]], false) +-- Config for: rest.nvim +time([[Config for rest.nvim]], true) +try_loadstring("\27LJ\2\nU\0\0\4\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\1\2\0005\3\3\0B\1\2\1K\0\1\0\1\0\1\26skip_ssl_verification\2\nsetup\14rest-nvim\frequire\0", "config", "rest.nvim") +time([[Config for rest.nvim]], false) +-- Config for: null-ls.nvim +time([[Config for null-ls.nvim]], true) +try_loadstring("\27LJ\2\n7\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\28plugins.configs.null_ls\frequire\0", "config", "null-ls.nvim") +time([[Config for null-ls.nvim]], false) +-- Config for: inc-rename.nvim.git +time([[Config for inc-rename.nvim.git]], true) +try_loadstring("\27LJ\2\n<\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\15inc_rename\frequire\0", "config", "inc-rename.nvim.git") +time([[Config for inc-rename.nvim.git]], false) +-- Config for: pretty-fold.nvim +time([[Config for pretty-fold.nvim]], true) +try_loadstring("\27LJ\2\nL\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\14fill_char\6 \nsetup\16pretty-fold\frequire\0", "config", "pretty-fold.nvim") +time([[Config for pretty-fold.nvim]], false) +-- Config for: neogen +time([[Config for neogen]], true) +try_loadstring("\27LJ\2\nR\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\19snippet_engine\fluasnip\nsetup\vneogen\frequire\0", "config", "neogen") +time([[Config for neogen]], false) +-- Config for: nvim-lastplace +time([[Config for nvim-lastplace]], true) +try_loadstring("\27LJ\2\n\1\0\0\4\0\b\0\v6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\0025\3\6\0=\3\a\2B\0\2\1K\0\1\0\30lastplace_ignore_filetype\1\6\0\0\14gitcommit\14gitrebase\bsvn\rhgcommit\rfugitive\29lastplace_ignore_buftype\1\0\1\25lastplace_open_folds\2\1\4\0\0\rquickfix\vnofile\thelp\nsetup\19nvim-lastplace\frequire\0", "config", "nvim-lastplace") +time([[Config for nvim-lastplace]], false) +-- Config for: hydra.nvim +time([[Config for hydra.nvim]], true) +try_loadstring("\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26plugins.configs.hydra\frequire\0", "config", "hydra.nvim") +time([[Config for hydra.nvim]], false) +-- Config for: nvim-neoclip.lua +time([[Config for nvim-neoclip.lua]], true) +try_loadstring("\27LJ\2\n8\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\29plugins.configs._neoclip\frequire\0", "config", "nvim-neoclip.lua") +time([[Config for nvim-neoclip.lua]], false) +-- Config for: neoscroll.nvim +time([[Config for neoscroll.nvim]], true) +try_loadstring("\27LJ\2\nW\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\20easing_function\rcircular\nsetup\14neoscroll\frequire\0", "config", "neoscroll.nvim") +time([[Config for neoscroll.nvim]], false) +-- Config for: hop.nvim +time([[Config for hop.nvim]], true) +try_loadstring("\27LJ\2\nU\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\tkeys\28etovxqpdygfblzhckisuran\nsetup\bhop\frequire\0", "config", "hop.nvim") +time([[Config for hop.nvim]], false) +-- Config for: stabilize.nvim +time([[Config for stabilize.nvim]], true) +try_loadstring("\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs._stabilize\frequire\0", "config", "stabilize.nvim") +time([[Config for stabilize.nvim]], false) +-- Config for: nvim-treesitter +time([[Config for nvim-treesitter]], true) +try_loadstring("\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.treesitter\frequire\0", "config", "nvim-treesitter") +time([[Config for nvim-treesitter]], false) +-- Config for: nightfox.nvim +time([[Config for nightfox.nvim]], true) +try_loadstring("\27LJ\2\nk\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\foptions\1\0\0\1\0\2\17dim_inactive\2\16transparent\2\nsetup\rnightfox\frequire\0", "config", "nightfox.nvim") +time([[Config for nightfox.nvim]], false) +-- Config for: lsp_signature.nvim +time([[Config for lsp_signature.nvim]], true) +try_loadstring("\27LJ\2\n~\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\4\20floating_window\1\15toggle_key\n\16hint_prefix\5\16hint_enable\2\nsetup\18lsp_signature\frequire\0", "config", "lsp_signature.nvim") +time([[Config for lsp_signature.nvim]], false) +-- Config for: presence.nvim +time([[Config for presence.nvim]], true) +try_loadstring("\27LJ\2\nb\0\0\4\0\4\0\b6\0\0\0'\2\1\0B\0\2\2\18\2\0\0009\0\2\0005\3\3\0B\0\3\1K\0\1\0\1\0\1\22neovim_image_text\19How do I exit?\nsetup\rpresence\frequire\0", "config", "presence.nvim") +time([[Config for presence.nvim]], false) +-- Config for: fidget.nvim +time([[Config for fidget.nvim]], true) +try_loadstring("\27LJ\2\n>\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0#plugins.configs.fidget-spinner\frequire\0", "config", "fidget.nvim") +time([[Config for fidget.nvim]], false) +-- Config for: nvim-notify +time([[Config for nvim-notify]], true) +try_loadstring("\27LJ\2\n;\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0 plugins.configs.nvim-notify\frequire\0", "config", "nvim-notify") +time([[Config for nvim-notify]], false) +-- Config for: nvim-autopairs +time([[Config for nvim-autopairs]], true) +try_loadstring("\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19nvim-autopairs\frequire\0", "config", "nvim-autopairs") +time([[Config for nvim-autopairs]], false) +-- Config for: neogit +time([[Config for neogit]], true) +try_loadstring("\27LJ\2\nz\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0005\3\4\0=\3\5\2B\0\2\1K\0\1\0\17integrations\1\0\1\rdiffview\2\1\0\1 disable_commit_confirmation\2\nsetup\vneogit\frequire\0", "config", "neogit") +time([[Config for neogit]], false) +-- Config for: nvim-lspconfig +time([[Config for nvim-lspconfig]], true) +try_loadstring("\27LJ\2\nW\0\0\3\0\4\0\n6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0016\0\0\0'\2\3\0B\0\2\1K\0\1\0\24plugins.configs.lsp\nsetup\nmason\frequire\0", "config", "nvim-lspconfig") +time([[Config for nvim-lspconfig]], false) +-- Config for: lsp_lines.nvim +time([[Config for lsp_lines.nvim]], true) +try_loadstring("\27LJ\2\n7\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\14lsp_lines\frequire\0", "config", "lsp_lines.nvim") +time([[Config for lsp_lines.nvim]], false) +-- Config for: mini.nvim +time([[Config for mini.nvim]], true) +try_loadstring("\27LJ\2\n\1\0\0\4\0\a\0\0156\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\0016\0\0\0'\2\3\0B\0\2\0029\0\2\0005\2\5\0005\3\4\0=\3\6\2B\0\2\1K\0\1\0\rmappings\1\0\0\1\0\a\vdelete\ads\19update_n_lines\5\tfind\5\14find_left\5\14highlight\5\freplace\acs\badd\ags\18mini.surround\nsetup\20mini.cursorword\frequire\0", "config", "mini.nvim") +time([[Config for mini.nvim]], false) +-- Config for: nvim-cmp +time([[Config for nvim-cmp]], true) +try_loadstring("\27LJ\2\n4\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\25plugins.configs._cmp\frequire\0", "config", "nvim-cmp") +time([[Config for nvim-cmp]], false) +-- Config for: workspaces.nvim +time([[Config for workspaces.nvim]], true) +try_loadstring("\27LJ\2\n]\0\0\5\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\1\2\0005\3\4\0005\4\3\0=\4\5\3B\1\2\1K\0\1\0\nhooks\1\0\0\1\0\1\topen\fNeotree\nsetup\15workspaces\frequire\0", "config", "workspaces.nvim") +time([[Config for workspaces.nvim]], false) +-- Load plugins in order defined by `after` +time([[Sequenced loading]], true) +vim.cmd [[ packadd neorg ]] + +-- Config for: neorg +try_loadstring("\27LJ\2\n6\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\27plugins.configs._neorg\frequire\0", "config", "neorg") + +vim.cmd [[ packadd nvim-treesitter-textobjects ]] + +-- Config for: nvim-treesitter-textobjects +try_loadstring("\27LJ\2\n\4\0\0\6\0\20\0\0236\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\18\0005\3\6\0005\4\3\0005\5\4\0=\5\5\4=\4\a\0035\4\b\0005\5\t\0=\5\n\0045\5\v\0=\5\f\0045\5\r\0=\5\14\0045\5\15\0=\5\16\4=\4\17\3=\3\19\2B\0\2\1K\0\1\0\16textobjects\1\0\0\tmove\22goto_previous_end\1\0\3\b[ce\17@class.outer\b[fe\20@function.outer\b[bs\17@block.outer\24goto_previous_start\1\0\3\b[fs\20@function.outer\b[bs\17@block.outer\b[cs\17@class.outer\18goto_next_end\1\0\3\b]be\17@block.outer\b]fe\20@function.outer\b]ce\17@class.outer\20goto_next_start\1\0\3\b]bs\17@block.outer\b]fs\20@function.outer\b]cs\17@class.outer\1\0\2\venable\2\14set_jumps\2\vselect\1\0\0\fkeymaps\1\0\6\aif\20@function.inner\aab\17@block.outer\aib\17@block.inner\aic\17@class.inner\aaf\20@function.outer\aac\17@class.outer\1\0\2\venable\2\14lookahead\2\nsetup\28nvim-treesitter.configs\frequire\0", "config", "nvim-treesitter-textobjects") + +vim.cmd [[ packadd tokyonight.nvim ]] +vim.cmd [[ packadd LuaSnip ]] +vim.cmd [[ packadd nvim-dap ]] + +-- Config for: nvim-dap +try_loadstring("\27LJ\2\ne\0\0\3\0\4\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\0016\0\0\0'\2\3\0B\0\2\1K\0\1\0\25plugins.configs._dap\18load_launchjs\19dap.ext.vscode\frequire\0", "config", "nvim-dap") + +vim.cmd [[ packadd nvim-dap-virtual-text ]] + +-- Config for: nvim-dap-virtual-text +try_loadstring("\27LJ\2\nG\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\26nvim-dap-virtual-text\frequire\0", "config", "nvim-dap-virtual-text") + +vim.cmd [[ packadd nvim-dap-python ]] + +-- Config for: nvim-dap-python +try_loadstring("\27LJ\2\n:\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\31plugins.configs.python-dap\frequire\0", "config", "nvim-dap-python") + +vim.cmd [[ packadd nvim-dap-ui ]] + +-- Config for: nvim-dap-ui +try_loadstring("\27LJ\2\n6\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\27plugins.configs.dap-ui\frequire\0", "config", "nvim-dap-ui") + +time([[Sequenced loading]], false) + +-- Command lazy-loads +time([[Defining lazy-load commands]], true) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file ZenMode lua require("packer.load")({'zen-mode.nvim'}, { cmd = "ZenMode", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Neoformat lua require("packer.load")({'neoformat'}, { cmd = "Neoformat", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file UndotreeToggle lua require("packer.load")({'undotree'}, { cmd = "UndotreeToggle", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file CommentToggle lua require("packer.load")({'nvim-comment'}, { cmd = "CommentToggle", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file new lua require("packer.load")({'mkdir.nvim'}, { cmd = "new", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file SymbolsOutline lua require("packer.load")({'symbols-outline.nvim'}, { cmd = "SymbolsOutline", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file SymbolsOutlineOpen lua require("packer.load")({'symbols-outline.nvim'}, { cmd = "SymbolsOutlineOpen", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file SymbolsOutlineClose lua require("packer.load")({'symbols-outline.nvim'}, { cmd = "SymbolsOutlineClose", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Trouble lua require("packer.load")({'trouble.nvim'}, { cmd = "Trouble", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file TroubleClose lua require("packer.load")({'trouble.nvim'}, { cmd = "TroubleClose", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file TroubleToggle lua require("packer.load")({'trouble.nvim'}, { cmd = "TroubleToggle", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file TroubleRefresh lua require("packer.load")({'trouble.nvim'}, { cmd = "TroubleRefresh", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +time([[Defining lazy-load commands]], false) + +-- Keymap lazy-loads +time([[Defining lazy-load keymaps]], true) +vim.api.nvim_set_keymap("", "/", "lua require('packer.load')({'nvim-hlslens'}, { keys = '/', prefix = '' }, _G.packer_plugins)", { noremap = true, silent = true }) +time([[Defining lazy-load keymaps]], false) + +vim.cmd [[augroup packer_load_aucmds]] +vim.cmd [[au!]] + -- Filetype lazy-loads +time([[Defining lazy-load filetype autocommands]], true) +vim.cmd [[au FileType markdown ++once lua require("packer.load")({'markdown-preview.nvim'}, { ft = "markdown" }, _G.packer_plugins)]] +time([[Defining lazy-load filetype autocommands]], false) + -- Event lazy-loads +time([[Defining lazy-load event autocommands]], true) +vim.cmd [[au BufRead * ++once lua require("packer.load")({'gitsigns.nvim'}, { event = "BufRead *" }, _G.packer_plugins)]] +vim.cmd [[au BufRead Cargo.toml ++once lua require("packer.load")({'crates.nvim'}, { event = "BufRead Cargo.toml" }, _G.packer_plugins)]] +vim.cmd [[au BufEnter * ++once lua require("packer.load")({'indent-blankline.nvim', 'friendly-snippets', 'nvim-colorizer.lua', 'nvim-web-devicons', 'todo-comments.nvim'}, { event = "BufEnter *" }, _G.packer_plugins)]] +time([[Defining lazy-load event autocommands]], false) +vim.cmd("augroup END") +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/autocmds.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/autocmds.lua new file mode 100755 index 00000000..08a47c24 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/autocmds.lua @@ -0,0 +1,31 @@ +vim.api.nvim_create_autocmd('BufWritePre', { + pattern = '*', + callback = function() + local filetype = vim.bo.filetype + local neoformat_types = { 'sh' } + local ignore_types = { 'sql' } + + for _, ig_type in ipairs(ignore_types) do + if filetype == ig_type then + return + end + end + + for _, nf_type in ipairs(neoformat_types) do + if filetype == nf_type then + vim.cmd('Neoformat') + return + end + end + + vim.cmd('lua vim.lsp.buf.format({})') + end, +}) + +vim.api.nvim_create_autocmd('BufWritePost', { + pattern = '**/nvim/lua/plugins/plugins.lua', + callback = function() + vim.notify('Compiling Packer') + require('packer').compile() + end, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_cmp.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_cmp.lua new file mode 100755 index 00000000..f7dbf0cf --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_cmp.lua @@ -0,0 +1,240 @@ +local cmp = require('cmp') +local types = require('cmp.types') +local str = require('cmp.utils.str') +local compare = cmp.config.compare +local luasnip = require('luasnip') + +local kind_icons = { + Text = '', + Method = '', + Function = '', + Constructor = '', + Field = '', + Variable = '', + Class = 'ﴯ', + Interface = '', + Module = '', + Property = 'ﰠ', + Unit = '', + Value = '', + Enum = '', + Keyword = '', + Snippet = '', + Color = '', + File = '', + Reference = '', + Folder = '', + EnumMember = '', + Constant = '', + Struct = '', + Event = '', + Operator = '', + TypeParameter = '', +} + +-- Load Snippets +require('luasnip.loaders.from_vscode').lazy_load() + +local border = { + { '╭', 'CmpBorder' }, + { '─', 'CmpBorder' }, + { '╮', 'CmpBorder' }, + { '│', 'CmpBorder' }, + { '╯', 'CmpBorder' }, + { '─', 'CmpBorder' }, + { '╰', 'CmpBorder' }, + { '│', 'CmpBorder' }, +} + +cmp.setup({ + formatting = { + fields = { + cmp.ItemField.Kind, + cmp.ItemField.Abbr, + cmp.ItemField.Menu, + }, + format = function(entry, vim_item) + -- Get the full snippet (and only keep first line) + local word = entry:get_insert_text() + if entry.completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet then + word = vim.lsp.util.parse_snippet(word) + end + word = str.oneline(word) + + -- concatenates the string + local max = 50 + if string.len(word) >= max then + local before = string.sub(word, 1, math.floor((max - 3) / 2)) + word = before .. '...' + end + + if entry.completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet + and string.sub(vim_item.abbr, -1, -1) == '~' + then + word = word .. '~' + end + vim_item.abbr = word + -- Kind icons + vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind + -- Source + vim_item.menu = ({ + fuzzy_buffer = '[Buffer]', + nvim_lsp = '[Lsp]', + luasnip = '[LuaSnip]', + path = '[Path]', + calc = '[Calculator]', + neorg = '[Neorg]', + emoji = '[Emoji]', + zsh = '[Zsh]', + crates = '[Crates]', + cmdline_history = '[Cmd History]', + rg = '[Ripgrep]', + npm = '[Npm],', + conventionalcommits = '[Commit]', + })[entry.source.name] + return vim_item + end, + }, + window = { + documentation = { + border = border, + }, + completion = { + border = border, + }, + }, + experimental = { + ghost_text = true, + native_menu = false, + }, + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + end, + }, + mapping = { + [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [''] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [''] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [''] = cmp.mapping(function(fallback) + if luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp', priority = 10 }, + { name = 'luasnip', priority = 9 }, -- For luasnip users. + { name = 'fuzzy_buffer', priority = 8 }, + { name = 'rg', priority = 7 }, + { name = 'path', priority = 6 }, + { name = 'zsh', priority = 5 }, + { name = 'emoji', keyword_length = 2 }, + { name = 'neorg' }, + { name = 'calc' }, + { name = 'npm', keyword_length = 2 }, + { + name = 'dictionary', + keyword_length = 2, + }, + }), + sorting = { + comparators = { + compare.score, + compare.offset, + compare.recently_used, + compare.exact, + require('cmp_fuzzy_buffer.compare'), + compare.kind, + compare.sort_text, + compare.length, + compare.order, + }, + }, +}) + +-- Git Commit Completions +cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'conventionalcommits', priority = 20 }, + }), +}) + +cmp.setup.filetype('NeogitCommitMesssage', { + sources = cmp.config.sources({ + { name = 'conventionalcommits', priority = 20 }, + }), +}) + +cmp.setup.filetype('toml', { + sources = cmp.config.sources({ + { name = 'crates' }, + }), +}) + +-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline('/', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'fuzzy_buffer' }, + { name = 'cmdline_history' }, + }), +}) + +cmp.setup.cmdline('?', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'fuzzy_buffer' }, + { name = 'cmdline_history' }, + }), +}) + +cmp.setup.cmdline('@', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'fuzzy_buffer' }, + { name = 'cmdline_history' }, + }), +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' }, + { name = 'cmdline' }, + { name = 'cmdline_history' }, + }), +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_dap.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_dap.lua new file mode 100755 index 00000000..3e91509d --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_dap.lua @@ -0,0 +1,67 @@ +local dap = require('dap') +local async = require('plenary.async') + +--- Gets a path for a given program in the environment +---@param program @The string of a program in the PATH +---@return @The full path to the program if found, or nil if not +local function get_program_path(program) + local home = os.getenv('HOME') + local program_path = home .. '/.local/share/nvim/mason/packages/' .. program .. '/' .. program + return program_path +end + +local lldb_path = get_program_path('lldb-vscode') +-- Adapaters +dap.adapters.lldb = { + type = 'executable', + command = lldb_path, + name = 'lldb', +} + +dap.adapters.coreclr = { + type = 'executable', + command = get_program_path('netcoredbg'), + args = { '--interpreter=vscode' }, +} + +-- configurations +dap.configurations.cpp = { + { + name = 'Launch', + type = 'lldb', + request = 'launch', + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = '${workspaceFolder}', + stopOnEntry = false, + targetArchitecture = 'arm64', + args = {}, + + -- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting: + -- + -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope + -- + -- Otherwise you might get the following error: + -- + -- Error on launch: Failed to attach to the target process + -- + -- But you should be aware of the implications: + -- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html + runInTerminal = false, + }, +} + +dap.configurations.c = dap.configurations.cpp +dap.configurations.rust = dap.configurations.cpp + +dap.configurations.cs = { + { + type = 'coreclr', + name = 'launch - netcoredbg', + request = 'launch', + program = function() + return vim.fn.input('Path to dll: ', vim.fn.getcwd() .. '/bin/Debug/', 'file') + end, + }, +} diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neoclip.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neoclip.lua new file mode 100755 index 00000000..1aaf7f23 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neoclip.lua @@ -0,0 +1,3 @@ +require('neoclip').setup({ + enable_persistent_history = true, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neorg.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neorg.lua new file mode 100755 index 00000000..13782bcf --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_neorg.lua @@ -0,0 +1,50 @@ +local neorg = require('neorg') + +neorg.setup({ + load = { + ['core.defaults'] = {}, + ['core.norg.concealer'] = {}, + ['core.norg.esupports.metagen'] = { + config = { + type = 'auto', + }, + }, + ['core.integrations.nvim-cmp'] = { + config = {}, + }, + ['core.norg.completion'] = { + config = { + engine = 'nvim-cmp', + }, + }, + ['core.keybinds'] = { + config = { + default_keybinds = true, + -- norg_leader = "-" + }, + }, + ['core.norg.dirman'] = { + config = { + workspaces = { + default = '~/.notes', -- Format: = + }, + autochdir = true, -- Automatically change the directory to the current workspace's root every time + index = 'index.norg', -- The name of the main (root) .norg file + last_workspace = vim.fn.stdpath('cache') .. '/neorg_last_workspace.txt', -- The location to write and read the workspace cache file + }, + }, + ['core.integrations.telescope'] = {}, + ['core.norg.qol.toc'] = {}, + ['core.gtd.base'] = { + config = { + workspace = 'default', + }, + }, + ['core.gtd.ui'] = { + config = {}, + }, + ['core.gtd.helpers'] = { + config = {}, + }, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_stabilize.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_stabilize.lua new file mode 100755 index 00000000..c3c6b362 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_stabilize.lua @@ -0,0 +1,20 @@ +require('stabilize').setup({ + -- stabilize window even when current cursor position will be hidden behind new window + force = true, + -- set context mark to register on force event which can be jumped to with ' + forcemark = nil, + -- do not manage windows matching these file/buftypes + ignore = { + filetype = { 'packer', 'Dashboard', 'Trouble', 'TelescopePrompt' }, + buftype = { + 'packer', + 'Dashboard', + 'terminal', + 'quickfix', + 'loclist', + 'LspInstall', + }, + }, + -- comma-separated list of autocmds that wil trigger the plugins window restore function + nested = nil, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_windline.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_windline.lua new file mode 100755 index 00000000..25db6767 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/_windline.lua @@ -0,0 +1,7 @@ +-- Load Animations +require('wlanimation') +-- Load a line (these include setup) +require('wlsample.bubble2') + +-- In the future I may want to implement +-- my own, for now much too lazy for that diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/alpha.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/alpha.lua new file mode 100644 index 00000000..d88f95fc --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/alpha.lua @@ -0,0 +1,134 @@ +local alpha = require('alpha') +local startify = require('alpha.themes.startify') +local dashboard = require('alpha.themes.dashboard') + +-- Set header +local header = { + type = 'text', + val = { + ' ', + ' ', + ' ', + ' ⣴⣶⣤⡤⠦⣤⣀⣤⠆ ⣈⣭⣿⣶⣿⣦⣼⣆ ', + ' ⠉⠻⢿⣿⠿⣿⣿⣶⣦⠤⠄⡠⢾⣿⣿⡿⠋⠉⠉⠻⣿⣿⡛⣦ ', + ' ⠈⢿⣿⣟⠦ ⣾⣿⣿⣷ ⠻⠿⢿⣿⣧⣄ ', + ' ⣸⣿⣿⢧ ⢻⠻⣿⣿⣷⣄⣀⠄⠢⣀⡀⠈⠙⠿⠄ ', + ' ⢠⣿⣿⣿⠈ ⣻⣿⣿⣿⣿⣿⣿⣿⣛⣳⣤⣀⣀ ', + ' ⢠⣧⣶⣥⡤⢄ ⣸⣿⣿⠘ ⢀⣴⣿⣿⡿⠛⣿⣿⣧⠈⢿⠿⠟⠛⠻⠿⠄ ', + ' ⣰⣿⣿⠛⠻⣿⣿⡦⢹⣿⣷ ⢊⣿⣿⡏ ⢸⣿⣿⡇ ⢀⣠⣄⣾⠄ ', + ' ⣠⣿⠿⠛ ⢀⣿⣿⣷⠘⢿⣿⣦⡀ ⢸⢿⣿⣿⣄ ⣸⣿⣿⡇⣪⣿⡿⠿⣿⣷⡄ ', + ' ⠙⠃ ⣼⣿⡟ ⠈⠻⣿⣿⣦⣌⡇⠻⣿⣿⣷⣿⣿⣿ ⣿⣿⡇ ⠛⠻⢷⣄ ', + ' ⢻⣿⣿⣄ ⠈⠻⣿⣿⣿⣷⣿⣿⣿⣿⣿⡟ ⠫⢿⣿⡆ ', + ' ⠻⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⢀⣀⣤⣾⡿⠃ ', + ' ', + }, + opts = { + position = 'center', + hl = 'Function', + }, +} + +-- Subheader, plugin count +local get_plugins = function() + local num_plugins_loaded = #vim.fn.globpath(vim.fn.stdpath('data') .. '/site/pack/packer/start', '*', 0, 1) + local num_plugins_total = #vim.tbl_keys(packer_plugins) + if num_plugins_total <= 1 then + return num_plugins_loaded .. ' / ' .. num_plugins_total .. ' plugin  loaded' + else + return num_plugins_loaded .. ' / ' .. num_plugins_total .. ' plugins  loaded' + end +end + +local plugin_count = { + type = 'text', + val = { + get_plugins(), + }, + opts = { + hl = 'Comment', + position = 'center', + }, +} + +-- Menu +local button = function(sc, txt, keybind) + local sc_ = sc:gsub('%s', ''):gsub('SPC', '') + + local opts = { + position = 'center', + text = txt, + shortcut = sc, + cursor = 4, + width = 30, + align_shortcut = 'right', + hl_shortcut = 'Number', + hl = 'Function', + } + if keybind then + opts.keymap = { 'n', sc_, keybind, { noremap = true, silent = true } } + end + + return { + type = 'button', + val = txt, + on_press = function() + local key = vim.api.nvim_replace_termcodes(sc_, true, false, true) + vim.api.nvim_feedkeys(key, 'normal', false) + end, + opts = opts, + } +end + +-- Set menu +local buttons = { + type = 'group', + val = { + button('e', ' New File', ':ene startinsert '), + button('f', ' Find File', ':Telescope find_files'), + button('r', ' Recent', ':Telescope oldfiles'), + button('s', ' Settings', ':e ~/.config/nvim/'), + button('u', ' Update Plugins', ':PackerSync'), + button('q', ' Quit', ':qa'), + }, + opts = { + spacing = 0, + }, +} + +-- Footer 2, fortune +local fortune = { + type = 'text', + val = require('alpha.fortune')(), + opts = { + position = 'center', + hl = 'Comment', + }, +} + +local padding = function() + return { type = 'padding', val = 4 } +end +local opts = { + layout = { + padding(), + header, + padding(), + plugin_count, + padding(), + buttons, + padding(), + fortune, + }, + opts = { + margin = 5, + }, +} +-- Send config to alpha +alpha.setup(opts) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'alpha', + callback = function() + vim.opt_local.cursorline = false + end, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/bufferline.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/bufferline.lua new file mode 100755 index 00000000..abd50440 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/bufferline.lua @@ -0,0 +1,18 @@ +local bufferline = require('bufferline') + +bufferline.setup({ + options = { + numbers = function(opts) + return string.format('%s', opts.id) + end, + diagnostics = 'nvim_lsp', + offsets = { + { + filetype = 'NvimTree', + text = 'File Explorer', + highlight = 'Directory', + text_align = 'left', + }, + }, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/coq.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/coq.lua new file mode 100755 index 00000000..3b0e0290 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/coq.lua @@ -0,0 +1,10 @@ +-- Alias for vim.g +local g = vim.g + +-- Run COQ on open +g.coq_settings = { + auto_start = 'shut-up', + limits = { + completion_manual_timeout = 2000, + }, +} diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/dap-ui.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/dap-ui.lua new file mode 100755 index 00000000..5c0df7e9 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/dap-ui.lua @@ -0,0 +1,9 @@ +local fn = vim.fn + +require('dapui').setup({}) + +fn.sign_define('DapBreakpoint', { text = '● ', texthl = 'DiagnosticSignError', linehl = '', numhl = '' }) +fn.sign_define('DapBreakpointCondition', { text = '● ', texthl = 'DiagnosticSignWarn', linehl = '', numhl = '' }) +fn.sign_define('DapLogPoint', { text = '● ', texthl = 'DiagnosticSignInfo', linehl = '', numhl = '' }) +fn.sign_define('DapStopped', { text = '→ ', texthl = 'DiagnosticSignWarn', linehl = '', numhl = '' }) +fn.sign_define('DapBreakpointReject', { text = '●', texthl = 'DiagnosticSignHint', linehl = '', numhl = '' }) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/diag-scrollbar.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/diag-scrollbar.lua new file mode 100755 index 00000000..aa479f3c --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/diag-scrollbar.lua @@ -0,0 +1,18 @@ +local colors = require('tokyonight.colors').setup() +require('scrollbar').setup({ + handle = { + color = colors.bg_highlight, + }, + marks = { + Search = { color = colors.orange }, + Error = { color = colors.error }, + Warn = { color = colors.warning }, + Info = { color = colors.info }, + Hint = { color = colors.hint }, + Misc = { color = colors.purple }, + }, + handlers = { + diagnostic = true, + search = true, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/fidget-spinner.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/fidget-spinner.lua new file mode 100755 index 00000000..0c1fb887 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/fidget-spinner.lua @@ -0,0 +1,10 @@ +local fidget = require('fidget') + +fidget.setup({ + text = { + spinner = 'dots', + }, + window = { + blend = 0, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/file-explorer.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/file-explorer.lua new file mode 100755 index 00000000..4ccf865b --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/file-explorer.lua @@ -0,0 +1,18 @@ +local nvim_tree = require('nvim-tree.configs') + +nvim_tree.setup({ + highlight = { + enable = true, + additional_vim_regex_highlighting = true, + disable = { + -- Ansible support reasons + 'ansible.yaml', + }, + }, + matchup = { + enable = true, + }, + autotag = { + enable = true, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/hydra.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/hydra.lua new file mode 100644 index 00000000..a5f4966b --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/hydra.lua @@ -0,0 +1,117 @@ +local hydra = require('hydra') + +-- Side Scroll +hydra({ + name = 'Side scroll', + config = { + { + position = 'bottom-right', + border = 'rounded', + }, + }, + mode = 'n', + body = 'z', + heads = { + { 'h', '5zh' }, + { 'l', '5zl', { desc = '←/→' } }, + { 'H', 'zH' }, + { 'L', 'zL', { desc = 'half screen ←/→' } }, + }, +}) + +-- Git Integration +local gitsigns = require('gitsigns') + +local hint = [[ + _J_: next hunk _s_: stage hunk _d_: show deleted _b_: blame line + _K_: prev hunk _u_: undo stage hunk _p_: preview hunk _B_: blame show full + ^ ^ _S_: stage buffer ^ ^ _/_: show base file + ^ + ^ ^ __: Neogit _q_: exit +]] + +hydra({ + hint = hint, + config = { + color = 'pink', + invoke_on_body = true, + hint = { + position = 'bottom-right', + border = 'rounded', + }, + on_enter = function() + vim.bo.modifiable = false + gitsigns.toggle_signs(true) + gitsigns.toggle_linehl(true) + end, + on_exit = function() + gitsigns.toggle_signs(false) + gitsigns.toggle_linehl(false) + gitsigns.toggle_deleted(false) + end, + }, + mode = { 'n', 'x' }, + body = 'G', + heads = { + { + 'J', + function() + if vim.wo.diff then + return ']c' + end + vim.schedule(function() + gitsigns.next_hunk() + end) + return '' + end, + { expr = true }, + }, + { + 'K', + function() + if vim.wo.diff then + return '[c' + end + vim.schedule(function() + gitsigns.prev_hunk() + end) + return '' + end, + { expr = true }, + }, + { 's', ':Gitsigns stage_hunk', { silent = true } }, + { 'u', gitsigns.undo_stage_hunk }, + { 'S', gitsigns.stage_buffer }, + { 'p', gitsigns.preview_hunk }, + { 'd', gitsigns.toggle_deleted, { nowait = true } }, + { 'b', gitsigns.blame_line }, + { + 'B', + function() + gitsigns.blame_line({ full = true }) + end, + }, + { '/', gitsigns.show, { exit = true } }, -- show the base of the file + { '', 'Neogit', { exit = true } }, + { 'q', nil, { exit = true, nowait = true } }, + }, +}) + +-- Hydra to repeat expanding windows +hydra({ + name = 'Window Sizing', + mode = 'n', + body = '', + config = { + { + position = 'bottom-right', + border = 'rounded', + }, + }, + heads = { + { '<', '2<' }, + { '>', '2>', { desc = '←/→' } }, + { '+', '2+' }, + { '-', '2-', { desc = '↑/↓' } }, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/indent-blankline.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/indent-blankline.lua new file mode 100755 index 00000000..c154b693 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/indent-blankline.lua @@ -0,0 +1,25 @@ +local g = vim.g + +g.indent_blankline_char = '▏' +g.indent_blankline_context_char = '▏' + +-- Disable indent-blankline on these pages. +g.indent_blankline_filetype_exclude = { + 'help', + 'terminal', + 'alpha', + 'packer', + 'lsp-installer', + 'lspinfo', + 'mason.nvim', +} + +g.indent_blankline_buftype_exclude = { 'terminal' } +g.indent_blankline_show_trailing_blankline_indent = false +g.indent_blankline_show_first_indent_level = true + +require('indent_blankline').setup({ + -- space_char_blankline = " ", + show_current_context = true, + show_current_context_start = true, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/lsp.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/lsp.lua new file mode 100755 index 00000000..ba3ad067 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/lsp.lua @@ -0,0 +1,187 @@ +local mason_lspconfig = require("mason-lspconfig") +local lspconfig = require("lspconfig") +local async = require("plenary.async") + +-- NOTE: Keep this near top +mason_lspconfig.setup({ + automatic_installation = true, +}) + +local function on_attach(client, bufnr) + -- Set autocommands conditional on server_capabilities + async.run(function() + vim.notify + .async("Attached server " .. client.name, "info", { + title = "Lsp Attach", + }).events + .close() + end) +end + +local lsp_capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) +local opts = { + capabilities = lsp_capabilities, + on_attach = on_attach, +} + +-- INFO: RUST LSP +-- In the scenario we're using rust it makes more sense to use rust-tools +-- see: https://github.com/williamboman/nvim-lsp-installer/wiki/Rust +-- +-- NOTE: Requires rust_analyzer +-- +-- Dap installation, required vscode and the following extension to be installed: +-- https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb +-- +-- locate it with `find ~/ -name ` +local extension_path = os.getenv("HOME") .. "/.vscode/extensions/vadimcn.vscode-lldb-1.6.10/" +local codelldb_path = extension_path .. "adapter/codelldb" +local liblldb_path = extension_path .. "lldb/lib/liblldb.dylib" + +local rustopts = { + server = opts, + dap = { + adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path), + }, + tools = { + hover_actions = { auto_focus = true }, + crate_graph = { + backend = "svg", + output = "Rust-Crate-Graph-" .. os.time() .. ".svg", + }, + }, +} +require("rust-tools").setup(rustopts) + +-- NOTE: ANSIBLE LSP +-- I use ansible a lot, define exceptions for servers that can use +-- server:setup & vim.cmd at the bottom here +lspconfig.ansiblels.setup({ + opts, + settings = { + ansible = { + ansible = { + useFullyQualifiedCollectionNames = true, + path = "ansible", + }, + ansibleLint = { + enabled = true, + path = "ansible-lint", + }, + python = { + interpreterPath = "python3", + }, + completion = { + provideRedirectModules = false, + }, + }, + }, +}) + +-- NOTE: LUA LSP +local luadev = require("lua-dev").setup({ + lspconfig = opts, +}) + +lspconfig.sumneko_lua.setup(luadev) + +-- NOTE: SQL LSP +lspconfig.sqls.setup({ + on_attach = function(client, bufnr) + require("sqls").on_attach(client, bufnr) + on_attach(client, bufnr) + end, +}) + +-- NOTE: PYTHON LSP +lspconfig.pylsp.setup({ + filetypes = { "python" }, + settings = { + formatCommand = { "black" }, + pylsp = { + plugins = { + jedi_completion = { + include_params = true, + fuzzy = true, + eager = true, + }, + jedi_signature_help = { enabled = true }, + pyflakes = { enabled = true }, + pycodestyle = { + enabled = true, + ignore = { "E501", "E231", "W503", "E731" }, + maxLineLength = 120, + }, + mypy = { enabled = true }, + yapf = { enabled = true }, + rope_completion = { + enabled = true, + eager = true, + }, + }, + }, + }, + capabilities = lsp_capabilities, + on_attach = on_attach, +}) + +lspconfig.yamlls.setup({ + settings = { + yaml = { + schemas = { + ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", + ["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = { + "/azure-pipeline*.y*l", + "/*.azure", + }, + ["https://raw.githubusercontent.com/docker/cli/master/cli/compose/schema/data/config_schema_v3.10.json"] = "/docker-compose.y*l", + ["https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json"] = "/.gitlab-ci.yml", + ["https://json.schemastore.org/travis.json"] = "/.travis.y*l", + ["https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible-inventory.json"] = { + "/inventories/*/*.y*l", + "/inventory/*.y*l", + }, + ["https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible-vars.json"] = { + "playbooks/vars/*.y*l", + "vars/*.y*l", + "defaults/*.y*l", + "host_vars/*.y*l", + "group_vars/*.y*l", + }, + }, + }, + }, + capabilities = lsp_capabilities, + on_attach = on_attach, +}) + +lspconfig.csharp_ls.setup({ + handlers = { + ["textDocument/definition"] = require("csharpls_extended").handler, + }, + capabilities = lsp_capabilities, + on_attach = on_attach, +}) + +lspconfig.bashls.setup({}) + +-- NOTE: GENERIC LSP SERVERS +for _, server in ipairs({ + "clangd", + "cmake", + "dockerls", + "eslint", + "html", + "jdtls", + "kotlin_language_server", + "terraformls", + "tflint", + "tsserver", + "vimls", + "vuels", + "tsserver", + "jsonls", + "pyright", +}) do + lspconfig[server].setup(opts) +end diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neoformat.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neoformat.lua new file mode 100755 index 00000000..72a2c975 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neoformat.lua @@ -0,0 +1,8 @@ +vim.cmd([[ +let g:neoformat_python_black = { + \ 'exe': 'black', + \ 'stdin': 1, + \ 'args': ['-q', '-'], + \ } +let g:neoformat_enabled_python = ['black'] +]]) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neotree.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neotree.lua new file mode 100644 index 00000000..1492e22f --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/neotree.lua @@ -0,0 +1,14 @@ +local neotree = require('neo-tree') + +vim.g.neo_tree_remove_legacy_commands = 1 +neotree.setup({ + filesystem = { + use_libuv_file_watcher = true, + }, + window = { + mappings = { + ['/'] = 'noop', + ['/'] = {}, + }, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/null_ls.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/null_ls.lua new file mode 100755 index 00000000..04c9c406 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/null_ls.lua @@ -0,0 +1,17 @@ +local null_ls = require('null-ls') + +null_ls.setup({ + sources = { + null_ls.builtins.formatting.shfmt.with({ + extra_args = { '-i 4' }, + }), + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.code_actions.shellcheck, + null_ls.builtins.diagnostics.hadolint, + null_ls.builtins.diagnostics.ansiblelint, + null_ls.builtins.code_actions.refactoring, + null_ls.builtins.formatting.black, + null_ls.builtins.formatting.stylua, + null_ls.builtins.formatting.prettier, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-colorizer.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-colorizer.lua new file mode 100755 index 00000000..a6f2cf4e --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-colorizer.lua @@ -0,0 +1,3 @@ +local colorizer = require('colorizer') +colorizer.setup({}) +vim.cmd('ColorizerAttachToBuffer') diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-notify.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-notify.lua new file mode 100755 index 00000000..5f2f5510 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/nvim-notify.lua @@ -0,0 +1,34 @@ +require('notify').setup({ + -- Animation style (see below for details) + stages = 'fade_in_slide_out', + + -- Function called when a new window is opened, use for changing win settings/config + on_open = nil, + + -- Function called when a window is closed + on_close = nil, + + -- Render function for notifications. See notify-render() + render = 'default', + + -- Default timeout for notifications + timeout = 5000, + + -- For stages that change opacity this is treated as the highlight behind the window + -- Set this to either a highlight group, an RGB hex value e.g. "#000000" or a function returning an RGB code for dynamic values + background_colour = '#000000', + + -- Minimum width for notification windows + minimum_width = 50, + + -- Icons for the different levels + icons = { + ERROR = '', + WARN = '', + INFO = '', + DEBUG = '', + TRACE = '✎', + }, +}) + +vim.notify = require('notify') diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/python-dap.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/python-dap.lua new file mode 100755 index 00000000..93849bfe --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/python-dap.lua @@ -0,0 +1,3 @@ +local dap_python = require('dap-python') +dap_python.setup('~/.venvs/debugpy/bin/python') +dap_python.test_runner = 'pytest' diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/statusline.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/statusline.lua new file mode 100755 index 00000000..35f8962e --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/statusline.lua @@ -0,0 +1,137 @@ +local present, lualine = pcall(require, 'lualine') +if not present then + return +end + +-- Thanks to rockyzhang24 (github.com/rockyzhang24) + +local function simplifiedMode(str) + return ' ' .. (str == 'V-LINE' and 'VL' or (str == 'V-BLOCK' and 'VB' or str:sub(1, 1))) +end + +-- For location, show total lines +local function customLocation(str) + return string.gsub(str, '%w+', '%1' .. '/%%L', 1) +end + +-- For progress, add a fancy icon +local function customProgress(str) + return ' ' .. str +end + +-- For filename, show the filename and the filesize +local function fileNameAndSize(str) + -- For doc, only show filename + if string.find(str, '.*/doc/.*%.txt') then + str = vim.fn.expand('%:t') + end + local size = require('lualine.components.filesize')() + return size == '' and str or str .. ' [' .. size .. ']' +end + +local function show_macro_recording() + local recording_register = vim.fn.reg_recording() + if recording_register == '' then + return '' + else + return 'Recording @' .. recording_register + end +end + +lualine.setup({ + options = { + icons_enabled = true, + theme = 'auto', + -- component_separators = { left = '', right = '' }, + -- section_separators = { left = '', right = '' }, + -- component_separators = { left = '', right = '' }, + -- section_separators = { left = '', right = '' }, + component_separators = { left = '', right = '' }, + section_separators = { left = '', right = '' }, + disabled_filetypes = {}, + always_divide_middle = true, + globalstatus = true, -- requires neovim 0.7 or highter + }, + sections = { + -- Left + lualine_a = { + { + 'mode', + fmt = simplifiedMode, + }, + }, + lualine_b = { + { + 'branch', + icon = '', + }, + { + 'diff', + symbols = { added = '+', modified = '~', removed = '-' }, + -- symbols = { added = ' ', modified = ' ', removed = ' ' }, + }, + { + 'diagnostics', + sources = { 'nvim_diagnostic' }, + -- symbols = { error = ' ', warn = ' ', info = ' ', hint = ' ' }, + symbols = { error = ' ', warn = ' ', info = ' ', hint = ' ' }, + }, + { + show_macro_recording, + }, + }, + lualine_c = { + { + 'filename', + path = 3, + symbols = { + modified = '[+]', + readonly = '[]', + unnamed = '[No Name]', + }, + fmt = fileNameAndSize, + }, + }, + + -- Right + lualine_x = { + 'encoding', + 'fileformat', + 'filetype', + }, + lualine_y = { + { + 'location', + fmt = customLocation, + }, + }, + lualine_z = { + { + 'progress', + fmt = customProgress, + }, + }, + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = { 'filename' }, + lualine_x = { + { + 'location', + fmt = customLocation, + }, + }, + lualine_y = {}, + lualine_z = {}, + }, + tabline = {}, + extensions = { + 'aerial', + 'fugitive', + 'nvim-tree', + 'neo-tree', + 'quickfix', + 'toggleterm', + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/telescope-nvim.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/telescope-nvim.lua new file mode 100755 index 00000000..40053227 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/telescope-nvim.lua @@ -0,0 +1,90 @@ +local telescope = require("telescope") +local actions = require("telescope.actions") + +telescope.setup({ + pickers = { + find_files = { + find_command = { + "fd", + }, + hidden = true, + }, + }, + defaults = { + vimgrep_arguments = { + "rg", + "--color=never", + "--no-heading", + "--with-filename", + "--line-number", + "--column", + "--no-ignore-exclude", + "--hidden", + "--smart-case", + }, + history = { + path = "~/.local/share/nvim/databases/telescope_history.sqlite3", + limit = 1000, + }, + mappings = { + i = { + [""] = actions.cycle_history_next, + [""] = actions.cycle_history_prev, + }, + }, + prompt_prefix = "  ", + selection_caret = " ", + entry_prefix = " ", + initial_mode = "insert", + selection_strategy = "reset", + sorting_strategy = "ascending", + layout_strategy = "flex", + layout_config = { + vertical = { + prompt_position = "top", + width = 0.90, + height = 0.98, + preview_height = 0.65, + }, + horizontal = { + prompt_position = "top", + width = 0.90, + height = 0.98, + preview_width = 0.70, + }, + flex = { + flip_cloumns = 120, + }, + }, + file_sorter = require("telescope.sorters").get_fuzzy_file, + generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter, + path_display = { "truncate" }, + winblend = 0, + border = {}, + borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, + color_devicons = true, + use_less = true, + set_env = { ["COLORTERM"] = "truecolor" }, + file_previewer = require("telescope.previewers").vim_buffer_cat.new, + grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new, + qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new, + buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker, + }, + extensions = { + media_files = { + filetypes = { "png", "webp", "jpg", "jpeg" }, + find_cmd = "rg", + }, + ["ui-select"] = { + require("telescope.themes").get_dropdown(), + }, + }, +}) + +telescope.load_extension("media_files") +telescope.load_extension("find_directories") +telescope.load_extension("file_browser") +telescope.load_extension("notify") +telescope.load_extension("fzf") +telescope.load_extension("ui-select") +telescope.load_extension("smart_history") diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/todo-comments.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/todo-comments.lua new file mode 100755 index 00000000..5fbe08e7 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/todo-comments.lua @@ -0,0 +1 @@ +require('todo-comments').setup({}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/tokyonight.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/tokyonight.lua new file mode 100755 index 00000000..398c754c --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/tokyonight.lua @@ -0,0 +1,7 @@ +local g = vim.g + +g.tokyonight_style = 'night' +g.tokyonight_transparent = true +g.tokyonight_transparent_sidebar = true + +vim.cmd('colorscheme tokyonight') diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/configs/treesitter.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/treesitter.lua new file mode 100755 index 00000000..d20425ed --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/configs/treesitter.lua @@ -0,0 +1,21 @@ +local nvim_treesitter = require('nvim-treesitter.configs') + +nvim_treesitter.setup({ + ensure_installed = { + 'norg', + }, + highlight = { + enable = true, + additional_vim_regex_highlighting = true, + disable = { 'yaml' }, + }, + matchup = { + enable = true, + }, + autotag = { + enable = true, + }, + yati = { + enable = true, + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/init.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/init.lua new file mode 100755 index 00000000..8451b6d0 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/init.lua @@ -0,0 +1,5 @@ +require('plugins.plugins') +local found, _ = pcall(require, 'packer_compiled') +if not found then + vim.notify('Unable to locate packer_compiled!') +end diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/mappings.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/mappings.lua new file mode 100755 index 00000000..b19601b6 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/mappings.lua @@ -0,0 +1,162 @@ +local loaded = pcall(require, "plenary.async") + +if not loaded then + return +end + +-- Telescope mappings +vim.keymap.set("n", "tw", ":Telescope live_grep") +vim.keymap.set("n", "tgs", ":Telescope git_status") +vim.keymap.set("n", "tgc", ":Telescope git_commits") +vim.keymap.set("n", "tgb", ":Telescope git_branches") +vim.keymap.set("n", "tf", ":Telescope find_files") +vim.keymap.set("n", "td", ":Telescope find_directories") +vim.keymap.set("n", "tb", ":Telescope buffers") +vim.keymap.set("n", "th", ":Telescope help_tags") +vim.keymap.set("n", "to", ":Telescope oldfiles") +vim.keymap.set("n", "tc", ":Telescope neoclip default") +vim.keymap.set("n", "tr", ":Telescope registers") +vim.keymap.set("n", "tt", ":Telescope file_browser") +vim.keymap.set("n", "ts", ":Telescope spell_suggest") +vim.keymap.set("n", "tl", ":Telescope resume") +vim.keymap.set("n", "tT", ":TodoTelescope") + +-- Lsp Mappings +vim.keymap.set("n", "lD", ":lua vim.lsp.buf.declaration()") +vim.keymap.set("n", "ld", ":lua vim.lsp.buf.definition()") +vim.keymap.set("n", "k", ":lua vim.lsp.buf.hover()") +vim.keymap.set("n", "K", ":lua vim.lsp.buf.signature_help()") +vim.keymap.set("n", "li", ":lua vim.lsp.buf.implementation()") +vim.keymap.set("n", "la", ":lua vim.lsp.buf.add_workspace_folder()") +vim.keymap.set("n", "lx", ":lua vim.lsp.buf.remove_workspace_folder()") +vim.keymap.set("n", "ll", ":lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))") +vim.keymap.set("n", "ln", ":IncRename ") +vim.keymap.set("n", "lc", ":CodeActionMenu") +vim.keymap.set("n", "lr", ":lua vim.lsp.buf.references()") +vim.keymap.set("n", "lR", function() + vim.diagnostic.reset() + vim.cmd(":LspRestart") +end) +vim.keymap.set("n", "ls", ":lua vim.diagnostic.open_float(nil, {focus=false, scope='cursor'})") +vim.keymap.set("n", "lf", ":lua vim.lsp.buf.format({ async = true })") +vim.keymap.set("n", "[l", ":lua vim.diagnostic.goto_prev()") +vim.keymap.set("n", "]l", ":lua vim.diagnostic.goto_next()") +vim.keymap.set("n", "lq", ":Telescope diagnostics bufnr=0") +vim.keymap.set("n", "lt", function() + local virtual_lines_enabled = not vim.diagnostic.config().virtual_lines + vim.diagnostic.config({ virtual_lines = virtual_lines_enabled, virtual_text = not virtual_lines_enabled }) +end, { + desc = "Toggle LSP Diag Style", +}) + +-- Trouble mappings +vim.keymap.set("n", "lT", ":TroubleToggle") + +-- Formatter +vim.keymap.set("n", "nf", ":Neoformat") + +-- DAP Mappings +vim.keymap.set("n", "dR", ':lua require("dap").continue()') +vim.keymap.set("n", "de", ':lua require("dap").terminate()') +vim.keymap.set("n", "db", ':lua require("dap").toggle_breakpoint()') +vim.keymap.set("n", "dr", ":lua require(\"dap\").set_breakpoint(vim.fn.input('Breakpoint condition: '))") +vim.keymap.set( + "n", + "dp", + ":lua require(\"dap\").set_breakpoint(nil, nil, vim.fn.input('Log point message: '))" +) +vim.keymap.set("n", "", ':lua require("dap").step_over()') +vim.keymap.set("n", "", ':lua require("dap").step_into()') +vim.keymap.set("n", "", ':lua require("dap").step_out()') +vim.keymap.set("n", "dB", ':lua require("dap").step_back()') +vim.keymap.set("n", "dc", ':lua require("dap").run_to_cursor()') +vim.keymap.set("n", "do", ':lua require("dap").repl.open()') +vim.keymap.set("n", "dt", ':lua require("dapui").toggle()') +vim.keymap.set("n", "dl", ':lua require("dap").run_last()') + +-- Comments +vim.keymap.set("n", "/", ":CommentToggle") +vim.keymap.set("v", "/", ":'<,'>CommentToggle") + +-- Code Outline +vim.keymap.set("n", "co", ":SymbolsOutline") + +-- Bufferline mappings +vim.keymap.set("n", "", ":BufferLineCyclePrev") +vim.keymap.set("n", "", ":BufferLineCycleNext") +vim.keymap.set("n", "", ":lua require('utils.funcs').close_buffer()") + +-- Vim Notify Mappings +vim.keymap.set("n", "nv", ":lua require('telescope').extensions.notify.notify()") +vim.keymap.set("n", "nd", ":lua require('notify').dismiss()") + +-- Whichkey Mappings +vim.keymap.set("n", "ww", ":WhichKey") +vim.keymap.set("n", "wk", ":Telescope keymaps") +vim.keymap.set("n", "wc", ":Telescope commands") + +-- Neogen Mappings +vim.keymap.set("n", "ng", ":Neogen") + +-- Nvim Tree Mappings +vim.keymap.set("n", "nt", ":Neotree show toggle focus") + +-- Plenary Mappings +vim.keymap.set("n", "pt", "PlenaryTestFile", {}) + +-- Zenmode Mappings +vim.keymap.set("n", "zm", ":ZenMode") + +-- Neogit Mappings +vim.keymap.set("n", "gg", ":Neogit") + +-- Gitsigns Mappings +vim.keymap.set("n", "]g", "Gitsigns next_hunk") +vim.keymap.set("n", "[g", "Gitsigns prev_hunk") +vim.keymap.set("n", "gs", "Gitsigns stage_hunk") +vim.keymap.set("n", "gr", "Gitsigns reset_hunk") +vim.keymap.set("n", "gu", "Gitsigns undo_stage_hunk") + +-- Packer Mappings +local packer = require("packer") +local packer_sync = function() + vim.notify("Syncing packer.", "info", { + title = "Packer", + }) + local snap_shot_time = tostring(os.date("!%Y-%m-%dT%TZ")) + packer.snapshot(snap_shot_time) + packer.sync() +end + +local packer_compile = function() + vim.notify("Compiling packer.", "info", { + title = "Packer", + }) + packer.compile() +end + +vim.keymap.set("n", "ps", packer_sync, { + desc = "PackerSync", +}) + +vim.keymap.set("n", "pc", packer_compile, { + desc = "PackerCompile", +}) + +-- Undotree mappings +vim.keymap.set("n", "ut", ":UndotreeToggle") + +-- Hop Mappings +local hop = require("hop") + +vim.keymap.set("", "f", function() + hop.hint_char1({ + current_line_only = false, + }) +end) + +vim.keymap.set("", ";l", "HopLineStart") +vim.keymap.set("", ";s", "HopPattern") +vim.keymap.set("", ";;", "HopWord") +vim.keymap.set("", ";a", "HopAnywhere") +vim.keymap.set("", ";v", "HopVertical") diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/plugins.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/plugins.lua new file mode 100755 index 00000000..704f74f7 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/plugins.lua @@ -0,0 +1,797 @@ +local fn = vim.fn +local utils = require("utils.funcs") + +-- Packer strap, install packer automatically and configure plugins +-- See the end of this file for how the variable `packer_strap` gets used +local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" +if fn.empty(fn.glob(install_path)) > 0 then + PACKER_STRAP = fn.system({ + "git", + "clone", + "--depth", + "1", + "https://github.com/wbthomason/packer.nvim", + install_path, + }) + -- Update the runtime so packer can be used + vim.o.runtimepath = vim.fn.stdpath("data") .. "/site/pack/*/start/*," .. vim.o.runtimepath +end + +local packer = require("packer") + +packer.init({ + max_jobs = 20, +}) + +return packer.startup({ + function(use) + -- Performance boost on startup + -- keep at top of plugins + use({ "lewis6991/impatient.nvim" }) + + -- Packer Itself + use({ "wbthomason/packer.nvim" }) + + -- Commonly used library + use({ + "nvim-lua/plenary.nvim", + }) + + -- Nvim Notify + use({ + "rcarriga/nvim-notify", + config = function() + require("plugins.configs.nvim-notify") + end, + }) + + -- Color schemes + use({ "folke/tokyonight.nvim" }) + use({ + "EdenEast/nightfox.nvim", + config = function() + require("nightfox").setup({ + options = { + transparent = true, + dim_inactive = true, + }, + }) + end, + }) + use({ + "rebelot/kanagawa.nvim", + config = function() + local colors = require("kanagawa.colors").setup({}) + vim.opt.fillchars:append({ + horiz = "━", + horizup = "┻", + horizdown = "┳", + vert = "┃", + vertleft = "┨", + vertright = "┣", + verthoriz = "╋", + }) + require("kanagawa").setup({ + transparent = true, + dim_inactive = true, + globalStatus = true, + overrides = { + NeogitHunkHeader = { bg = colors.diff.text }, + NeogitHunkHeaderHighlight = { fg = colors.git.changed, bg = colors.diff.text }, + NeogitDiffContextHighlight = { bg = colors.diff.change }, + NeogitDiffDeleteHighlight = { fg = colors.git.removed, bg = colors.diff.delete }, + NeogitDiffAddHighlight = { fg = colors.git.added, bg = colors.diff.add }, + NeogitCommitViewHeader = { fg = colors.git.changed, bg = colors.diff.text }, + }, + }) + end, + }) + + -- Icons for folders, files, etc. + use({ + "kyazdani42/nvim-web-devicons", + event = "BufEnter", + }) + + -- Tab Line at top of editor + use({ + "akinsho/nvim-bufferline.lua", + after = "nvim-web-devicons", + requires = { "nvim-web-devicons" }, + config = function() + require("plugins.configs.bufferline") + end, + }) + + -- Statusline. + use({ + "nvim-lualine/lualine.nvim", + after = { + "nvim-bufferline.lua", + "tokyonight.nvim", + }, + config = function() + require("plugins.configs.statusline") + end, + }) + + -- Indentation Guides + use({ + "lukas-reineke/indent-blankline.nvim", + event = "BufEnter", + config = function() + require("plugins.configs.indent-blankline") + end, + }) + + -- Treesitter + use({ + "nvim-treesitter/nvim-treesitter", + run = ":TSUpdate", + config = function() + require("plugins.configs.treesitter") + end, + }) + + use({ + "nvim-treesitter/nvim-treesitter-textobjects", + after = "nvim-treesitter", + config = function() + require("nvim-treesitter.configs").setup({ + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + ["ib"] = "@block.inner", + ["ab"] = "@block.outer", + }, + }, + move = { + enable = true, + set_jumps = true, + goto_next_start = { + ["]fs"] = "@function.outer", + ["]cs"] = "@class.outer", + ["]bs"] = "@block.outer", + }, + goto_next_end = { + ["]fe"] = "@function.outer", + ["]ce"] = "@class.outer", + ["]be"] = "@block.outer", + }, + goto_previous_start = { + ["[fs"] = "@function.outer", + ["[cs"] = "@class.outer", + ["[bs"] = "@block.outer", + }, + goto_previous_end = { + ["[fe"] = "@function.outer", + ["[ce"] = "@class.outer", + ["[bs"] = "@block.outer", + }, + }, + }, + }) + end, + }) + + -- Better treesitter indentations + -- NOTE: Remove this once treesitter gets up to par + -- NOTE: this is just a placeholder until it is. + use({ + "yioneko/nvim-yati", + requires = "nvim-treesitter/nvim-treesitter", + }) + + -- Highlight given color codes + use({ + "norcalli/nvim-colorizer.lua", + event = "BufEnter", + config = function() + require("plugins.configs.nvim-colorizer") + end, + }) + + -- Dashboard when no file is given to nvim + + use({ + "goolord/alpha-nvim", + requires = { "kyazdani42/nvim-web-devicons" }, + config = function() + require("plugins.configs.alpha") + end, + }) + + -- Telescope Extensions + use({ + "nvim-telescope/telescope-fzf-native.nvim", + run = "make", + }) + + use({ + "nvim-telescope/telescope-media-files.nvim", + "nvim-telescope/telescope-file-browser.nvim", + "artart222/telescope_find_directories", + "nvim-telescope/telescope-ui-select.nvim", + { "nvim-telescope/telescope-smart-history.nvim", requires = "tami5/sqlite.lua" }, + }) + + -- Telescope + use({ + "nvim-telescope/telescope.nvim", + config = function() + require("plugins.configs.telescope-nvim") + end, + }) + + -- File Tree + use({ + "nvim-neo-tree/neo-tree.nvim", + branch = "v2.x", + requires = { + "kyazdani42/nvim-web-devicons", + "nvim-lua/plenary.nvim", + "MunifTanjim/nui.nvim", + }, + config = function() + require("plugins.configs.neotree") + end, + }) + + -- Workspaces + use({ + "natecraddock/workspaces.nvim", + config = function() + local workspaces = require("workspaces") + workspaces.setup({ + hooks = { + open = "Neotree", + }, + }) + end, + }) + + -- Lspconfig + use({ + "neovim/nvim-lspconfig", + requires = { + "folke/lua-dev.nvim", + "Decodetalkers/csharpls-extended-lsp.nvim", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + }, + config = function() + require("mason").setup({}) + require("plugins.configs.lsp") + end, + }) + + -- Incremental rename, easier to view renames + use({ + "https://github.com/smjonas/inc-rename.nvim.git", + config = function() + require("inc_rename").setup({}) + end, + }) + + -- Show lsp diags at bottom + use({ + "folke/trouble.nvim", + config = function() + require("trouble").setup() + end, + cmd = { + "Trouble", + "TroubleClose", + "TroubleToggle", + "TroubleRefresh", + }, + }) + + -- Better LSP Virtual Text Lines + use({ + "https://git.sr.ht/~whynothugo/lsp_lines.nvim", + config = function() + require("lsp_lines").setup() + end, + }) + + -- Sql support + use({ + "nanotee/sqls.nvim", + }) + + -- Display LSP Progress + use({ + "j-hui/fidget.nvim", + config = function() + require("plugins.configs.fidget-spinner") + end, + -- after = "nvim-lspconfig" + }) + + -- Display Lsp Signature + use({ + "ray-x/lsp_signature.nvim", + config = function() + require("lsp_signature").setup({ + hint_prefix = "", + hint_enable = true, + floating_window = false, + toggle_key = "", + }) + end, + }) + + -- Code Action Menu, prettier ui for LSP code actions + require("packer").use({ + "weilbith/nvim-code-action-menu", + }) + + -- Lsp From Null LS + use({ + "jose-elias-alvarez/null-ls.nvim", + config = function() + require("plugins.configs.null_ls") + end, + }) + + -- Better LSP Handling for Rust + use({ + "simrat39/rust-tools.nvim", + }) + + -- Autopairs + use({ + "windwp/nvim-autopairs", + config = function() + require("nvim-autopairs").setup() + end, + }) + + -- Snippets + use({ + "rafamadriz/friendly-snippets", + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + requires = { + "L3MON4D3/LuaSnip", + "https://github.com/saadparwaiz1/cmp_luasnip", + }, + after = "LuaSnip", + event = "BufEnter", + }) + + -- Code completion + use({ + "hrsh7th/nvim-cmp", + requires = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/cmp-emoji", + "hrsh7th/vim-vsnip", + "hrsh7th/cmp-nvim-lsp-document-symbol", + "hrsh7th/cmp-calc", + "davidsierradz/cmp-conventionalcommits", + "tamago324/cmp-zsh", + "dmitmel/cmp-cmdline-history", + "David-Kunz/cmp-npm", + "lukas-reineke/cmp-rg", + }, + config = function() + require("plugins.configs._cmp") + end, + }) + + use({ + "tzachar/cmp-fuzzy-buffer", + requires = { "hrsh7th/nvim-cmp", "tzachar/fuzzy.nvim" }, + }) + use({ "tzachar/cmp-fuzzy-path", requires = { "hrsh7th/nvim-cmp", "tzachar/fuzzy.nvim" } }) + use({ + "saecki/crates.nvim", + event = { "BufRead Cargo.toml" }, + requires = { { "nvim-lua/plenary.nvim" } }, + config = function() + require("crates").setup() + end, + }) + + -- Show code outline + use({ + "simrat39/symbols-outline.nvim", + cmd = { "SymbolsOutline", "SymbolsOutlineOpen", "SymbolsOutlineClose" }, + config = function() + -- TODO: Clean this up and use the `nvim.api.nvim_set_hl` api + vim.cmd( + [[hi FocusedSymbol term=italic,bold cterm=italic ctermbg=yellow ctermfg=darkblue gui=bold,italic guibg=none guifg=#59D0FF]] + ) + end, + }) + + -- DAP, debugger + use({ + "mfussenegger/nvim-dap", + config = function() + require("dap.ext.vscode").load_launchjs() + require("plugins.configs._dap") + end, + after = "nvim-notify", + }) + + -- Python debugger, dapinstall does not play nice with debugpy + use({ + "mfussenegger/nvim-dap-python", + after = "nvim-dap", + config = function() + require("plugins.configs.python-dap") + end, + }) + + -- Virtual Text for DAP + use({ + "theHamsta/nvim-dap-virtual-text", + after = "nvim-dap", + config = function() + require("nvim-dap-virtual-text").setup({}) + end, + }) + + -- Fancy ui for dap + use({ + "rcarriga/nvim-dap-ui", + after = "nvim-dap", + config = function() + require("plugins.configs.dap-ui") + end, + }) + + -- Code formatting + use({ + "sbdchd/neoformat", + cmd = "Neoformat", + config = function() + require("plugins.configs.neoformat") + end, + }) + + use({ + "anuvyklack/pretty-fold.nvim", + requires = "anuvyklack/nvim-keymap-amend", + config = function() + require("pretty-fold").setup({ + fill_char = " ", + }) + end, + }) + + -- Stabalize closing buffers + use({ + "luukvbaal/stabilize.nvim", + config = function() + require("plugins.configs._stabilize") + end, + }) + + -- Git signs + use({ + "lewis6991/gitsigns.nvim", + event = "BufRead", + config = function() + require("gitsigns").setup({ + current_line_blame = true, + current_line_blame_opts = { + delay = 0, + }, + }) + end, + }) + + -- Highlight certain comments, TODO, BUG, etc. + use({ + "folke/todo-comments.nvim", + event = "BufEnter", + config = function() + require("todo-comments").setup({}) + end, + }) + + -- Show possible key bindings during typing + use({ + "folke/which-key.nvim", + config = function() + require("which-key").setup({}) + end, + }) + + -- Create full path if not existing on write + use({ + "jghauser/mkdir.nvim", + cmd = "new", + config = function() + require("mkdir") + end, + }) + + -- Text commenting + use({ + "terrortylor/nvim-comment", + cmd = "CommentToggle", + config = function() + require("nvim_comment").setup() + end, + }) + + -- Move selections with alt+movement key + use({ + "matze/vim-move", + }) + + -- Register support in telescope with persistent save + use({ + "AckslD/nvim-neoclip.lua", + requires = { + { "tami5/sqlite.lua", module = "sqlite" }, + { "nvim-telescope/telescope.nvim" }, + }, + config = function() + require("plugins.configs._neoclip") + end, + }) + + -- Markdown Previewer + use({ + "iamcco/markdown-preview.nvim", + run = "cd app && npm install", + setup = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + ft = { "markdown" }, + }) + + -- Better Git integration + use({ + "TimUntersberger/neogit", + config = function() + require("neogit").setup({ + disable_commit_confirmation = true, + integrations = { + diffview = true, + }, + }) + end, + requires = { + "sindrets/diffview.nvim", + }, + }) + + -- Ansible Syntax Highlighting + use({ + "pearofducks/ansible-vim", + }) + + -- Better search display + use({ + "kevinhwang91/nvim-hlslens", + module = "hlslens", + keys = "/", + }) + + -- Lsp Diags on scrollbar + use({ + "petertriho/nvim-scrollbar", + requires = { + "kevinhwang91/nvim-hlslens", + "folke/tokyonight.nvim", + }, + after = "nvim-hlslens", + config = function() + require("plugins.configs.diag-scrollbar") + end, + }) + + -- Discord Rich Presence + use({ + "andweeb/presence.nvim", + config = function() + require("presence"):setup({ + neovim_image_text = "How do I exit?", + }) + end, + }) + + -- Note Taking + use({ + "nvim-neorg/neorg", + config = function() + require("plugins.configs._neorg") + end, + requires = { + "nvim-lua/plenary.nvim", + "nvim-neorg/neorg-telescope", + }, + after = "nvim-treesitter", + }) + + -- Log Syntax Highlighting + use({ + "MTDL9/vim-log-highlighting", + }) + + -- Lots of small modules pulled into + -- one git repository + use({ + "echasnovski/mini.nvim", + config = function() + -- Underline matching words to word undor cursor + require("mini.cursorword").setup({}) + -- Surround operators + require("mini.surround").setup({ + mappings = { + add = "gs", + delete = "ds", + find = "", + find_left = "", + highlight = "", + replace = "cs", + update_n_lines = "", + }, + }) + end, + }) + + -- Smoother Scrolling + use({ + "karb94/neoscroll.nvim", + config = function() + require("neoscroll").setup({ + easing_function = "circular", + }) + end, + }) + + -- Generate function/class/etc annotations + use({ + "danymat/neogen", + requires = "nvim-treesitter/nvim-treesitter", + config = function() + require("neogen").setup({ + snippet_engine = "luasnip", + }) + end, + }) + + -- Center code, make it visually prettier + use({ + "folke/zen-mode.nvim", + config = function() + require("zen-mode").setup({}) + end, + cmd = "ZenMode", + }) + + -- Multiple cursor/multiple visual selection support + use({ + "mg979/vim-visual-multi", + }) + + -- Editorconfig support + use({ + "gpanders/editorconfig.nvim", + }) + + -- Maintain last cursor position in files + use({ + "ethanholz/nvim-lastplace", + config = function() + require("nvim-lastplace").setup({ + lastplace_ignore_buftype = { "quickfix", "nofile", "help" }, + lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit", "fugitive" }, + lastplace_open_folds = true, + }) + end, + }) + + -- Diagnose startup time + use({ "dstein64/vim-startuptime" }) + + -- More codeactions + use({ + "ThePrimeagen/refactoring.nvim", + requires = { + { "nvim-lua/plenary.nvim" }, + { "nvim-treesitter/nvim-treesitter" }, + }, + }) + + -- Http Request Support + use({ + "NTBBloodbath/rest.nvim", + requires = { + "https://github.com/nvim-lua/plenary.nvim", + }, + config = function() + local rest_nvim = require("rest-nvim") + rest_nvim.setup({ + -- This is a dev plugin, makes life easier + skip_ssl_verification = true, + }) + end, + }) + + -- Undotree, similar to git branch history + use({ + "mbbill/undotree", + cmd = "UndotreeToggle", + setup = function() + vim.g.undotree_WindowLayout = 3 + end, + }) + + -- Allows repeating actions and more + use({ + "anuvyklack/hydra.nvim", + requires = { + "anuvyklack/keymap-layer.nvim", + "lewis6991/gitsigns.nvim", + }, + config = function() + require("plugins.configs.hydra") + end, + }) + + -- Faster motions + use({ + "phaazon/hop.nvim", + config = function() + -- you can configure Hop the way you like here; see :h hop-config + require("hop").setup({ keys = "etovxqpdygfblzhckisuran" }) + end, + }) + + -- Leave at end!!! + -- Install and deploy packer plugins + -- automatically + if PACKER_STRAP then + vim.notify("Syncing packer from bootstrap") + + function _G.NotifyRestartNeeded() + local notify_available, _ = require("notify") + local message = "Neovim Restart Required to Finish Installation!" + if notify_available then + vim.notify(message, vim.lsp.log_levels.WARN, { + title = "Packer Strap", + keep = function() + return true + end, + }) + else + vim.notify(message) + end + end + + vim.api.nvim_exec( + [[ + autocmd User PackerCompileDone lua NotifyRestartNeeded() + ]], + false + ) + require("packer").sync() + end + end, + config = { + display = { + open_fn = function() + return require("packer.util").float({ border = "double" }) + end, + }, + compile_path = vim.fn.stdpath("config") .. "/lua/packer_compiled.lua", + }, +}) diff --git a/dots/.nvim-environments/primary/nvim/lua/plugins/postload.lua b/dots/.nvim-environments/primary/nvim/lua/plugins/postload.lua new file mode 100755 index 00000000..4d07de74 --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/plugins/postload.lua @@ -0,0 +1,4 @@ +-- Anything that needs to be loaded LAST +-- needs to required here +require('plugins.mappings') +require('plugins.autocmds') diff --git a/dots/.nvim-environments/primary/nvim/lua/utils/funcs.lua b/dots/.nvim-environments/primary/nvim/lua/utils/funcs.lua new file mode 100755 index 00000000..954ad1bb --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/lua/utils/funcs.lua @@ -0,0 +1,154 @@ +local U = {} + +U.close_buffer = function(force) + -- Yanked from NvChad, thanks to them. This saves + -- a lot of pain + + -- This is a modification of a NeoVim plugin from + -- Author: ojroques - Olivier Roques + -- Src: https://github.com/ojroques/nvim-bufdel + + -- Options + local opts = { + next = 'cycle', -- how to retrieve the next buffer + quit = false, -- exit when last buffer is deleted + --TODO make this a chadrc flag/option + } + + -- ---------------- + -- Helper functions + -- ---------------- + + -- Switch to buffer 'buf' on each window from list 'windows' + local function switch_buffer(windows, buf) + local cur_win = vim.fn.winnr() + for _, winid in ipairs(windows) do + vim.cmd(string.format('%d wincmd w', vim.fn.win_id2win(winid))) + vim.cmd(string.format('buffer %d', buf)) + end + vim.cmd(string.format('%d wincmd w', cur_win)) -- return to original window + end + + -- Select the first buffer with a number greater than given buffer + local function get_next_buf(buf) + local next = vim.fn.bufnr('#') + if opts.next == 'alternate' and vim.fn.buflisted(next) == 1 then + return next + end + for i = 0, vim.fn.bufnr('$') - 1 do + next = (buf + i) % vim.fn.bufnr('$') + 1 -- will loop back to 1 + if vim.fn.buflisted(next) == 1 then + return next + end + end + end + + -- ---------------- + -- End helper functions + -- ---------------- + + local buf = vim.fn.bufnr() + if vim.fn.buflisted(buf) == 0 then -- exit if buffer number is invalid + vim.cmd('close') + return + end + + if #vim.fn.getbufinfo({ buflisted = 1 }) < 2 then + if opts.quit then + -- exit when there is only one buffer left + if force then + vim.cmd('qall!') + else + vim.cmd('confirm qall') + end + return + end + + local chad_term, _ = pcall(function() + return vim.api.nvim_buf_get_var(buf, 'term_type') + end) + + if chad_term then + -- Must be a window type + vim.cmd(string.format('setlocal nobl', buf)) + vim.cmd('enew') + return + end + -- don't exit and create a new empty buffer + vim.cmd('enew') + vim.cmd('bp') + end + + local next_buf = get_next_buf(buf) + local windows = vim.fn.getbufinfo(buf)[1].windows + + -- force deletion of terminal buffers to avoid the prompt + if force or vim.fn.getbufvar(buf, '&buftype') == 'terminal' then + local chad_term, type = pcall(function() + return vim.api.nvim_buf_get_var(buf, 'term_type') + end) + + -- TODO this scope is error prone, make resilient + if chad_term then + if type == 'wind' then + -- hide from bufferline + vim.cmd(string.format('%d bufdo setlocal nobl', buf)) + -- swtich to another buff + -- TODO switch to next bufffer, this works too + vim.cmd('BufferLineCycleNext') + else + local cur_win = vim.fn.winnr() + -- we can close this window + vim.cmd(string.format('%d wincmd c', cur_win)) + return + end + else + switch_buffer(windows, next_buf) + vim.cmd(string.format('bd! %d', buf)) + end + else + switch_buffer(windows, next_buf) + vim.cmd(string.format('silent! confirm bd %d', buf)) + end + -- revert buffer switches if user has canceled deletion + if vim.fn.buflisted(buf) == 1 then + switch_buffer(windows, buf) + end +end + +U.rgbToHex = function(rgb) + return string.format('#%06x', rgb) +end + +U.hexToRgb = function(hex_str) + local hex = '[abcdef0-9][abcdef0-9]' + local pat = '^#(' .. hex .. ')(' .. hex .. ')(' .. hex .. ')$' + hex_str = string.lower(hex_str) + + assert(string.find(hex_str, pat) ~= nil, 'hex_to_rgb: invalid hex_str: ' .. tostring(hex_str)) + + local r, g, b = string.match(hex_str, pat) + return { tonumber(r, 16), tonumber(g, 16), tonumber(b, 16) } +end + +U.blend = function(fg, bg, alpha) + bg = U.hexToRgb(bg) + fg = U.hexToRgb(fg) + + local blendChannel = function(i) + local ret = (alpha * fg[i] + ((1 - alpha) * bg[i])) + return math.floor(math.min(math.max(0, ret), 255) + 0.5) + end + + return string.format('#%02X%02X%02X', blendChannel(1), blendChannel(2), blendChannel(3)) +end + +U.darken = function(hex, amount, bg) + return U.blend(hex, bg or '#000000', math.abs(amount)) +end + +U.lighten = function(hex, amount, fg) + return U.blend(hex, fg or '#ffffff', math.abs(amount)) +end + +return U diff --git a/dots/.nvim-environments/primary/nvim/spell/en.utf-8.add b/dots/.nvim-environments/primary/nvim/spell/en.utf-8.add new file mode 100644 index 00000000..d24af0fd --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/spell/en.utf-8.add @@ -0,0 +1,61 @@ +metalpoint +rotoscope +Vassari +Giorgio +Kathe +Kollwitz's +volumetric +gumwater +Vergine +delle +Rocce +Conte +Vija +Celmin's +photorealistic +unmoving +Vinci's +da +Oilstick +Dubuffet's +Elisabetta +Sirani +de +Mattise +redrawings +Eckstein's +Kentridge +Spiegelman's +Maus +Marjane +Satrapi +limewater +Faiyum +secco +buon +Pozzo +Fra +Scrovegni +Bodhisattiva +Giornata +Encaustic +Gesso +arabic +Photomontage +photomontage +Linocut +linocut +burin +Drypoint +Mezzotint +drypoint +planographic +obscura +Afocal +Grande +Jatte +Gogh +Pollick +Gogh's +fauv +dimensionality diff --git a/dots/.nvim-environments/primary/nvim/spell/en.utf-8.add.spl b/dots/.nvim-environments/primary/nvim/spell/en.utf-8.add.spl new file mode 100644 index 0000000000000000000000000000000000000000..0e2198b610a2a8be928bd091575169a69ed28ee7 GIT binary patch literal 816 zcmX|9L5|xn3^bYM0ewJDIq2R82vl0`+y#L zYlrl9ZNR3;8InWl>&J&>b|Jj`TUGr2t!>)QUHa=SjB!p&x$`Aaq?RlNV#co_k7LEL zP)7p}3!E9Rr#n$q9W2KrhMDC1!Ly6tj)+fW6tTd{YPr1tt@EjH6#$c?1K0twfD-YS z(tabDM|z|gUP+d@LPrf1y5M!fJ?C8;Cc1&E1wJ_-rNIVq^_;SbDT?sgM9UV`Q(|9` zy{K=LuetA?k4dnLdLt?)?p4^6l7Ct1X<+nGRbLDWX{_!b;k(X7+cF6@5a067Vj9{= zJ%|KKXt0x5-9u&o>qY8$CC{U#`{Q&40R1Rz-7aORR_MBAttF3kQ!kuXIK%6V05q9a z@CBmT4w)MnN(-smqJ$s=lf{B?xb21@QZq#!W&Kh>gd+IUVUpWMbS6iMOu+O=W>FWI z)40f+woGQ>cAG>Cy7Uu;+|PU4IzOZ2Yr=zv9dW;$Qt5dDT6;BE zh*bJ*kyxS*T6B4zrL9p}FTzd#1~*Mg$&CQ%Ie{#y=;URAr>o?JarVek^crf1$5j1) F{sAMYnmPag literal 0 HcmV?d00001 diff --git a/dots/.nvim-environments/primary/nvim/syntax/cf3.vim b/dots/.nvim-environments/primary/nvim/syntax/cf3.vim new file mode 100644 index 00000000..54d0fc0c --- /dev/null +++ b/dots/.nvim-environments/primary/nvim/syntax/cf3.vim @@ -0,0 +1,626 @@ +" vim:foldmethod=marker + +" Vim syntax file +" Language: Cfengine version 3 +" Maintainer: Neil Watson +" Last Change: Jun 02 2018 +" Location: +" +" TODO: +" - would be great to know current promise type +" +" This is my first attempt at a syntax file. Feel free to send me corrections +" or improvements. I'll give you a credit. +" +" USAGE +" There is already a vim file that uses 'cf' as a file extension. You can use +" cf3 for your cf3 file extensions or identify via your vimrc file: +" au BufRead,BufNewFile *.cf set ft=cf3 +" +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded + +if version < 600 " {{{ + syntax clear +elseif exists ("b:current_syntax") + finish +endif + +syn case ignore + +syn match cf3BundleParams /(\w\+\(,\s*\w\+\)*)/hs=s+1,he=e-1 contained +syn match cf3BundleName /\s\+\w\+\s*/ contained nextgroup=cf3BundleParams + +syn keyword cf3BundleTypes agent common server knowledge monitor edit_line contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BundleTypes edit_xml contained nextgroup=cf3BundleName skipwhite +syn match cf3Bundle /^\s*bundle\s\+/ nextgroup=Cf3BundleTypes skipwhite + +syn keyword cf3BodyTypes action classes contain acl changes contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes copy_from delete depth_search contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes edit_defaults file_select password contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes link_from perms rename tcp_ip contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes package_method process_count package_module contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes process_select service_method contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes mount volume printfile match_value contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes association select_region delete_select contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes insert_select location edit_field replace_with contained nextgroup=cf3BundleName skipwhite +syn keyword cf3BodyTypes common database_server environment_resources contained nextgroup=cf3BundleName skipwhite +syn match cf3Body /^\s*body\s\+/ nextgroup=Cf3BodyTypes skipwhite + +syn match cf3BodyControl /^\s*body\s\+\(common\|agent\|server\)\s\+control/ +syn match cf3BodyControl /^\s*body\s\+\(monitor\|runagent\)\s\+control/ +syn match cf3BodyControl /^\s*body\s\+\(executor\|knowledge\|hub\)\s\+control/ +syn match cf3BodyControl /^\s*body\s\+\(reporter\|file\)\s\+control/ + +syn match cf3Action /\<\(vars\|classes\|reports\|meta\|users\):/ +syn match cf3Action /\<\(commands\|databases\|files\|interfaces\|methods\|packages\|storage\):/ +syn match cf3Action /\<\(access\|measurements\|roles\|topics\|occurrences\|defaults\):/ +syn match cf3Action /\<\(control\|guest_environments\|outputs\|processes\|services\|things\):/ +syn match cf3Action /\<\(delete_lines\|field_edits\|insert_lines\|replace_patterns\):/ + +syn match cf3Class /[^ "\t:#]\+::/ +syn region cf3ClassBlock start=/\[%CFEngine/ end=/%\]/ contains=Cf3Class + +syn keyword TODO todo TODO FIXME TBD NOTE contained +syn match cf3Comment /#.*/ contains=TODO + +syn match cf3Identifier /=>/ + +" Escape sequences in regexes +syn match cf3Esc /\\\\[sSdD+][\+\*]*/ contained +" Array indexes contained in []. Does not seems to be working. +syn region cf3Array start=/\(\\\)\@]/ contains=cf3BuiltIns,cf3Stdlib +syn match cf3Function /\<\w\+[,;()]/ contains=cf3BuiltIns,cf3Stdlib,cf3Evolve_freelib + +syn keyword cf3ControlAttr bundlesequence cache_system_functions goal_categories contained +syn keyword cf3ControlAttr ignore_missing_bundles ignore_missing_inputs inputs contained +syn keyword cf3ControlAttr version lastseenexpireafter output_prefix domain contained +syn keyword cf3ControlAttr require_comments host_licenses_paid site_classes contained +syn keyword cf3ControlAttr syslog_host syslog_port fips_mode protocol_version contained +syn keyword cf3ControlAttr package_module contained +syn keyword cf3MethodAttr usebundle useresult inherit contained +syn keyword cf3CommonAttr action classes if unless ifvarclass handle depends_on comment policy with meta contained +syn keyword cf3ClassesAttr and dist expression not or persistence scope select_class xor contained +syn keyword cf3CommandsAttr args contain module contained +syn keyword cf3ProcessesAttr process_count process_select contained +syn keyword cf3ProcessesAttr process_stop restart_class signals contained +syn keyword cf3PackagesAttr package_architectures package_method package_policy contained +syn keyword cf3PackagesAttr package_select package_version package_module contained +syn keyword cf3GuestEnvAttr environment_host environment_interface contained +syn keyword cf3GuestEnvAttr environment_resources environment_state contained +syn keyword cf3GuestEnvAttr environment_type contained +syn keyword cf3TopicsAttr association synonyms generalizations contained +syn keyword cf3ServicesAttr service_policy service_dependencies service_method contained +syn keyword cf3DatabasesAttr database_server database_type contained +syn keyword cf3DatabasesAttr database_operation database_columns contained +syn keyword cf3DatabasesAttr database_rows registry_exclude contained +syn keyword cf3DefaultsAttr if_match_regex contained +syn keyword cf3StorageAttr mount volume contained +syn keyword cf3FilesAttr acl changes copy_from create delete depth_search contained +syn keyword cf3FilesAttr edit_defaults edit_line edit_template edit_xml file_select contained +syn keyword cf3FilesAttr link_from move_obstructions pathtype perms contained +syn keyword cf3FilesAttr rename repository template_method template_data touch transformer contained +syn keyword cf3AccessAttr admit_ips admit_hostnames admit_keys admit deny deny_ips deny_hostnames deny_keys maproot contained +syn keyword cf3AccessAttr ifencrypted resource_type contained +syn keyword cf3MeasurementsAttr stream_type data_type history_type contained +syn keyword cf3MeasurementsAttr units match_value contained +syn keyword cf3ReportsAttr friend_pattern intermittency lastseen contained +syn keyword cf3ReportsAttr printfile report_to_file showstate contained +syn keyword cf3ReportsAttr bundle_return_value_index contained + +" Bodies +syn keyword cf3EditLineAttr replace_with edit_field whitespace_policy location contained +syn keyword cf3EditLineAttr insert_select insert_type expand_scalars not_matching contained +syn keyword cf3EditLineAttr delete_select select_region contained +syn keyword cf3EditFieldAttr allow_blank_fields extend_fields field_operation contained +syn keyword cf3EditFieldAttr field_separator field_value select_field contained +syn keyword cf3EditFieldAttr start_fields_from_zero value_separator contained +syn keyword cf3ReplaceWithAttr occurrences replace_value contained +syn keyword cf3SelectRegionAttr include_start_delimiter include_end_delimiter contained +syn keyword cf3SelectRegionAttr select_start select_end contained +syn keyword cf3ProcCountAttr in_range_define match_range out_of_range_define contained +syn keyword cf3ProcSelectAttr command pid ppid pgid priority process_owner contained +syn keyword cf3ProcSelectAttr process_result rsize status stime_range ttime_range contained +syn keyword cf3ProcSelectAttr tty threads vsize contained +syn keyword cf3EditDefAttr edit_backup empty_file_before_editing max_file_size recognize_join contained +syn keyword cf3LocationAttr before_after first_last select_line_matching contained +syn keyword cf3BodyFileSelectAttr leaf_name path_name search_mode search_size search_owners contained +syn keyword cf3BodyFileSelectAttr search_groups search_bsdflags ctime mtime atime contained +syn keyword cf3BodyFileSelectAttr exec_regex exec_program file_types issymlinkto file_result contained +syn keyword cf3BodyClassesAttr promise_repaired repair_failed repair_denied contained +syn keyword cf3BodyClassesAttr repair_timeout promise_kept cancel_kept cancel_repaired contained +syn keyword cf3BodyClassesAttr cancel_notkept kept_returncodes repaired_returncodes contained +syn keyword cf3BodyClassesAttr failed_returncodes persist_time scope timer_policy contained +syn keyword cf3BodyLinkFromAttr copy_patterns link_children link_type source contained +syn keyword cf3BodyLinkFromAttr when_linking_children when_no_source contained +syn keyword cf3BodyPermsAttr bsdflags groups mode owners rxdirs contained +syn keyword cf3BodyACLAttr aces acl_directory_inherit acl_method acl_type specify_inherit_aces contained +syn keyword cf3BodyDepthSearchAttr depth exclude_dirs include_basedir include_dirs contained +syn keyword cf3BodyDepthSearchAttr rmdeadlinks traverse_links xdev contained +syn keyword cf3BodyDeleteAttr dirlinks rmdirs contained +syn keyword cf3BodyRenameAttr disable disable_mode disable_suffix newname rotate contained +syn keyword cf3BodyChangesAttr hash report_changes update_hashes report_diffs contained +syn keyword cf3BodyPackageModuleAttr default_options query_installed_ifelapsed contained +syn keyword cf3BodyPackageModuleAttr query_updates_ifelapsed contained +syn keyword cf3BodyPackageMethodAttr package_add_command package_arch_regex contained +syn keyword cf3BodyPackageMethodAttr package_changes package_delete_command contained +syn keyword cf3BodyPackageMethodAttr package_delete_convention package_file_repositories contained +syn keyword cf3BodyPackageMethodAttr package_installed_regex package_list_arch_regex contained +syn keyword cf3BodyPackageMethodAttr package_list_command package_list_name_regex contained +syn keyword cf3BodyPackageMethodAttr package_list_update_command package_list_update_ifelapsed contained +syn keyword cf3BodyPackageMethodAttr package_list_version_regex package_name_convention contained +syn keyword cf3BodyPackageMethodAttr package_name_regex package_noverify_regex contained +syn keyword cf3BodyPackageMethodAttr package_noverify_returncode package_patch_arch_regex contained +syn keyword cf3BodyPackageMethodAttr package_patch_command package_patch_installed_regex contained +syn keyword cf3BodyPackageMethodAttr package_patch_list_command package_patch_name_regex contained +syn keyword cf3BodyPackageMethodAttr package_patch_version_regex package_update_command contained +syn keyword cf3BodyPackageMethodAttr package_verify_command package_version_regex contained +syn keyword cf3BodyPackageMethodAttr package_version_less_command package_version_equal_command contained +syn keyword cf3BodyPackageMethodAttr package_multiline_start contained +syn keyword cf3BodyActionAttr action_policy ifelapsed expireafter log_string contained +syn keyword cf3BodyActionAttr log_level log_kept log_priority log_repaired contained +syn keyword cf3BodyActionAttr log_failed value_kept value_repaired value_notkept contained +syn keyword cf3BodyActionAttr audit background report_level contained +syn keyword cf3BodyActionAttr measurement_class contained +syn keyword cf3BodyContainAttr useshell umask exec_owner exec_group exec_timeout contained +syn keyword cf3BodyContainAttr chdir chroot preview no_output contained +syn keyword cf3BodyCopyFromAttr source servers collapse_destination_dir contained +syn keyword cf3BodyCopyFromAttr compare copy_backup encrypt check_root contained +syn keyword cf3BodyCopyFromAttr copylink_patterns copy_size findertype contained +syn keyword cf3BodyCopyFromAttr linkcopy_patterns link_type force_update contained +syn keyword cf3BodyCopyFromAttr force_ipv4 portnumber preserve protocol_version purge contained +syn keyword cf3BodyCopyFromAttr stealth timeout trustkey type_check verify contained +syn keyword cf3BodyVolumeAttr check_foreign freespace sensible_size contained +syn keyword cf3BodyVolumeAttr sensible_count scan_arrivals contained +syn keyword cf3BodyMountAttr edit_fstab mount_type mount_source contained +syn keyword cf3BodyMountAttr mount_server mount_options unmount contained +syn keyword cf3BodyServiceMethodAttr service_type service_args contained +syn keyword cf3BodyServiceMethodAttr service_autostart_policy service_dependence_chain contained +syn keyword cf3BodyDatabaseServerAttr db_server_owner db_server_password contained +syn keyword cf3BodyDatabaseServerAttr db_server_host db_server_type contained +syn keyword cf3BodyDatabaseServerAttr db_server_connection_db contained +syn keyword cf3BodyEnvResourcesAttr env_cpus env_memory env_disk contained +syn keyword cf3BodyEnvResourcesAttr env_baseline env_spec_file env_spec contained +syn keyword cf3BodyMatchValueAttr select_line_matching select_line_number contained +syn keyword cf3BodyMatchValueAttr extraction_regex track_growing_file contained +syn keyword cf3BodyServiceMethodAttr service_type service_args service_bundle contained +syn keyword cf3BodyServiceMethodAttr service_autostart_policy service_dependence_chain contained +syn keyword cf3BodyEnvInterfaceAttr env_addresses env_name env_network contained +syn keyword cf3BodyServerControlAttr allowallconnects allowconnects allowlegacyconnects contained +syn keyword cf3BodyServerControlAttr allowusers auditing bindtointerface contained +syn keyword cf3BodyServerControlAttr cfruncommand denybadclocks denyconnects contained +syn keyword cf3BodyServerControlAttr dynamicaddresses hostnamekeys keycacheTTL contained +syn keyword cf3BodyServerControlAttr logallconnections logencryptedtransfers contained +syn keyword cf3BodyServerControlAttr maxconnections port serverfacility contained +syn keyword cf3BodyServerControlAttr skipverify trustkeysfrom contained +syn keyword cf3BodyAgentControlAttr abortclasses abortbundleclasses addclasses contained +syn keyword cf3BodyAgentControlAttr agentaccess agentfacility alwaysvalidate contained +syn keyword cf3BodyAgentControlAttr auditing binarypaddingchar bindtointerface contained +syn keyword cf3BodyAgentControlAttr hashupdates childlibpath checksum_alert_time contained +syn keyword cf3BodyAgentControlAttr defaultcopytype dryrun editbinaryfilesize contained +syn keyword cf3BodyAgentControlAttr editfilesize environment exclamation expireafter contained +syn keyword cf3BodyAgentControlAttr files_single_copy files_auto_define hostnamekeys contained +syn keyword cf3BodyAgentControlAttr ifelapsed inform intermittency max_children contained +syn keyword cf3BodyAgentControlAttr maxconnections mountfilesystems nonalphanumfiles contained +syn keyword cf3BodyAgentControlAttr repchar refresh_processes default_repository contained +syn keyword cf3BodyAgentControlAttr secureinput sensiblecount sensiblesize contained +syn keyword cf3BodyAgentControlAttr skipidentify suspiciousnames syslog verbose contained +syn keyword cf3BodyAgentControlAttr track_value timezone default_timeout contained +syn keyword cf3BodyExecutorControlAttr splaytime mailfrom mailsubject mailto smtpserver contained +syn keyword cf3BodyExecutorControlAttr mailmaxlines schedule executorfacility contained +syn keyword cf3BodyExecutorControlAttr exec_command contained +syn keyword cf3BodyEditDefsAttr edit_backup empty_file_before_editing contained +syn keyword cf3BodyEditDefsAttr max_file_size recognize_join inherit contained +syn keyword cf3BodyDeleteSelectAttr delete_if_startwith_from_list contained +syn keyword cf3BodyDeleteSelectAttr delete_if_not_startwith_from_list contained +syn keyword cf3BodyDeleteSelectAttr delete_if_match_from_list contained +syn keyword cf3BodyDeleteSelectAttr delete_if_not_match_from_list contained +syn keyword cf3BodyDeleteSelectAttr delete_if_contains_from_list contained +syn keyword cf3BodyDeleteSelectAttr delete_if_not_contains_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_startwith_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_not_startwith_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_match_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_not_match_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_contains_from_list contained +syn keyword cf3BodyInsertSelectAttr insert_if_not_contains_from_list contained +syn keyword cf3BodyMonitorControlAttr forgetrate monitorfacility histograms contained +syn keyword cf3BodyMonitorControlAttr tcpdump tcpdumpcommand contained +syn keyword cf3BodyPrintfileAttr file_to_print number_of_lines contained + +syn cluster cf3AttrCluster contains=cf3CommonAttr,cf3ClassesAttr,cf3Identifier, +syn cluster cf3AttrCluster add=cf3ProcessesAttr,cf3FilesAttr,cf3ReportsAttr +syn cluster cf3AttrCluster add=cf3PackagesAttr,cf3GuestEnvAttr,cf3TopicsAttr +syn cluster cf3AttrCluster add=cf3StorageAttr,cf3AccessAttr,cf3MeasurementsAttr +syn cluster cf3AttrCluster add=cf3EditLineAttr,cf3EditFieldAttr,cf3ReplaceWithAttr +syn cluster cf3AttrCluster add=cf3SelectRegionAttr,cf3ProcCountAttr,cf3ProcSelectAttr +syn cluster cf3AttrCluster add=cf3EditDefAttr,cf3LocationAttr,cf3CommandsAttr,cf3BodyFileSelectAttr +syn cluster cf3AttrCluster add=cf3ControlAttr,cf3MethodAttr,cf3BodyClassesAttr +syn cluster cf3AttrCluster add=cf3ServicesAttr,cf3DatabasesAttr,cf3DefaultsAttr + +syn cluster cf3AttrCluster add=cf3BodyLinkFromAttr,cf3BodyPermsAttr,cf3BodyACLAttr +syn cluster cf3AttrCluster add=cf3BodyDepthSearchAttr,cf3BodyDeleteAttr,cf3BodyRenameAttr +syn cluster cf3AttrCluster add=cf3BodyChangesAttr,cf3BodyPackageMethodAttr,cf3BodyActionAttr +syn cluster cf3AttrCluster add=cf3BodyPackageModuleAttr +syn cluster cf3AttrCluster add=cf3BodyContainAttr,cf3BodyCopyFromAttr,cf3BodyVolumeAttr +syn cluster cf3AttrCluster add=cf3BodyMountAttr,cf3BodyServiceMethodAttr,cf3BodyDatabaseServerAttr +syn cluster cf3AttrCluster add=cf3BodyEnvResourcesAttr,cf3BodyMatchValueAttr,cf3BodyServiceMethodAttr +syn cluster cf3AttrCluster add=cf3BodyEnvInterfaceAttr,cf3BodyServerControlAttr,cf3BodyEditDefsAttr +syn cluster cf3AttrCluster add=cf3BodyAgentControlAttr,cf3BodyExecutorControlAttr +syn cluster cf3AttrCluster add=cf3BodyDeleteSelectAttr,cf3BodyInsertSelectAttr +syn cluster cf3AttrCluster add=cf3BodyMonitorControlAttr,cf3BodyPrintfileAttr +syn match cf3Attributes /\w\+\s*=>/ contains=@cf3AttrCluster + +" }}} + +if version >= 508 || !exists("did_cfg_syn_inits") " {{{ + if version < 508 + let did_cfg_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + hi cf3Context ctermfg=DarkGreen + hi cf3Arrows ctermfg=DarkCyan + hi cf3Type ctermfg=Magenta + hi Identifier ctermfg=Blue + hi Function ctermfg=DarkGreen + hi Library ctermfg=DarkGrey + hi cf3ClassBlock ctermfg=Yellow + + HiLink cf3Bundle Statement + HiLink cf3BundleTypes Statement + HiLink cf3BundleName Function + HiLink cf3BundleParams Identifier + + HiLink cf3Body Statement + HiLink cf3BodyTypes Statement + HiLink cf3Comment Comment + + HiLink cf3BodyControl Statement + HiLink cf3BodyControlTypes Statement + HiLink cf3BodyControlName Statement + + HiLink cf3Action Underlined + HiLink cf3Class cf3Context + + HiLink cf3String String + HiLink cf3BuiltIns Function + HiLink cf3Evolve_freelib Function + HiLink cf3Stdlib Library + + HiLink cf3Identifier cf3Arrows + HiLink cf3Esc Special + HiLink cf3Array Special + HiLink cf3Var Identifier + + HiLink cf3Type cf3Type + HiLink cf3CommonAttr Statement + HiLink cf3ClassesAttr Statement + HiLink cf3CommandsAttr Statement + HiLink cf3ProcessesAttr Statement + HiLink cf3FilesAttr Statement + HiLink cf3MethodAttr cf3Type + HiLink cf3PackagesAttr Statement + HiLink cf3ControlAttr Statement + HiLink cf3GuestEnvAttr Statement + HiLink cf3TopicsAttr Statement + HiLink cf3ServicesAttr Statement + HiLink cf3DatabasesAttr Statement + HiLink cf3DefaultsAttr Statement + HiLink cf3StorageAttr Statement + HiLink cf3AccessAttr Statement + HiLink cf3MeasurementsAttr Statement + HiLink cf3ReportsAttr Statement + + HiLink cf3EditLineAttr Statement + HiLink cf3EditFieldAttr Statement + HiLink cf3ReplaceWithAttr Statement + HiLink cf3SelectRegionAttr Statement + HiLink cf3ProcCountAttr Statement + HiLink cf3ProcSelectAttr Statement + HiLink cf3EditDefAttr Statement + HiLink cf3LocationAttr Statement + HiLink cf3BodyFileSelectAttr Statement + HiLink cf3BodyClassesAttr Statement + HiLink cf3BodyLinkFromAttr Statement + HiLink cf3BodyPermsAttr Statement + HiLink cf3BodyACLAttr Statement + HiLink cf3BodyDepthSearchAttr Statement + HiLink cf3BodyDeleteAttr Statement + HiLink cf3BodyRenameAttr Statement + HiLink cf3BodyChangesAttr Statement + HiLink cf3BodyPackageMethodAttr Statement + HiLink cf3BodyPackageModuleAttr Statement + HiLink cf3BodyActionAttr Statement + HiLink cf3BodyContainAttr Statement + HiLink cf3BodyCopyFromAttr Statement + HiLink cf3BodyVolumeAttr Statement + HiLink cf3BodyMountAttr Statement + HiLink cf3BodyServiceMethodAttr Statement + HiLink cf3BodyDatabaseServerAttr Statement + HiLink cf3BodyEnvResourcesAttr Statement + HiLink cf3BodyMatchValueAttr Statement + HiLink cf3BodyServiceMethodAttr Statement + HiLink cf3BodyEnvInterfaceAttr Statement + HiLink cf3BodyServerControlAttr Statement + HiLink cf3BodyAgentControlAttr Statement + HiLink cf3BodyExecutorControlAttr Statement + HiLink cf3BodyEditDefsAttr Statement + HiLink cf3BodyInsertSelectAttr Statement + HiLink cf3BodyDeleteSelectAttr Statement + HiLink cf3BodyMonitorControlAttr Statement + HiLink cf3BodyPrintfileAttr Statement + + delcommand HiLink +endif +let b:current_syntax = "cf3" + +" }}} + +" Folding {{{ + +function! CF3Folds() + let line = getline(v:lnum) + + " Don't include blank lines in previous fold {{{ + if line =~? '\v^\s*$' + return '-1' + endif + " }}} + + " Don't include comments in the previous fold {{{ + if line =~? '\v^\s*#.*$' + return '-1' + endif + " }}} + + " Fold bodies/bundles {{{ + let body_types = [ + \"^bundle", + \"^body" + \ ] + for type in body_types + if line =~ type + return ">1" + endif + endfor + " }}} + + " Fold promises {{{ + let promise_types = [ + \"meta:", + \"vars:", + \"defaults:", + \"classes:", + \"users:", + \"files:", + \"packages:", + \"guest_environments:", + \"methods:", + \"processes:", + \"services:", + \"commands:", + \"storage:", + \"databases:", + \"access:", + \"roles:", + \"measurements:", + \"reports:", + \ ] + for promise_type in promise_types + if line =~ promise_type + return ">2" + endif + endfor + " }}} + + " TODO: + " - fold lists + " - include trailing }'s in fdl 1 + + " If nothing matches, keep the previous foldlevel + return '=' + +endfunction + +setlocal foldmethod=expr +setlocal foldexpr=CF3Folds() + +" }}} + +" CREDITS +" Neil Watson +" Aleksey Tsalolikhin +" John Coleman of Yale U +" Matt Lesko +" Ivan Pesin +" Zach Himsel +" +" vim_cf3 files (https://github.com/neilhwatson/vim_cf3) +" Copyright (C) 2011 Neil H. Watson +" +" This program is free software: you can redistribute it and/or modify it under +" the terms of the GNU General Public License as published by the Free Software +" Foundation, either version 3 of the License, or (at your option) any later +" version. +" +" This program is distributed in the hope that it will be useful, but WITHOUT ANY +" WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +" PARTICULAR PURPOSE. See the GNU General Public License for more details. +" +" You should have received a copy of the GNU General Public License along with +" this program. If not, see .