summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/nvim/.nvim/.null-ls-root0
-rw-r--r--public/nvim/.nvim/ftdetect/hcl.vim7
-rw-r--r--public/nvim/.nvim/ftdetect/jq.vim3
-rw-r--r--public/nvim/.nvim/ftdetect/term.lua6
-rw-r--r--public/nvim/.nvim/ftplugin/groovy.lua6
-rw-r--r--public/nvim/.nvim/ftplugin/markdown.lua5
-rw-r--r--public/nvim/.nvim/ftplugin/norg.lua3
-rw-r--r--public/nvim/.nvim/ftplugin/sh.lua6
-rw-r--r--public/nvim/.nvim/ftplugin/term.lua5
-rw-r--r--public/nvim/.nvim/ftplugin/zig.vim1
-rw-r--r--public/nvim/.nvim/indent/groovy.vim164
-rw-r--r--public/nvim/.nvim/init.lua49
-rw-r--r--public/nvim/.nvim/lua/core/disable_builtin.lua16
-rw-r--r--public/nvim/.nvim/lua/core/init.lua64
-rw-r--r--public/nvim/.nvim/lua/plugins/core/auto-session.lua6
-rw-r--r--public/nvim/.nvim/lua/plugins/core/gitsigns.lua8
-rw-r--r--public/nvim/.nvim/lua/plugins/core/luasnip.lua50
-rw-r--r--public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua18
-rw-r--r--public/nvim/.nvim/lua/plugins/core/nvim-tree.lua36
-rw-r--r--public/nvim/.nvim/lua/plugins/core/tabline.lua3
-rw-r--r--public/nvim/.nvim/lua/plugins/core/telescope.lua27
-rw-r--r--public/nvim/.nvim/lua/plugins/core/tmux.lua13
-rw-r--r--public/nvim/.nvim/lua/plugins/core/treesitter.lua54
-rw-r--r--public/nvim/.nvim/lua/plugins/core/which-key.lua45
-rw-r--r--public/nvim/.nvim/lua/plugins/extra/copilot.lua33
-rw-r--r--public/nvim/.nvim/lua/plugins/extra/feline.lua84
-rw-r--r--public/nvim/.nvim/lua/plugins/extra/neorg.lua36
-rw-r--r--public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua14
-rw-r--r--public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua11
-rw-r--r--public/nvim/.nvim/lua/plugins/eyecandy/themes.lua24
-rw-r--r--public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua4
-rw-r--r--public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua7
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/ansible.lua21
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/bash.lua40
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/dockerfile.lua24
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/go.lua65
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/groovy.lua38
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/helm.lua6
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/jq.lua21
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/json.lua21
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/jsonnet.lua26
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/lua.lua46
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/markdown.lua61
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/perl.lua36
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/promql.lua19
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/swift.lua35
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/terraform.lua40
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/typescript.lua34
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/yaml.lua59
-rw-r--r--public/nvim/.nvim/lua/plugins/lang/zig.lua40
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/cmp.lua95
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/config.lua40
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/null-ls.lua5
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/trouble.lua9
-rw-r--r--public/nvim/.nvim/lua/snippets/lua.lua3
-rw-r--r--public/nvim/.nvim/lua/snippets/sh/bash-find.lua32
-rw-r--r--public/nvim/.nvim/lua/snippets/sh/bash-misc.lua16
-rw-r--r--public/nvim/.nvim/neovim.yaml24
-rw-r--r--public/nvim/.nvim/plugin/qf-dd.vim30
-rw-r--r--public/nvim/.nvim/selene.toml1
-rw-r--r--public/nvim/.nvim/spell/en.utf-8.add11
-rw-r--r--public/nvim/.nvim/spell/en.utf-8.add.splbin0 -> 165 bytes
62 files changed, 1706 insertions, 0 deletions
diff --git a/public/nvim/.nvim/.null-ls-root b/public/nvim/.nvim/.null-ls-root
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/nvim/.nvim/.null-ls-root
diff --git a/public/nvim/.nvim/ftdetect/hcl.vim b/public/nvim/.nvim/ftdetect/hcl.vim
new file mode 100644
index 0000000..1cb3a05
--- /dev/null
+++ b/public/nvim/.nvim/ftdetect/hcl.vim
@@ -0,0 +1,7 @@
+" Stolen from https://github.com/hashivim/vim-terraform/blob/master/ftdetect/hcl.vim
+" By default Vim doesn't recognize .tf files as Terraform
+silent! autocmd! filetypedetect BufRead,BufNewFile *.tf
+autocmd BufRead,BufNewFile *.hcl set filetype=hcl
+autocmd BufRead,BufNewFile .terraformrc,terraform.rc set filetype=hcl
+autocmd BufRead,BufNewFile *.tf,*.tfvars set filetype=terraform
+autocmd BufRead,BufNewFile *.tfstate,*.tfstate.backup set filetype=json
diff --git a/public/nvim/.nvim/ftdetect/jq.vim b/public/nvim/.nvim/ftdetect/jq.vim
new file mode 100644
index 0000000..bd364c8
--- /dev/null
+++ b/public/nvim/.nvim/ftdetect/jq.vim
@@ -0,0 +1,3 @@
+" https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#jqls
+autocmd BufRead,BufNewFile *.jq set filetype=jq
+autocmd BufRead,BufNewFile *.yq set filetype=jq
diff --git a/public/nvim/.nvim/ftdetect/term.lua b/public/nvim/.nvim/ftdetect/term.lua
new file mode 100644
index 0000000..5124399
--- /dev/null
+++ b/public/nvim/.nvim/ftdetect/term.lua
@@ -0,0 +1,6 @@
+vim.api.nvim_create_autocmd({ "TermOpen" }, {
+ pattern = { "*" },
+ callback = function(_)
+ vim.o.ft = "term"
+ end,
+})
diff --git a/public/nvim/.nvim/ftplugin/groovy.lua b/public/nvim/.nvim/ftplugin/groovy.lua
new file mode 100644
index 0000000..ae8636a
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/groovy.lua
@@ -0,0 +1,6 @@
+local l = vim.opt_local
+
+l.expandtab = true
+l.smartindent = false
+l.tabstop = 4
+l.shiftwidth = 4
diff --git a/public/nvim/.nvim/ftplugin/markdown.lua b/public/nvim/.nvim/ftplugin/markdown.lua
new file mode 100644
index 0000000..84da7b9
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/markdown.lua
@@ -0,0 +1,5 @@
+local l = vim.opt_local
+
+l.conceallevel = 2
+l.wrap = true
+l.spell = true
diff --git a/public/nvim/.nvim/ftplugin/norg.lua b/public/nvim/.nvim/ftplugin/norg.lua
new file mode 100644
index 0000000..ae6a7ea
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/norg.lua
@@ -0,0 +1,3 @@
+local l = vim.opt_local
+
+l.conceallevel = 3
diff --git a/public/nvim/.nvim/ftplugin/sh.lua b/public/nvim/.nvim/ftplugin/sh.lua
new file mode 100644
index 0000000..4c20ce4
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/sh.lua
@@ -0,0 +1,6 @@
+local l = vim.opt_local
+
+l.expandtab = true
+l.smartindent = true
+l.tabstop = 8
+l.shiftwidth = 8
diff --git a/public/nvim/.nvim/ftplugin/term.lua b/public/nvim/.nvim/ftplugin/term.lua
new file mode 100644
index 0000000..84faba2
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/term.lua
@@ -0,0 +1,5 @@
+local l = vim.opt_local
+
+l.number = false
+l.relativenumber = false
+l.colorcolumn = nil
diff --git a/public/nvim/.nvim/ftplugin/zig.vim b/public/nvim/.nvim/ftplugin/zig.vim
new file mode 100644
index 0000000..d20fab2
--- /dev/null
+++ b/public/nvim/.nvim/ftplugin/zig.vim
@@ -0,0 +1 @@
+setlocal foldmethod=expr foldexpr=nvim_treesitter#foldexpr()
diff --git a/public/nvim/.nvim/indent/groovy.vim b/public/nvim/.nvim/indent/groovy.vim
new file mode 100644
index 0000000..9a06798
--- /dev/null
+++ b/public/nvim/.nvim/indent/groovy.vim
@@ -0,0 +1,164 @@
+" https://github.com/modille/groovy.vim/blob/master/indent/groovy.vim
+" Vim indent file
+" Language: Groovy
+" Maintainer: Toby Allsopp <toby.allsopp@peace.com> (resigned)
+" Last Change: 2005 Mar 28
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" Indent Groovy anonymous classes correctly.
+setlocal cindent cinoptions& cinoptions+=j1
+
+" The "extends" and "implements" lines start off with the wrong indent.
+setlocal indentkeys& indentkeys+=0=extends indentkeys+=0=implements
+
+" Set the function to do the work.
+setlocal indentexpr=GetGroovyIndent()
+
+let b:undo_indent = "set cin< cino< indentkeys< indentexpr<"
+
+" Only define the function once.
+if exists("*GetGroovyIndent")
+ finish
+endif
+
+function! SkipGroovyBlanksAndComments(startline)
+ let lnum = a:startline
+ while lnum > 1
+ let lnum = prevnonblank(lnum)
+ if getline(lnum) =~ '\*/\s*$'
+ while getline(lnum) !~ '/\*' && lnum > 1
+ let lnum = lnum - 1
+ endwhile
+ if getline(lnum) =~ '^\s*/\*'
+ let lnum = lnum - 1
+ else
+ break
+ endif
+ elseif getline(lnum) =~ '^\s*//'
+ let lnum = lnum - 1
+ else
+ break
+ endif
+ endwhile
+ return lnum
+endfunction
+
+function GetGroovyIndent()
+
+ " Groovy is just like C; use the built-in C indenting and then correct a few
+ " specific cases.
+ let theIndent = cindent(v:lnum)
+
+ " If we're in the middle of a comment then just trust cindent
+ if getline(v:lnum) =~ '^\s*\*'
+ return theIndent
+ endif
+
+
+ " find start of previous line, in case it was a continuation line
+ let lnum = SkipGroovyBlanksAndComments(v:lnum - 1)
+ let prev = lnum
+ while prev > 1
+ let next_prev = SkipGroovyBlanksAndComments(prev - 1)
+ if getline(next_prev) !~ ',\s*$'
+ break
+ endif
+ let prev = next_prev
+ endwhile
+
+
+ " Try to align "throws" lines for methods and "extends" and "implements" for
+ " classes.
+ if getline(v:lnum) =~ '^\s*\(extends\|implements\)\>'
+ \ && getline(lnum) !~ '^\s*\(extends\|implements\)\>'
+ let theIndent = theIndent + &sw
+ endif
+
+ " correct for continuation lines of "throws", "implements" and "extends"
+ let cont_kw = matchstr(getline(prev),
+ \ '^\s*\zs\(throws\|implements\|extends\)\>\ze.*,\s*$')
+ if strlen(cont_kw) > 0
+ let amount = strlen(cont_kw) + 1
+ if getline(lnum) !~ ',\s*$'
+ let theIndent = theIndent - (amount + &sw)
+ if theIndent < 0
+ let theIndent = 0
+ endif
+ elseif prev == lnum
+ let theIndent = theIndent + amount
+ if cont_kw ==# 'throws'
+ let theIndent = theIndent + &sw
+ endif
+ endif
+ elseif getline(prev) =~ '^\s*\(throws\|implements\|extends\)\>'
+ \ && (getline(prev) =~ '{\s*$'
+ \ || getline(v:lnum) =~ '^\s*{\s*$')
+ let theIndent = theIndent - &sw
+ endif
+
+ " When the line starts with a }, try aligning it with the matching {,
+ " skipping over "throws", "extends" and "implements" clauses.
+ if getline(v:lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$'
+ call cursor(v:lnum, 1)
+ silent normal %
+ let lnum = line('.')
+ if lnum < v:lnum
+ while lnum > 1
+ let next_lnum = SkipGroovyBlanksAndComments(lnum - 1)
+ if getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
+ \ && getline(next_lnum) !~ ',\s*$'
+ break
+ endif
+ let lnum = prevnonblank(next_lnum)
+ endwhile
+ return indent(lnum)
+ endif
+ endif
+
+ " Below a line starting with "}" never indent more. Needed for a method
+ " below a method with an indented "throws" clause.
+ let lnum = SkipGroovyBlanksAndComments(v:lnum - 1)
+ if getline(lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$' && indent(lnum) < theIndent
+ let theIndent = indent(lnum)
+ endif
+
+ " Fixed several indent problem
+ if theIndent > indent(lnum)
+ " if no '{ -> ( if else' , then same indent as previous line
+ if getline(lnum) !~ '[\{>\(]\s*$' && getline(lnum) !~ '\s*\(if\|else\)\s*'
+ let theIndent = indent(lnum)
+ endif
+
+ " if last line end with (
+ if getline(lnum) =~ '[\(]\s*$'
+ let theIndent = indent(lnum) + &sw
+ endif
+ endif
+
+ " indent the ')' line with ( line
+ if getline(v:lnum) =~ '^\s*)'
+ call cursor(v:lnum, 1)
+ silent normal %
+ let lnum = line('.')
+ if lnum < v:lnum
+ while lnum > 1
+ let next_lnum = SkipGroovyBlanksAndComments(lnum - 1)
+ if getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
+ \ && getline(next_lnum) !~ ',\s*$'
+ break
+ endif
+ let lnum = prevnonblank(next_lnum)
+ endwhile
+ return indent(lnum)
+ endif
+ endif
+
+ return theIndent
+endfunction
+
+" vi: sw=2 et
diff --git a/public/nvim/.nvim/init.lua b/public/nvim/.nvim/init.lua
new file mode 100644
index 0000000..22c8dc7
--- /dev/null
+++ b/public/nvim/.nvim/init.lua
@@ -0,0 +1,49 @@
+require("core")
+--require("plugins")
+
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.loop.fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable", -- latest stable release
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup({
+ spec = {
+ { import = "plugins.core" },
+ { import = "plugins.eyecandy" },
+ { import = "plugins.lsp" },
+ { import = "plugins.lang" },
+ { import = "plugins.extra.copilot" },
+ { import = "plugins.extra.vim-fugitive" },
+ --{ import = "plugins.extra.neorg" },
+ --{ import = "plugins.extra.feline" },
+ },
+ change_detection = {
+ enabled = true,
+ notify = false,
+ },
+})
+
+--vim.api.nvim_create_autocmd({ "BufEnter", "BufRead" }, {
+--pattern = { "*" },
+--callback = function(args)
+--local file_size = vim.fn.getfsize(args.file)
+----vim.api.nvim_buf_get_lines(buf, firstline, new_lastline, false)
+----nvim_buf_get_lines({buffer}, {start}, {end}, {strict_indexing})
+--if file_size > 1024 * 1024 then
+--pcall(vim.cmd, "TSBufDisable highlight")
+--pcall(vim.cmd, "syntax off")
+--pcall(vim.cmd, "syntax clear")
+--pcall(vim.cmd, "IlluminatePauseBuf")
+--pcall(vim.cmd, "IndentBlanklineDisable")
+--pcall(vim.cmd, "NoMatchParen")
+--end
+--end,
+--})
diff --git a/public/nvim/.nvim/lua/core/disable_builtin.lua b/public/nvim/.nvim/lua/core/disable_builtin.lua
new file mode 100644
index 0000000..ea546ba
--- /dev/null
+++ b/public/nvim/.nvim/lua/core/disable_builtin.lua
@@ -0,0 +1,16 @@
+vim.g.loaded_gzip = 1
+vim.g.loaded_zip = 1
+vim.g.loaded_zipPlugin = 1
+vim.g.loaded_tar = 1
+vim.g.loaded_tarPlugin = 1
+
+vim.g.loaded_getscript = 1
+vim.g.loaded_getscriptPlugin = 1
+vim.g.loaded_vimball = 1
+vim.g.loaded_vimballPlugin = 1
+vim.g.loaded_2html_plugin = 1
+
+vim.g.loaded_matchit = 1
+vim.g.loaded_matchparen = 1
+vim.g.loaded_logiPat = 1
+vim.g.loaded_rrhelper = 1
diff --git a/public/nvim/.nvim/lua/core/init.lua b/public/nvim/.nvim/lua/core/init.lua
new file mode 100644
index 0000000..3c34282
--- /dev/null
+++ b/public/nvim/.nvim/lua/core/init.lua
@@ -0,0 +1,64 @@
+-----------------------------------------------------------
+-- General
+-----------------------------------------------------------
+vim.opt.mouse = "a" -- Enable mouse support
+vim.opt.clipboard = "unnamedplus" -- Copy/paste to system clipboard
+vim.opt.termguicolors = true -- Enable 24-bit RGB colors
+vim.o.background = "light"
+vim.opt.hidden = true
+vim.opt.number = true
+vim.o.cursorlineopt = "both"
+vim.opt.conceallevel = 0
+vim.opt.relativenumber = true
+vim.opt.showcmd = true
+vim.opt.showmode = true
+vim.opt.colorcolumn = "80"
+vim.opt.cursorline = true
+vim.opt.foldlevelstart = 99
+vim.opt.showtabline = 1
+vim.opt.laststatus = 3 -- Single status line across all buffers
+vim.opt.undofile = true
+vim.opt.list = true -- Show some invisible characters like tabs
+vim.opt.undodir = vim.fn.stdpath("config") .. "/undo"
+vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
+-- TODO make it pretty with the highlights
+--vim.opt.winbar = '%!luaeval("_winbar()")' -- The winbar text, I don't know if it is possible to embed it directly here :(
+--vim.opt.winbar = "%=%m %t%="
+-----------------------------------------------------------
+-- Tabs, indent
+-----------------------------------------------------------
+vim.opt.expandtab = true -- Use spaces instead of tabs
+vim.opt.shiftwidth = 2 -- Shift 4 spaces when tab
+vim.opt.tabstop = 2 -- 1 tab == 4 spaces
+vim.opt.smartindent = true -- Autoindent new lines
+
+-----------------------------------------------------------
+-- Custom keymaps
+-----------------------------------------------------------
+vim.api.nvim_set_keymap("i", "jk", "<Esc>", {}) -- Use jk to exit insert mode
+vim.api.nvim_set_keymap("i", "kj", "<Esc>", {}) -- Use kj to exit insert mode
+vim.api.nvim_set_keymap("t", "jk", "<Esc>", {}) -- Use jk to exit terminal mode
+vim.api.nvim_set_keymap("t", "kj", "<Esc>", {}) -- Use kj to exit terminal mode
+vim.api.nvim_set_keymap("t", "<Esc>", "<C-\\><C-n>", { noremap = true }) -- Use Esc to exit terminal mode
+
+vim.api.nvim_set_keymap("i", "<C-t>", "<Esc>:tabnew<CR>", {}) -- New tab
+vim.api.nvim_set_keymap("n", "<C-t>", ":tabnew<CR>", {}) -- New tab
+
+-- No arrow keys for movement
+--nnoremap <up> <nop>
+--nnoremap <down> <nop>
+--inoremap <up> <nop>
+--inoremap <down> <nop>
+--inoremap <left> <nop>
+--inoremap <right> <nop>
+
+--Left and right to switch buffers
+--nnoremap <left> :bp<CR>
+--nnoremap <right> :bn<CR>
+
+--_winbar = function() -- My custom winbar text
+--local filename = vim.fn.expand('%')
+--return string.gsub(filename, 'term://.*:', '')
+--end
+
+require("core.disable_builtin")
diff --git a/public/nvim/.nvim/lua/plugins/core/auto-session.lua b/public/nvim/.nvim/lua/plugins/core/auto-session.lua
new file mode 100644
index 0000000..9bfcac0
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/auto-session.lua
@@ -0,0 +1,6 @@
+return {
+ "rmagatti/auto-session",
+ config = function()
+ require("auto-session").setup({ log_level = "info" })
+ end,
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/gitsigns.lua b/public/nvim/.nvim/lua/plugins/core/gitsigns.lua
new file mode 100644
index 0000000..e856855
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/gitsigns.lua
@@ -0,0 +1,8 @@
+return {
+ "lewis6991/gitsigns.nvim",
+ event = { "BufRead" },
+ config = function()
+ require("gitsigns").setup()
+ end,
+ dependencies = { "nvim-lua/plenary.nvim" },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/luasnip.lua b/public/nvim/.nvim/lua/plugins/core/luasnip.lua
new file mode 100644
index 0000000..622af58
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/luasnip.lua
@@ -0,0 +1,50 @@
+return {
+ {
+ "L3MON4D3/LuaSnip",
+ dependencies = { "rafamadriz/friendly-snippets" },
+ build = "make install_jsregexp",
+ config = function()
+ local ls = require("luasnip")
+ local types = require("luasnip.util.types")
+
+ ls.config.set_config({
+ history = true,
+ updateevents = "TextChanged,TextChangedI",
+ enable_autosnippets = true,
+ ext_opts = {
+ [types.choiceNode] = {
+ active = {
+ virt_text = { { "<-", "Error" } },
+ },
+ },
+ },
+ })
+
+ -- luasnip keymaps are defined as cmp keymaps
+
+ vim.keymap.set(
+ "n",
+ "<leader><leader>s",
+ '<cmd>lua require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })<CR>'
+ )
+
+ require("luasnip.loaders.from_lua").lazy_load({ paths = "~/.config/nvim/lua/snippets" })
+ end,
+ },
+
+ -- VSCode like (JSON) snippets
+ -- For the full list of supported languages see:
+ -- https://github.com/rafamadriz/friendly-snippets/blob/main/package.json
+ {
+ "rafamadriz/friendly-snippets",
+ opts = { include = {} },
+ config = function(_, opts)
+ if #opts.include == 0 then
+ return
+ end
+
+ opts.path = "~/.local/share/nvim/lazy/friendly-snippets"
+ require("luasnip.loaders.from_vscode").lazy_load(opts)
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua b/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua
new file mode 100644
index 0000000..720b3d2
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua
@@ -0,0 +1,18 @@
+return {
+ "preservim/nerdcommenter",
+ init = function()
+ vim.g.NERDCreateDefaultMappings = 0
+ end,
+ config = function()
+ vim.api.nvim_set_keymap("v", "<leader>cc", "<plug>NERDCommenterComment", { silent = true })
+ vim.api.nvim_set_keymap("v", "<leader>cu", "<plug>NERDCommenterUncomment", { silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>cc", "<plug>NERDCommenterComment", { noremap = false, silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>cu", "<plug>NERDCommenterUncomment", { noremap = false, silent = true })
+ end,
+ keys = {
+ { "<leader>cc", mode = "v" },
+ { "<leader>cc", mode = "n" },
+ { "<leader>cu", mode = "v" },
+ { "<leader>cu", mode = "n" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua b/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua
new file mode 100644
index 0000000..e8ca82f
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua
@@ -0,0 +1,36 @@
+return {
+ {
+ "nvim-tree/nvim-tree.lua",
+ config = function()
+ require("nvim-tree").setup({
+ sync_root_with_cwd = false,
+ update_focused_file = {
+ enable = true,
+ update_root = false,
+ },
+ renderer = {
+ indent_markers = { enable = true },
+ highlight_git = true,
+ highlight_opened_files = "all",
+ },
+ })
+ end,
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ },
+
+ -- Add nvim-tree which-key shortcuts
+ {
+ "folke/which-key.nvim",
+ opts = function(_, opts)
+ if type(opts) ~= "table" then
+ opts = {}
+ end
+
+ if type(opts.f) ~= "table" then
+ opts["f"] = {}
+ end
+
+ opts.f["e"] = { "<cmd>NvimTreeToggle<cr>", "Explorer" }
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/tabline.lua b/public/nvim/.nvim/lua/plugins/core/tabline.lua
new file mode 100644
index 0000000..0a8305d
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/tabline.lua
@@ -0,0 +1,3 @@
+return {
+ "mkitt/tabline.vim",
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/telescope.lua b/public/nvim/.nvim/lua/plugins/core/telescope.lua
new file mode 100644
index 0000000..367e20c
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/telescope.lua
@@ -0,0 +1,27 @@
+return {
+ {
+ "nvim-telescope/telescope.nvim",
+ config = function()
+ require("telescope").load_extension("file_browser")
+ end,
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "nvim-telescope/telescope-file-browser.nvim",
+ },
+ },
+
+ {
+ "folke/which-key.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.b = opts.b or {}
+ opts.f = opts.f or {}
+
+ opts.b["b"] = { "<cmd>Telescope buffers<cr>", "All" }
+ opts.f["f"] = { "<cmd>Telescope find_files<cr>", "Find" }
+ opts.f["g"] = { "<cmd>Telescope live_grep<cr>", "Grep" }
+ opts.f["b"] = { "<cmd>Telescope file_browser<cr>", "Browse" }
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/tmux.lua b/public/nvim/.nvim/lua/plugins/core/tmux.lua
new file mode 100644
index 0000000..0d63aa4
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/tmux.lua
@@ -0,0 +1,13 @@
+return {
+ "christoomey/vim-tmux-navigator",
+ config = function()
+ local nvim_set_keymap = vim.api.nvim_set_keymap
+ vim.g.tmux_navigator_no_mappings = 1
+ for _, mode in pairs({ "n", "v", "i", "t" }) do
+ nvim_set_keymap(mode, "<C-j>", "<cmd>:TmuxNavigateDown<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-k>", "<cmd>:TmuxNavigateUp<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-h>", "<cmd>:TmuxNavigateLeft<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-l>", "<cmd>:TmuxNavigateRight<CR>", { noremap = true })
+ end
+ end,
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/treesitter.lua b/public/nvim/.nvim/lua/plugins/core/treesitter.lua
new file mode 100644
index 0000000..3818555
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/treesitter.lua
@@ -0,0 +1,54 @@
+---@param tbl table
+---@return table
+local tbl_uniq = function(tbl)
+ ---@type table<string, boolean>
+ local added = {}
+ local res = {}
+ res = vim.tbl_filter(function(k)
+ if added[k] then
+ return false
+ end
+ added[k] = true
+ return true
+ end, tbl)
+
+ return res
+end
+
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ build = ":TSUpdate",
+ cmd = { "TSUpdateSync" },
+ event = { "BufReadPost", "BufNewFile" },
+ init = function()
+ vim.o.foldmethod = "expr"
+ vim.o.foldexpr = "nvim_treesitter#foldexpr()"
+ end,
+ opts = {
+ ensure_installed = { "query" },
+ ignore_install = {},
+ highlight = {
+ enable = true,
+ },
+ query_linter = {
+ enable = true,
+ use_virtual_text = true,
+ lint_events = { "BufWrite", "CursorHold" },
+ },
+ },
+ config = function(_, opts)
+ if type(opts.ensure_installed) == "table" then
+ opts.ensure_installed = tbl_uniq(opts.ensure_installed)
+ end
+ require("nvim-treesitter.configs").setup(opts)
+ end,
+ },
+
+ {
+ "nvim-treesitter/playground",
+ build = ":TSInstall query",
+ dependencies = { "nvim-treesitter" },
+ cmd = { "TSPlaygroundToggle" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/core/which-key.lua b/public/nvim/.nvim/lua/plugins/core/which-key.lua
new file mode 100644
index 0000000..6e046a3
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/core/which-key.lua
@@ -0,0 +1,45 @@
+return {
+ "folke/which-key.nvim",
+ event = "VeryLazy",
+ init = function()
+ vim.o.timeout = true
+ vim.o.timeoutlen = 300
+ end,
+
+ opts = {
+ f = { name = "File" },
+ b = {
+ name = "Buffer",
+ n = { "<cmd>BufferNext<cr>", "Next" },
+ p = { "<cmd>BufferPrevious<cr>", "Previous" },
+ c = { "<cmd>BufferClose<cr>", "Close" },
+ ["1"] = { "<cmd>BufferGoto 1<cr>", "1" },
+ ["2"] = { "<cmd>BufferGoto 2<cr>", "2" },
+ ["3"] = { "<cmd>BufferGoto 3<cr>", "3" },
+ ["4"] = { "<cmd>BufferGoto 4<cr>", "4" },
+ ["5"] = { "<cmd>BufferGoto 5<cr>", "5" },
+ ["6"] = { "<cmd>BufferGoto 6<cr>", "6" },
+ ["7"] = { "<cmd>BufferGoto 7<cr>", "7" },
+ ["8"] = { "<cmd>BufferGoto 8<cr>", "8" },
+ ["9"] = { "<cmd>BufferGoto 9<cr>", "9" },
+ },
+ l = {
+ name = "LSP",
+ a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Action" },
+ f = { "<cmd>lua vim.lsp.buf.format({ async = false, timeout_ms = 5000 })<cr>", "Format" },
+ d = { "<cmd>lua vim.diagnostic.open_float()<cr>", "Diagnostic" },
+ h = { "<cmd>lua vim.lsp.buf.hover()<cr>", "Help" },
+ g = {
+ name = "Go to",
+ D = { "<cmd>lua vim.lsp.buf.declaration()<cr>", "Go to declaration" },
+ d = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Go to definition" },
+ i = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Go to implementation" },
+ },
+ },
+ },
+
+ config = function(_, opts)
+ local wk = require("which-key")
+ wk.register(opts, { prefix = "<leader>" })
+ end,
+}
diff --git a/public/nvim/.nvim/lua/plugins/extra/copilot.lua b/public/nvim/.nvim/lua/plugins/extra/copilot.lua
new file mode 100644
index 0000000..15d0c73
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/extra/copilot.lua
@@ -0,0 +1,33 @@
+return {
+ {
+ "zbirenbaum/copilot.lua",
+ event = { "InsertEnter" },
+ build = ":Copilot auth",
+ config = function()
+ vim.schedule(function()
+ require("copilot").setup({
+ filetypes = { yaml = true },
+ suggestion = { enabled = false },
+ panel = { enabled = false },
+ })
+ end)
+ end,
+ },
+
+ {
+ "zbirenbaum/copilot-cmp",
+ dependencies = { "copilot.lua" },
+ opts = {},
+ },
+
+ {
+ "hrsh7th/nvim-cmp",
+ dependencies = { "zbirenbaum/copilot-cmp" },
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ table.insert(opts.sources, 1, { name = "copilot" })
+ opts.formatting.format.menu["copilot"] = ""
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/extra/feline.lua b/public/nvim/.nvim/lua/plugins/extra/feline.lua
new file mode 100644
index 0000000..037db34
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/extra/feline.lua
@@ -0,0 +1,84 @@
+return {
+ {
+ "feline-nvim/feline.nvim",
+ dependencies = { "nvim-navic", "catppuccin", "nvim-tree/nvim-web-devicons" },
+ config = function()
+ local ctp_feline = require("catppuccin.groups.integrations.feline")
+ ctp_feline.setup({
+ assets = {
+ left_separator = "",
+ right_separator = "",
+ },
+ })
+
+ local catpuccin_components = ctp_feline.get()
+ require("feline").setup({ components = catpuccin_components })
+
+ local catpuccin_winbar_components = { active = { {}, {}, {} }, inactive = {} }
+ --catpuccin_winbar_components.inactive = catpuccin_components.inactive
+
+ -- Removes the mode_icon and its left padding
+ --table.remove(catpuccin_components.active[1], 2)
+ --table.remove(catpuccin_components.active[1], 1)
+ --local catpuccin_winbar_components = catpuccin_components
+
+ --local yaml_schema_component = {
+ --provider = function()
+ --local schema = require("yaml-companion").get_buf_schema(0)
+ --return schema.result[1].name
+ --end,
+ --enabled = function()
+ --local enabled = catpuccin_components.active[3][1].enabled
+ --if vim.bo.filetype == "yaml" and enabled then
+ --return true
+ --end
+ --end,
+ --hl = catpuccin_components.active[3][1].hl,
+ --left_sep = catpuccin_components.active[3][1].left_sep,
+ --right_sep = catpuccin_components.active[3][1].right_sep,
+ --}
+
+ local navic_component = {
+ provider = function()
+ local location = require("nvim-navic").get_location()
+ if location == "" then
+ return location
+ end
+ return "> " .. require("nvim-navic").get_location()
+ end,
+ enabled = function()
+ local ok, navic = pcall(require, "nvim-navic")
+ if ok then
+ return navic.is_available()
+ end
+ end,
+ hl = {
+ bg = require("catppuccin.palettes").get_palette().base,
+ fg = catpuccin_components.active[3][1].hl.fg,
+ },
+ }
+
+ --table.insert(catpuccin_components.active[3], 1, yaml_schema_component)
+ -- Overwrite the useless LSP component
+ --catpuccin_components.active[3][2] = yaml_schema_component
+
+ -- this is a hack to properly align the next component
+ catpuccin_winbar_components.active[1][1] = {
+ provider = function()
+ return " "
+ end,
+ hl = {
+ bg = require("catppuccin.palettes").get_palette().base,
+ fg = require("catppuccin.palettes").get_palette().base,
+ },
+ }
+
+ catpuccin_winbar_components.active[1][2] = navic_component
+ catpuccin_winbar_components.inactive = catpuccin_winbar_components.active
+
+ require("feline").winbar.setup({
+ components = catpuccin_winbar_components,
+ })
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/extra/neorg.lua b/public/nvim/.nvim/lua/plugins/extra/neorg.lua
new file mode 100644
index 0000000..991ec40
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/extra/neorg.lua
@@ -0,0 +1,36 @@
+return {
+ {
+ "nvim-neorg/neorg",
+ build = ":Neorg sync-parsers",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ config = function()
+ require("neorg").setup({
+ load = {
+ ["core.defaults"] = {}, -- Loads default behaviour
+ ["core.concealer"] = {}, -- Adds pretty icons to your documents
+ ["core.completion"] = { config = { engine = "nvim-cmp" } },
+ ["core.dirman"] = { -- Manages Neorg workspaces
+ config = {
+ workspaces = {
+ notes = "~/notes",
+ www = "~/www",
+ },
+ default_workspace = "notes",
+ },
+ },
+ },
+ })
+ end,
+ },
+
+ {
+ "hrsh7th/nvim-cmp",
+ dependencies = { "nvim-neorg/neorg" },
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ table.insert(opts.sources, 1, { name = "neorg" })
+ opts.formatting.format.menu["neorg"] = ""
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua b/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua
new file mode 100644
index 0000000..d1f8a5a
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua
@@ -0,0 +1,14 @@
+return {
+ {
+ "shumphrey/fugitive-gitlab.vim",
+ cmd = "GBrowse",
+ config = function()
+ vim.g.fugitive_gitlab_domains = { "https://gitlab.otters.xyz" }
+ end,
+ },
+
+ {
+ "tpope/vim-fugitive",
+ dependencies = { "tpope/vim-rhubarb", "fugitive-gitlab.vim" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua b/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua
new file mode 100644
index 0000000..618c730
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua
@@ -0,0 +1,11 @@
+return {
+ "lukas-reineke/indent-blankline.nvim",
+ event = { "BufRead" },
+ config = function()
+ require("indent_blankline").setup({
+ show_current_context = true,
+ show_current_context_start = false,
+ })
+ end,
+ dependencies = { "nvim-treesitter" },
+}
diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua b/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua
new file mode 100644
index 0000000..69bbe99
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua
@@ -0,0 +1,24 @@
+return {
+ {
+ "catppuccin/nvim",
+ lazy = false,
+ priority = 1000,
+ name = "catppuccin",
+ config = function()
+ local catp = require("catppuccin")
+ catp.setup({
+ flavour = "frappe",
+ integrations = {
+ which_key = true,
+ illuminate = true,
+ lsp_trouble = true,
+ navic = {
+ enabled = true,
+ custom_bg = "NONE",
+ },
+ },
+ })
+ vim.api.nvim_command("colorscheme catppuccin")
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua b/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua
new file mode 100644
index 0000000..20b9bb2
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua
@@ -0,0 +1,4 @@
+return {
+ "RRethy/vim-illuminate",
+ event = { "BufRead" },
+}
diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua b/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua
new file mode 100644
index 0000000..5259d7a
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua
@@ -0,0 +1,7 @@
+return {
+ "lukas-reineke/virt-column.nvim",
+ event = { "BufRead" },
+ config = function()
+ require("virt-column").setup()
+ end,
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/ansible.lua b/public/nvim/.nvim/lua/plugins/lang/ansible.lua
new file mode 100644
index 0000000..91f34df
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/ansible.lua
@@ -0,0 +1,21 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "yaml" })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.ansiblels = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/bash.lua b/public/nvim/.nvim/lua/plugins/lang/bash.lua
new file mode 100644
index 0000000..d9911a6
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/bash.lua
@@ -0,0 +1,40 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "bash" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.code_actions.shellcheck, -- Diagnostics handled by Bash LS
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ -- Just here because it doesn't work with the default node
+ -- https://github.com/bash-lsp/bash-language-server/issues/418
+ local brew_prefix = vim.fn.systemlist("brew --prefix")[1]
+ local bashls_script_name = "bash-language-server"
+ local bashls_script_path = vim.fn.systemlist("which " .. bashls_script_name)[1]
+ local bashls_cmd = { brew_prefix .. "/opt/node@16/bin/node", bashls_script_path, "start" }
+ opts.servers.bashls = { cmd = bashls_cmd }
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua b/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua
new file mode 100644
index 0000000..ca3ccc2
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua
@@ -0,0 +1,24 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "dockerfile" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.hadolint,
+ })
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/go.lua b/public/nvim/.nvim/lua/plugins/lang/go.lua
new file mode 100644
index 0000000..7e7fa03
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/go.lua
@@ -0,0 +1,65 @@
+return {
+ {
+ "fatih/vim-go",
+ init = function()
+ vim.g.go_fmt_command = "gofumpt"
+ end,
+ ft = { "go" },
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, {
+ "go",
+ "gomod",
+ "gosum",
+ })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.golangci_lint,
+ null_ls.builtins.formatting.gofumpt, -- Just here because gopls integrated gofumpt doesn't work
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.gopls = {
+ -- Because integrated gofumpt doesn't work
+ -- I disable formatting for gopls
+ -- Formatting is handled with gofumpt by:
+ -- - null-ls on format request
+ -- - vim-go on save
+ on_attach = function(client, _)
+ client.server_capabilities.documentFormattingProvider = false
+ client.server_capabilities.documentRangeFormattingProvider = false
+ end,
+ cmd = { "gopls", "-remote=auto", "serve" }, -- Shared with vim-go's gopls instance
+ settings = {
+ gopls = {
+ buildFlags = { "-tags=integration,unit" }, -- To make packages with those build flags actually work with the LSP
+ semanticTokens = false,
+ gofumpt = true, -- gofumpt formatting, doesn't work
+ },
+ },
+ }
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/groovy.lua b/public/nvim/.nvim/lua/plugins/lang/groovy.lua
new file mode 100644
index 0000000..1ab404d
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/groovy.lua
@@ -0,0 +1,38 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "groovy" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.npm_groovy_lint,
+ null_ls.builtins.formatting.npm_groovy_lint,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ local groovyls_path = "/Users/christian.segundo/git/groovy-language-server"
+ local groovyls_app_path = "build/libs/app-all.jar"
+ local groovyls_cmd = { "java", "-jar", groovyls_path .. "/" .. groovyls_app_path }
+ opts.servers.groovyls = { cmd = groovyls_cmd }
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/helm.lua b/public/nvim/.nvim/lua/plugins/lang/helm.lua
new file mode 100644
index 0000000..6b303ec
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/helm.lua
@@ -0,0 +1,6 @@
+return {
+ {
+ "towolf/vim-helm",
+ ft = { "yaml" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/jq.lua b/public/nvim/.nvim/lua/plugins/lang/jq.lua
new file mode 100644
index 0000000..a9a41c6
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/jq.lua
@@ -0,0 +1,21 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "jq" })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.jqls = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/json.lua b/public/nvim/.nvim/lua/plugins/lang/json.lua
new file mode 100644
index 0000000..1d2d073
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/json.lua
@@ -0,0 +1,21 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "json" })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.jsonls = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua b/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua
new file mode 100644
index 0000000..dff2e4b
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua
@@ -0,0 +1,26 @@
+return {
+ {
+ "google/vim-jsonnet",
+ ft = { "jsonnet" },
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "jsonnet" })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.jsonnet_ls = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/lua.lua b/public/nvim/.nvim/lua/plugins/lang/lua.lua
new file mode 100644
index 0000000..5e08867
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/lua.lua
@@ -0,0 +1,46 @@
+return {
+ { "folke/neodev.nvim", lazy = true, opts = {} },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "lua" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.selene,
+ null_ls.builtins.formatting.stylua,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.on_attach = opts.on_attach or {}
+ opts.servers.lua_ls = {
+ on_attach = function(client, _)
+ client.server_capabilities.documentFormattingProvider = false
+ client.server_capabilities.documentRangeFormattingProvider = false
+ end,
+ }
+ end
+ end,
+ dependencies = {
+ "folke/neodev.nvim",
+ },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/markdown.lua b/public/nvim/.nvim/lua/plugins/lang/markdown.lua
new file mode 100644
index 0000000..dcacfc7
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/markdown.lua
@@ -0,0 +1,61 @@
+return {
+ {
+ "iamcco/markdown-preview.nvim",
+ build = "cd app && npm install",
+ init = function()
+ vim.g.mkdp_filetypes = { "markdown" }
+ end,
+ ft = { "markdown" },
+ },
+
+ {
+ "mzlogin/vim-markdown-toc",
+ init = function()
+ vim.g.vmt_auto_update_on_save = 0
+ vim.g.vmt_dont_insert_fence = 1
+ end,
+ ft = { "markdown" },
+ },
+
+ {
+ "preservim/vim-markdown",
+ dependencies = { "godlygeek/tabular" },
+ config = function()
+ vim.g.vim_markdown_conceal_code_blocks = 0
+ vim.g.vim_markdown_frontmatter = 1
+ vim.g.vim_markdown_strikethrough = 0
+ vim.g.vim_markdown_auto_insert_bullets = 0
+ vim.g.vim_markdown_new_list_item_indent = 0
+ end,
+ ft = { "markdown" },
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, {
+ "markdown_inline",
+ })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.markdownlint_cli2,
+ null_ls.builtins.diagnostics.vale,
+ null_ls.builtins.formatting.prettierd.with({
+ filetypes = { "markdown" },
+ }),
+ })
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/perl.lua b/public/nvim/.nvim/lua/plugins/lang/perl.lua
new file mode 100644
index 0000000..6ec7220
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/perl.lua
@@ -0,0 +1,36 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "perl" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ -- perlls is supposed to use perltidy for formatting, but it doesn't
+ -- work not sure why.
+ null_ls.builtins.formatting.perltidy,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.perlls = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/promql.lua b/public/nvim/.nvim/lua/plugins/lang/promql.lua
new file mode 100644
index 0000000..267e118
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/promql.lua
@@ -0,0 +1,19 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "promql" })
+ end
+ end,
+ },
+
+ {
+ name = "promqlfmt.nvim",
+ url = "https://git.segundo.io/promqlfmt.nvim",
+ --dir = "/Users/christian.segundo/git/promql.nvim",
+ --dev = true,
+ cmd = { "Promqlfmt" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/swift.lua b/public/nvim/.nvim/lua/plugins/lang/swift.lua
new file mode 100644
index 0000000..d7f6d33
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/swift.lua
@@ -0,0 +1,35 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "swift" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.swiftlint,
+ null_ls.builtins.formatting.swiftformat,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.sourcekit = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/terraform.lua b/public/nvim/.nvim/lua/plugins/lang/terraform.lua
new file mode 100644
index 0000000..e7ccff4
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/terraform.lua
@@ -0,0 +1,40 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, {
+ "hcl",
+ "terraform",
+ })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.tfsec,
+ null_ls.builtins.formatting.terraform_fmt.with({
+ extra_filetypes = { "hcl" },
+ }),
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.terraformls = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/typescript.lua b/public/nvim/.nvim/lua/plugins/lang/typescript.lua
new file mode 100644
index 0000000..d5cf529
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/typescript.lua
@@ -0,0 +1,34 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "typescript" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.code_actions.eslint_d,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.tsserver = {}
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/yaml.lua b/public/nvim/.nvim/lua/plugins/lang/yaml.lua
new file mode 100644
index 0000000..83af09e
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/yaml.lua
@@ -0,0 +1,59 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "yaml" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.yamllint,
+ })
+ end
+ end,
+ },
+
+ {
+ --"someone-stole-my-name/yaml-companion.nvim",
+ dev = true,
+ dir = "/Users/christian.segundo/git/nvim_plugins/yaml-companion.nvim",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "nvim-telescope/telescope.nvim",
+ },
+ init = function()
+ require("telescope").load_extension("yaml_schema")
+ end,
+ ft = { "yaml" },
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ --dependencies = { "someone-stole-my-name/yaml-companion.nvim" },
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.yamlls = require("yaml-companion").setup()
+ end
+ end,
+ },
+
+ {
+ "rafamadriz/friendly-snippets",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.include = opts.include or {}
+ vim.list_extend(opts.include, { "yaml" })
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lang/zig.lua b/public/nvim/.nvim/lua/plugins/lang/zig.lua
new file mode 100644
index 0000000..1970797
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lang/zig.lua
@@ -0,0 +1,40 @@
+return {
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, { "zig" })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.formatting.zigfmt,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.on_attach = opts.on_attach or {}
+ opts.servers.zls = {
+ on_attach = function(client, _)
+ client.server_capabilities.documentFormattingProvider = false
+ client.server_capabilities.documentRangeFormattingProvider = false
+ end,
+ }
+ end
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/cmp.lua b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua
new file mode 100644
index 0000000..6099683
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua
@@ -0,0 +1,95 @@
+return {
+ "hrsh7th/nvim-cmp",
+ opts = {
+ sources = {
+ {
+ name = "luasnip",
+ option = {
+ show_autosnippets = true,
+ use_show_condition = true,
+ },
+ },
+ { name = "nvim_lsp", priority = 1 },
+ { name = "nvim_lsp_signature_help" },
+ { name = "nvim_lua" },
+ { name = "path" },
+ { name = "emoji" },
+ },
+ formatting = {
+ format = {
+ mode = "symbol_text",
+ maxwidth = 50,
+ before = function(entry, vim_item)
+ return vim_item
+ end,
+ menu = {
+ buffer = "[Buffer]",
+ nvim_lsp = "[LSP]",
+ luasnip = "[LuaSnip]",
+ nvim_lua = "[Lua]",
+ latex_symbols = "[Latex]",
+ },
+ },
+ },
+ },
+ config = function(_, opts)
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+ local lspkind = require("lspkind")
+ cmp.setup({
+ sources = opts.sources,
+ --experimental = { ghost_text = { hl_group = "Comment" } },
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+ formatting = { format = lspkind.cmp_format(opts.formatting.format) },
+ mapping = {
+ ["<C-p>"] = 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" }),
+ ["<C-n>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-l>"] = cmp.mapping(function(fallback)
+ if luasnip.choice_active() then
+ luasnip.change_choice(1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.close(),
+ ["<CR>"] = cmp.mapping.confirm({
+ behavior = cmp.ConfirmBehavior.Insert,
+ select = true, -- Automatically select first item on CR
+ }),
+ },
+ })
+ end,
+ dependencies = {
+ { "L3MON4D3/LuaSnip" },
+ { "hrsh7th/cmp-emoji" },
+ { "hrsh7th/cmp-nvim-lsp" },
+ { "hrsh7th/cmp-nvim-lsp-signature-help" },
+ { "hrsh7th/cmp-nvim-lua" },
+ { "hrsh7th/cmp-path" },
+ { "onsails/lspkind.nvim" },
+ { "saadparwaiz1/cmp_luasnip" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/config.lua b/public/nvim/.nvim/lua/plugins/lsp/config.lua
new file mode 100644
index 0000000..b579720
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/config.lua
@@ -0,0 +1,40 @@
+return {
+
+ {
+ "neovim/nvim-lspconfig",
+ event = { "BufReadPre", "BufNewFile" },
+ opts = { servers = {} },
+ config = function(_, opts)
+ local add_hook_after = require("lspconfig.util").add_hook_after
+ local on_attach = function(client, bufnr)
+ require("nvim-navic").attach(client, bufnr)
+ end
+
+ for lsp, lsp_opts in pairs(opts.servers) do
+ lsp_opts = lsp_opts or {}
+ if lsp_opts.on_attach ~= nil then
+ lsp_opts["on_attach"] = add_hook_after(on_attach, lsp_opts.on_attach)
+ end
+ lsp_opts["capabilities"] = require("cmp_nvim_lsp").default_capabilities(lsp_opts.capabilities or {})
+ require("lspconfig")[lsp].setup(lsp_opts)
+ end
+ end,
+ init = function()
+ vim.diagnostic.config({
+ float = {
+ source = "always",
+ format = function(diagnostic)
+ -- should work for any LSP, see: https://github.com/neovim/neovim/pull/17510
+ if diagnostic.code then
+ return string.format("(%s) %s", diagnostic.code, diagnostic.message)
+ end
+ return diagnostic.message
+ end,
+ },
+ })
+ end,
+ dependencies = {
+ { "SmiteshP/nvim-navic", opts = { highlight = true } },
+ },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua
new file mode 100644
index 0000000..5f71af7
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua
@@ -0,0 +1,5 @@
+return {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = { sources = {}, debug = false },
+ dependencies = { "nvim-lua/plenary.nvim" },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/trouble.lua b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua
new file mode 100644
index 0000000..207edb5
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua
@@ -0,0 +1,9 @@
+return {
+ {
+ "folke/trouble.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("trouble").setup({})
+ end,
+ },
+}
diff --git a/public/nvim/.nvim/lua/snippets/lua.lua b/public/nvim/.nvim/lua/snippets/lua.lua
new file mode 100644
index 0000000..dbec22a
--- /dev/null
+++ b/public/nvim/.nvim/lua/snippets/lua.lua
@@ -0,0 +1,3 @@
+return {
+ s("ignore", t("-- foo $0")),
+}
diff --git a/public/nvim/.nvim/lua/snippets/sh/bash-find.lua b/public/nvim/.nvim/lua/snippets/sh/bash-find.lua
new file mode 100644
index 0000000..be56beb
--- /dev/null
+++ b/public/nvim/.nvim/lua/snippets/sh/bash-find.lua
@@ -0,0 +1,32 @@
+local is_bash = function()
+ local shebang = vim.api.nvim_buf_get_lines(0, 0, 1, true) or {}
+ if shebang[1] and string.find(shebang[1], "bash") then
+ return true
+ end
+ return false
+end
+
+return {
+ s(
+ { trig = "find-xargs", dscr = "" },
+ fmt( -- The snippet code actually looks like the equation environment it produces.
+ [[
+ find <> \
+ -type <> \
+ -name '*.<>' \
+ -print0 | xargs -0 -r -P 0 <>
+ ]],
+ {
+ i(1, "."), -- search directory
+ c(2, { t("f"), t("d") }), -- file or directory
+ i(3, "ext"), -- file extension
+ i(4, "echo"), -- xaargs command
+ },
+ { delimiters = "<>" }
+ ),
+ {
+ show_condition = is_bash,
+ condition = is_bash,
+ }
+ ),
+}
diff --git a/public/nvim/.nvim/lua/snippets/sh/bash-misc.lua b/public/nvim/.nvim/lua/snippets/sh/bash-misc.lua
new file mode 100644
index 0000000..f3a11eb
--- /dev/null
+++ b/public/nvim/.nvim/lua/snippets/sh/bash-misc.lua
@@ -0,0 +1,16 @@
+return {
+ s({
+ trig = "no-source",
+ dscr = "Exit with an error if script is being sourced",
+ }, {
+ t({
+ 'if [[ "${0}" != "${BASH_SOURCE[0]}" ]]; then',
+ '\techo "Error: script ${BASH_SOURCE[0]} is not supported to be sourced!"',
+ "\treturn 1",
+ "fi",
+ }),
+ }),
+}
+
+
+
diff --git a/public/nvim/.nvim/neovim.yaml b/public/nvim/.nvim/neovim.yaml
new file mode 100644
index 0000000..76f9b9e
--- /dev/null
+++ b/public/nvim/.nvim/neovim.yaml
@@ -0,0 +1,24 @@
+---
+base: lua51
+globals:
+ vim:
+ any: true
+ assert:
+ args:
+ - type: bool
+ - type: string
+ required: false
+ after_each:
+ args:
+ - type: function
+ before_each:
+ args:
+ - type: function
+ describe:
+ args:
+ - type: string
+ - type: function
+ it:
+ args:
+ - type: string
+ - type: function
diff --git a/public/nvim/.nvim/plugin/qf-dd.vim b/public/nvim/.nvim/plugin/qf-dd.vim
new file mode 100644
index 0000000..385c0c7
--- /dev/null
+++ b/public/nvim/.nvim/plugin/qf-dd.vim
@@ -0,0 +1,30 @@
+" https://stackoverflow.com/questions/42905008/quickfix-list-how-to-add-and-remove-entries
+" When using `dd` in the quickfix list, remove the item from the quickfix list.
+function! RemoveQFItem(mode) range abort
+ let l:qf_list = getqflist()
+
+ " distinguish mode for getting delete index and delete count
+ if a:mode == 'v'
+ let l:del_qf_idx = getpos("'<")[1] - 1
+ let l:del_ct = getpos("'>")[1] - l:del_qf_idx
+ else
+ let l:del_qf_idx = line('.') - 1
+ let l:del_ct = v:count > 1 ? v:count : 1
+ endif
+
+ " delete lines and update quickfix
+ for item in range(l:del_ct)
+ call remove(l:qf_list, l:del_qf_idx)
+ endfor
+ call setqflist(l:qf_list, 'r')
+
+ if len(l:qf_list) > 0
+ execute l:del_qf_idx + 1 . 'cfirst'
+ copen
+ else
+ cclose
+ endif
+endfunction
+
+autocmd FileType qf nmap <buffer> dd :call RemoveQFItem('n')<cr>
+autocmd FileType qf vmap <buffer> dd :call RemoveQFItem('v')<cr>
diff --git a/public/nvim/.nvim/selene.toml b/public/nvim/.nvim/selene.toml
new file mode 100644
index 0000000..032dba6
--- /dev/null
+++ b/public/nvim/.nvim/selene.toml
@@ -0,0 +1 @@
+std = "neovim"
diff --git a/public/nvim/.nvim/spell/en.utf-8.add b/public/nvim/.nvim/spell/en.utf-8.add
new file mode 100644
index 0000000..274c5fc
--- /dev/null
+++ b/public/nvim/.nvim/spell/en.utf-8.add
@@ -0,0 +1,11 @@
+Linkerd
+CRD
+linkerd
+GKMS
+Grafana
+GCP
+KTE
+Prometheus
+KTEs
+multicluster
+LBs
diff --git a/public/nvim/.nvim/spell/en.utf-8.add.spl b/public/nvim/.nvim/spell/en.utf-8.add.spl
new file mode 100644
index 0000000..a77b56c
--- /dev/null
+++ b/public/nvim/.nvim/spell/en.utf-8.add.spl
Binary files differ