aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-03-02 19:09:29 -0600
committerToby Vincent <tobyv13@gmail.com>2022-03-02 19:09:29 -0600
commit6a36592700b75e3658584db672f09ee33b2ba840 (patch)
treedd908e0eadd96e168f2d723e4d778ee3e037b81b /nvim
parent10c8ca3c945a1bf7adffbb1dbac0789be85387e0 (diff)
feat: woof
Diffstat (limited to 'nvim')
-rw-r--r--nvim/ftplugin/json.vim5
-rw-r--r--nvim/init.vim193
-rw-r--r--nvim/lua/theprimeagen/debugger.lua19
-rw-r--r--nvim/lua/theprimeagen/git-worktree.lua29
-rw-r--r--nvim/lua/theprimeagen/harpoon.lua13
-rw-r--r--nvim/lua/theprimeagen/init.lua19
-rw-r--r--nvim/lua/theprimeagen/lsp.lua191
-rw-r--r--nvim/lua/theprimeagen/telescope.lua222
-rw-r--r--nvim/plugin/colors.vim33
-rw-r--r--nvim/plugin/git.vim8
-rw-r--r--nvim/plugin/harpoon.vim19
-rw-r--r--nvim/plugin/lsp.vim24
-rw-r--r--nvim/plugin/navigation.vim33
-rw-r--r--nvim/plugin/netrw.vim4
-rw-r--r--nvim/plugin/plenary.vim2
-rw-r--r--nvim/plugin/refactoring.vim9
-rw-r--r--nvim/plugin/sets.vim34
-rw-r--r--nvim/plugin/telescope.vim16
-rw-r--r--nvim/plugin/vimspector.vim12
19 files changed, 884 insertions, 1 deletions
diff --git a/nvim/ftplugin/json.vim b/nvim/ftplugin/json.vim
new file mode 100644
index 0000000..4533aea
--- /dev/null
+++ b/nvim/ftplugin/json.vim
@@ -0,0 +1,5 @@
+nnoremap <left> :lua require("jvim").to_parent()<CR>
+nnoremap <right> :lua require("jvim").descend()<CR>
+nnoremap <up> :lua require("jvim").prev_sibling()<CR>
+nnoremap <down> :lua require("jvim").next_sibling()<CR>
+
diff --git a/nvim/init.vim b/nvim/init.vim
index 7470c67..643814f 100644
--- a/nvim/init.vim
+++ b/nvim/init.vim
@@ -1 +1,192 @@
-set termguicolors
+" hello front end masters
+set path+=**
+
+" Nice menu when typing `:find *.py`
+set wildmode=longest,list,full
+set wildmenu
+" Ignore files
+set wildignore+=*.pyc
+set wildignore+=*_build/*
+set wildignore+=**/coverage/*
+set wildignore+=**/node_modules/*
+set wildignore+=**/android/*
+set wildignore+=**/ios/*
+set wildignore+=**/.git/*
+
+call plug#begin('~/.vim/plugged')
+
+" Yes, I am a sneaky snek now
+Plug 'ambv/black'
+
+" Plebvim lsp Plugins
+Plug 'neovim/nvim-lspconfig'
+Plug 'hrsh7th/cmp-nvim-lsp'
+Plug 'hrsh7th/cmp-buffer'
+Plug 'hrsh7th/nvim-cmp'
+Plug 'onsails/lspkind-nvim'
+Plug 'nvim-lua/lsp_extensions.nvim'
+
+" Plug 'nvim-lua/completion-nvim'
+Plug 'glepnir/lspsaga.nvim'
+Plug 'simrat39/symbols-outline.nvim'
+" Plug 'tjdevries/nlua.nvim'
+" Plug 'tjdevries/lsp_extensions.nvim'
+
+" Neovim Tree shitter
+Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
+Plug 'nvim-treesitter/playground'
+
+" Debugger Plugins
+Plug 'mfussenegger/nvim-dap'
+Plug 'Pocco81/DAPInstall.nvim'
+Plug 'szw/vim-maximizer'
+
+" Snippets
+Plug 'L3MON4D3/LuaSnip'
+Plug 'rafamadriz/friendly-snippets'
+
+Plug 'simrat39/rust-tools.nvim'
+Plug 'darrikonn/vim-gofmt'
+Plug 'tpope/vim-fugitive'
+Plug 'tpope/vim-rhubarb'
+Plug 'junegunn/gv.vim'
+Plug 'vim-utils/vim-man'
+Plug 'mbbill/undotree'
+Plug 'tpope/vim-dispatch'
+Plug 'gruvbox-community/gruvbox'
+Plug 'luisiacc/gruvbox-baby'
+Plug 'tpope/vim-projectionist'
+Plug 'tomlion/vim-solidity'
+
+
+" telescope requirements...
+Plug 'nvim-lua/popup.nvim'
+Plug 'nvim-lua/plenary.nvim'
+Plug 'nvim-telescope/telescope.nvim'
+Plug 'nvim-telescope/telescope-fzy-native.nvim'
+
+Plug 'vim-conf-live/vimconflive2021-colorscheme'
+Plug 'flazz/vim-colorschemes'
+Plug 'chriskempson/base16-vim'
+
+" HARPOON!!
+Plug 'mhinz/vim-rfc'
+
+" prettier
+Plug 'sbdchd/neoformat'
+
+" ThePrimeagen plugins
+Plug 'theprimeagen/vim-be-good'
+Plug 'ThePrimeagen/harpoon'
+Plug 'ThePrimeagen/git-worktree.nvim'
+Plug 'ThePrimeagen/refactoring.nvim'
+Plug 'ThePrimeagen/jvim.nvim'
+
+" should I try another status bar???
+" Plug 'glepnir/galaxyline.nvim' , {'branch': 'main'}
+" Plug 'hoob3rt/lualine.nvim'
+
+call plug#end()
+
+" let g:vimspector_install_gadgets = [ 'debugpy', 'vscode-cpptools', 'CodeLLDB' ]
+
+lua require("theprimeagen")
+lua require'nvim-treesitter.configs'.setup { highlight = { enable = true }, incremental_selection = { enable = true }, textobjects = { enable = true }}
+let g:vim_be_good_log_file = 1
+let g:vim_apm_log = 1
+
+if executable('rg')
+ let g:rg_derive_root='true'
+endif
+
+let loaded_matchparen = 1
+let mapleader = " "
+
+imap <silent><expr> <Tab> luasnip#expand_or_jumpable() ? '<Plug>luasnip-expand-or-jump' : '<Tab>'
+inoremap <silent> <S-Tab> <cmd>lua require'luasnip'.jump(-1)<Cr>
+
+snoremap <silent> <Tab> <cmd>lua require('luasnip').jump(1)<Cr>
+snoremap <silent> <S-Tab> <cmd>lua require('luasnip').jump(-1)<Cr>
+
+imap <silent><expr> <C-E> luasnip#choice_active() ? '<Plug>luasnip-next-choice' : '<C-E>'
+smap <silent><expr> <C-E> luasnip#choice_active() ? '<Plug>luasnip-next-choice' : '<C-E>'
+
+nnoremap <silent> Q <nop>
+nnoremap <silent> <C-f> :silent !tmux neww tmux-sessionizer<CR>
+" Probably rename this, because its straight silly to be a worktree.
+nnoremap <leader>; :lua require("theprimeagen.git-worktree").execute(vim.loop.cwd(), "just-build")<CR>
+
+nnoremap <leader>vwh :h <C-R>=expand("<cword>")<CR><CR>
+nnoremap <leader>bs /<C-R>=escape(expand("<cWORD>"), "/")<CR><CR>
+nnoremap <leader>u :UndotreeShow<CR>
+nnoremap <leader>pv :Ex<CR>
+nnoremap <Leader><CR> :so ~/.config/nvim/init.vim<CR>
+nnoremap <Leader>+ :vertical resize +5<CR>
+nnoremap <Leader>- :vertical resize -5<CR>
+nnoremap <Leader>rp :resize 100<CR>
+nnoremap <Leader>ee oif err != nil {<CR>log.Fatalf("%+v\n", err)<CR>}<CR><esc>kkI<esc>
+nnoremap <Leader>cpu a%" PRIu64 "<esc>
+nnoremap <leader>s :%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>
+nnoremap <leader>gt <Plug>PlenaryTestFile
+nnoremap <leader>vwm :lua require("vim-with-me").init()<CR>
+nnoremap <leader>dwm :lua require("vim-with-me").disconnect()<CR>
+nnoremap <leader>gll :let g:_search_term = expand("%")<CR><bar>:Gclog -- %<CR>:call search(g:_search_term)<CR>
+nnoremap <leader>gln :cnext<CR>:call search(_search_term)<CR>
+nnoremap <leader>glp :cprev<CR>:call search(_search_term)<CR>
+nnoremap <leader>nf :!./scripts/format.py %
+
+nnoremap <leader>x :silent !chmod +x %<CR>
+
+vnoremap J :m '>+1<CR>gv=gv
+vnoremap K :m '<-2<CR>gv=gv
+
+nnoremap Y yg$
+nnoremap n nzzzv
+nnoremap N Nzzzv
+nnoremap J mzJ`z
+
+" greatest remap ever
+xnoremap <leader>p "_dP
+
+" next greatest remap ever : asbjornHaland
+nnoremap <leader>y "+y
+vnoremap <leader>y "+y
+nmap <leader>Y "+Y
+
+nnoremap <leader>d "_d
+vnoremap <leader>d "_d
+
+" vim TODO
+nmap <Leader>tu <Plug>BujoChecknormal
+nmap <Leader>th <Plug>BujoAddnormal
+let g:bujo#todo_file_path = $HOME . "/.cache/bujo"
+
+nnoremap <Leader>ww ofunction wait(ms: number): Promise<void> {<CR>return new Promise(res => setTimeout(res, ms));<CR>}<esc>k=i{<CR>
+
+inoremap <C-c> <esc>
+
+fun! EmptyRegisters()
+ let regs=split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"', '\zs')
+ for r in regs
+ call setreg(r, [])
+ endfor
+endfun
+
+" ES
+com! W w
+
+nmap <leader>nn :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
+\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
+\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
+
+augroup highlight_yank
+ autocmd!
+ autocmd TextYankPost * silent! lua require'vim.highlight'.on_yank({timeout = 40})
+augroup END
+
+augroup THE_PRIMEAGEN
+ autocmd!
+ autocmd BufWritePre *.lua Neoformat
+ autocmd BufWritePre * %s/\s\+$//e
+ autocmd BufEnter,BufWinEnter,TabEnter *.rs :lua require'lsp_extensions'.inlay_hints{}
+augroup END
diff --git a/nvim/lua/theprimeagen/debugger.lua b/nvim/lua/theprimeagen/debugger.lua
new file mode 100644
index 0000000..c935273
--- /dev/null
+++ b/nvim/lua/theprimeagen/debugger.lua
@@ -0,0 +1,19 @@
+local dap_install = require("dap-install")
+dap_install.config("chrome", {})
+
+
+local dap = require("dap");
+dap.configurations.typescriptreact = { -- change to typescript if needed
+ {
+ type = "chrome",
+ request = "attach",
+ program = "${file}",
+ cwd = vim.fn.getcwd(),
+ sourceMaps = true,
+ protocol = "inspector",
+ port = 9222,
+ webRoot = "${workspaceFolder}"
+ }
+}
+
+require('dap.ext.vscode').load_launchjs()
diff --git a/nvim/lua/theprimeagen/git-worktree.lua b/nvim/lua/theprimeagen/git-worktree.lua
new file mode 100644
index 0000000..7c3bce9
--- /dev/null
+++ b/nvim/lua/theprimeagen/git-worktree.lua
@@ -0,0 +1,29 @@
+local Worktree = require("git-worktree")
+
+local function is_nrdp(path)
+ local found = path:find(vim.env["NRDP"])
+ return type(found) == "number" and found > 0
+end
+
+local function is_tvui(path)
+ local found = path:find(vim.env["TVUI"])
+ return type(found) == "number" and found > 0
+end
+
+local M = {}
+function M.execute(path, just_build)
+ if is_nrdp(path) then
+ local command = string.format(":silent !tmux-nrdp tmux %s %s", path, just_build)
+ vim.cmd(command)
+ elseif is_tvui(path) then
+ print("EXECUTE ", path)
+ local command = string.format(":!tmux-tvui %s", path)
+ vim.cmd(command)
+ end
+end
+
+Worktree.on_tree_change(function(_ --[[op]], path, _ --[[upstream]])
+ M.execute(path.path)
+end)
+
+return M
diff --git a/nvim/lua/theprimeagen/harpoon.lua b/nvim/lua/theprimeagen/harpoon.lua
new file mode 100644
index 0000000..4f1543e
--- /dev/null
+++ b/nvim/lua/theprimeagen/harpoon.lua
@@ -0,0 +1,13 @@
+require("harpoon").setup({
+ nav_first_in_list = true,
+ projects = {
+ ["/home/theprimeagen/work/nrdp/backport-2"] = {
+ term = {
+ cmds = {
+ "ninja -C /home/theprimeagen/work/nrdp/builds/backport-2 -j 25 && cp compile_commands.json /home/theprimeagen/work/nrdp/backport-2\n",
+ }
+ }
+ }
+ }
+})
+
diff --git a/nvim/lua/theprimeagen/init.lua b/nvim/lua/theprimeagen/init.lua
new file mode 100644
index 0000000..5db4e28
--- /dev/null
+++ b/nvim/lua/theprimeagen/init.lua
@@ -0,0 +1,19 @@
+require("theprimeagen.telescope")
+require("theprimeagen.git-worktree")
+require("theprimeagen.debugger")
+require("theprimeagen.harpoon")
+require("theprimeagen.lsp")
+
+P = function(v)
+ print(vim.inspect(v))
+ return v
+end
+
+if pcall(require, "plenary") then
+ RELOAD = require("plenary.reload").reload_module
+
+ R = function(name)
+ RELOAD(name)
+ return require(name)
+ end
+end
diff --git a/nvim/lua/theprimeagen/lsp.lua b/nvim/lua/theprimeagen/lsp.lua
new file mode 100644
index 0000000..3911c72
--- /dev/null
+++ b/nvim/lua/theprimeagen/lsp.lua
@@ -0,0 +1,191 @@
+local sumneko_root_path = "/home/mpaulson/personal/lua-language-server"
+local sumneko_binary = sumneko_root_path .. "/bin/lua-language-server"
+
+local capabilities = vim.lsp.protocol.make_client_capabilities()
+capabilities.textDocument.completion.completionItem.snippetSupport = true
+
+-- Setup nvim-cmp.
+local cmp = require("cmp")
+local source_mapping = {
+ buffer = "[Buffer]",
+ nvim_lsp = "[LSP]",
+ nvim_lua = "[Lua]",
+ path = "[Path]"
+}
+local lspkind = require("lspkind")
+require("lspkind").init({
+ mode = 'Text'
+})
+
+cmp.setup({
+ snippet = {
+ expand = function(args)
+ -- For `vsnip` user.
+ -- vim.fn["vsnip#anonymous"](args.body)
+
+ -- For `luasnip` user.
+ require("luasnip").lsp_expand(args.body)
+
+ -- For `ultisnips` user.
+ -- vim.fn["UltiSnips#Anon"](args.body)
+ end
+ },
+ mapping = {
+ ["<C-u>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-d>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete()
+ },
+
+ formatting = {
+ format = function(entry, vim_item)
+ vim_item.kind = lspkind.presets.default[vim_item.kind]
+ local menu = source_mapping[entry.source.name]
+ vim_item.menu = menu
+ return vim_item
+ end
+ },
+
+ sources = {{
+ name = "nvim_lsp"
+ }, -- For vsnip user.
+ -- { name = 'vsnip' },
+ -- For luasnip user.
+ {
+ name = "luasnip"
+ }, -- For ultisnips user.
+ -- { name = 'ultisnips' },
+ {
+ name = "buffer"
+ }}
+})
+
+local function config(_config)
+ return vim.tbl_deep_extend("force", {
+ capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities())
+ }, _config or {})
+end
+
+require("lspconfig").tsserver.setup(config())
+
+--[[ I cannot seem to get this woring on new computer..
+require("lspconfig").clangd.setup(config({
+ cmd = { "clangd", "--background-index", "--log=verbose" },
+ root_dir = function()
+ print("clangd-Rootdir", vim.loop.cwd())
+ return vim.loop.cwd()
+ end,
+}))
+--]]
+require("lspconfig").ccls.setup(config())
+
+require("lspconfig").jedi_language_server.setup(config())
+
+require("lspconfig").svelte.setup(config())
+
+require("lspconfig").solang.setup(config())
+
+require("lspconfig").cssls.setup(config())
+
+require("lspconfig").gopls.setup(config({
+ cmd = {"gopls", "serve"},
+ settings = {
+ gopls = {
+ analyses = {
+ unusedparams = true
+ },
+ staticcheck = true
+ }
+ }
+}))
+
+require('rust-tools').setup(config({
+ tools = {
+ autoSetHints = true,
+ hover_with_actions = true,
+ runnables = {
+ use_telescope = true
+ },
+ inlay_hints = {
+ show_parameter_hints = false,
+ parameter_hints_prefix = "",
+ other_hints_prefix = ""
+ }
+ },
+
+ -- all the opts to send to nvim-lspconfig
+ -- these override the defaults set by rust-tools.nvim
+ -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
+ server = {
+ -- on_attach is a callback called when the language server attachs to the buffer
+ -- on_attach = on_attach,
+ settings = {
+ -- to enable rust-analyzer settings visit:
+ -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc
+ ["rust-analyzer"] = {
+ -- enable clippy on save
+ checkOnSave = {
+ command = "clippy"
+ }
+ }
+ }
+ }
+}))
+
+require("lspconfig").sumneko_lua.setup(config({
+ cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"},
+ settings = {
+ Lua = {
+ runtime = {
+ -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
+ version = "LuaJIT",
+ -- Setup your lua path
+ path = vim.split(package.path, ";")
+ },
+ diagnostics = {
+ -- Get the language server to recognize the `vim` global
+ globals = {"vim"}
+ },
+ workspace = {
+ -- Make the server aware of Neovim runtime files
+ library = {
+ [vim.fn.expand("$VIMRUNTIME/lua")] = true,
+ [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true
+ }
+ }
+ }
+ }
+}))
+
+local opts = {
+ -- whether to highlight the currently hovered symbol
+ -- disable if your cpu usage is higher than you want it
+ -- or you just hate the highlight
+ -- default: true
+ highlight_hovered_item = true,
+
+ -- whether to show outline guides
+ -- default: true
+ show_guides = true
+}
+
+require("symbols-outline").setup(opts)
+
+local snippets_paths = function()
+ local plugins = {"friendly-snippets"}
+ local paths = {}
+ local path
+ local root_path = vim.env.HOME .. "/.vim/plugged/"
+ for _, plug in ipairs(plugins) do
+ path = root_path .. plug
+ if vim.fn.isdirectory(path) ~= 0 then
+ table.insert(paths, path)
+ end
+ end
+ return paths
+end
+
+require("luasnip.loaders.from_vscode").lazy_load({
+ paths = snippets_paths(),
+ include = nil, -- Load all languages
+ exclude = {}
+})
diff --git a/nvim/lua/theprimeagen/telescope.lua b/nvim/lua/theprimeagen/telescope.lua
new file mode 100644
index 0000000..2be6bbb
--- /dev/null
+++ b/nvim/lua/theprimeagen/telescope.lua
@@ -0,0 +1,222 @@
+local pickers = require("telescope.pickers")
+local finders = require("telescope.finders")
+local previewers = require("telescope.previewers")
+local action_state = require("telescope.actions.state")
+local conf = require("telescope.config").values
+local actions = require("telescope.actions")
+
+require("telescope").setup({
+ defaults = {
+ file_sorter = require("telescope.sorters").get_fzy_sorter,
+ prompt_prefix = " >",
+ color_devicons = true,
+
+ 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,
+
+ mappings = {
+ i = {
+ ["<C-x>"] = false,
+ ["<C-q>"] = actions.send_to_qflist,
+ },
+ },
+ },
+ extensions = {
+ fzy_native = {
+ override_generic_sorter = false,
+ override_file_sorter = true,
+ },
+ },
+})
+
+require("telescope").load_extension("git_worktree")
+require("telescope").load_extension("fzy_native")
+
+local M = {}
+
+function M.reload_modules()
+ -- Because TJ gave it to me. Makes me happpy. Put it next to his other
+ -- awesome things.
+ local lua_dirs = vim.fn.glob("./lua/*", 0, 1)
+ for _, dir in ipairs(lua_dirs) do
+ dir = string.gsub(dir, "./lua/", "")
+ require("plenary.reload").reload_module(dir)
+ end
+end
+
+M.search_dotfiles = function()
+ require("telescope.builtin").find_files({
+ prompt_title = "< VimRC >",
+ cwd = vim.env.DOTFILES,
+ hidden = true,
+ })
+end
+
+local function set_background(content)
+ vim.fn.system("dconf write /org/mate/desktop/background/picture-filename \"'" .. content .. "'\"")
+end
+
+local function select_background(prompt_bufnr, map)
+ local function set_the_background(close)
+ local content = require("telescope.actions.state").get_selected_entry(prompt_bufnr)
+ set_background(content.cwd .. "/" .. content.value)
+ if close then
+ require("telescope.actions").close(prompt_bufnr)
+ end
+ end
+
+ map("i", "<C-p>", function()
+ set_the_background()
+ end)
+
+ map("i", "<CR>", function()
+ set_the_background(true)
+ end)
+end
+
+local function image_selector(prompt, cwd)
+ return function()
+ require("telescope.builtin").find_files({
+ prompt_title = prompt,
+ cwd = cwd,
+
+ attach_mappings = function(prompt_bufnr, map)
+ select_background(prompt_bufnr, map)
+
+ -- Please continue mapping (attaching additional key maps):
+ -- Ctrl+n/p to move up and down the list.
+ return true
+ end,
+ })
+ end
+end
+
+M.anime_selector = image_selector("< Anime Bobs > ", "~/personal/anime")
+
+local function refactor(prompt_bufnr)
+ local content = require("telescope.actions.state").get_selected_entry(prompt_bufnr)
+ require("telescope.actions").close(prompt_bufnr)
+ require("refactoring").refactor(content.value)
+end
+
+M.refactors = function()
+ require("telescope.pickers").new({}, {
+ prompt_title = "refactors",
+ finder = require("telescope.finders").new_table({
+ results = require("refactoring").get_refactors(),
+ }),
+ sorter = require("telescope.config").values.generic_sorter({}),
+ attach_mappings = function(_, map)
+ map("i", "<CR>", refactor)
+ map("n", "<CR>", refactor)
+ return true
+ end,
+ }):find()
+end
+
+M.git_branches = function()
+ require("telescope.builtin").git_branches({
+ attach_mappings = function(_, map)
+ map("i", "<c-d>", actions.git_delete_branch)
+ map("n", "<c-d>", actions.git_delete_branch)
+ return true
+ end,
+ })
+end
+
+M.dev = function(opts)
+ opts = opts or {}
+
+ opts.cwd = opts.cwd or vim.loop.fs_realpath(vim.loop.cwd())
+ print("HEY BAE", opts.cwd)
+
+ local possible_files = vim.api.nvim_get_runtime_file("/lua/**/dev.lua", true)
+ local local_files = {}
+ for _, raw_f in ipairs(possible_files) do
+ local real_f = vim.loop.fs_realpath(raw_f)
+
+ if string.find(real_f, opts.cwd, 1, true) then
+ table.insert(local_files, real_f)
+ end
+ end
+
+ local dev = local_files[1]
+ local loaded = loadfile(dev)
+ local ok, mod = pcall(loaded)
+ if not ok then
+ print("===================================================")
+ print("HEY PRIME. YOUR CODE DOESNT WORK. THIS IS NOT ON ME")
+ print("===================================================")
+ return
+ end
+
+ -- P(mod)
+ local objs = {}
+ for k, v in pairs(mod) do
+ local debug_info = debug.getinfo(v)
+ table.insert(objs, {
+ filename = string.sub(debug_info.source, 2),
+ text = k,
+ })
+ end
+
+ local mod_name = vim.split(dev, "/lua/")
+ if #mod_name ~= 2 then
+ print("===================================================")
+ print("HEY PRIME. I DO NOT KNOW HOW TO FIND THIS FILE:")
+ print(dev)
+ print("===================================================")
+ end
+ mod_name = string.gsub(mod_name[2], ".lua$", "")
+ mod_name = string.gsub(mod_name, "/", ".")
+
+ pickers.new({
+ finder = finders.new_table({
+ results = objs,
+ entry_maker = function(entry)
+ return {
+ value = entry,
+ text = entry.text,
+ display = entry.text,
+ ordinal = entry.text,
+ filename = entry.filename,
+ }
+ end,
+ }),
+ sorter = conf.generic_sorter(opts),
+ previewer = previewers.builtin.new(opts),
+ attach_mappings = function(_, map)
+ actions.select_default:replace(function(...)
+ -- print("SELECTED", vim.inspect(action_state.get_selected_entry()))
+ local entry = action_state.get_selected_entry()
+ actions.close(...)
+
+ mod[entry.value.text]()
+ end)
+
+ map("i", "<tab>", function(...)
+ local entry = action_state.get_selected_entry()
+ actions.close(...)
+
+ vim.schedule(function()
+ -- vim.cmd(string.format([[normal!]], entry.value.text))
+ vim.api.nvim_feedkeys(
+ vim.api.nvim_replace_termcodes(
+ string.format("<esc>:lua require('%s').%s()", mod_name, entry.value.text),
+ true,
+ false,
+ true
+ ),
+ "n",
+ true
+ )
+ end)
+ end)
+
+ return true
+ end,
+ }):find()
+end
+
+return M
diff --git a/nvim/plugin/colors.vim b/nvim/plugin/colors.vim
new file mode 100644
index 0000000..d200e2a
--- /dev/null
+++ b/nvim/plugin/colors.vim
@@ -0,0 +1,33 @@
+let g:theprimeagen_colorscheme = "gruvbox"
+fun! ColorMyPencils()
+ let g:gruvbox_contrast_dark = 'hard'
+ if exists('+termguicolors')
+ let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
+ let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
+ endif
+ let g:gruvbox_invert_selection='0'
+
+ set background=dark
+ if has('nvim')
+ call luaeval('vim.cmd("colorscheme " .. _A[1])', [g:theprimeagen_colorscheme])
+ else
+ " TODO: What the way to use g:theprimeagen_colorscheme
+ colorscheme gruvbox
+ endif
+
+ highlight ColorColumn ctermbg=0 guibg=grey
+ hi SignColumn guibg=none
+ hi CursorLineNR guibg=None
+ highlight Normal guibg=none
+ " highlight LineNr guifg=#ff8659
+ " highlight LineNr guifg=#aed75f
+ highlight LineNr guifg=#5eacd3
+ highlight netrwDir guifg=#5eacd3
+ highlight qfFileName guifg=#aed75f
+ hi TelescopeBorder guifg=#5eacd
+endfun
+call ColorMyPencils()
+
+" Vim with me
+nnoremap <leader>cmp :call ColorMyPencils()<CR>
+nnoremap <leader>vwb :let g:theprimeagen_colorscheme =
diff --git a/nvim/plugin/git.vim b/nvim/plugin/git.vim
new file mode 100644
index 0000000..11c26dd
--- /dev/null
+++ b/nvim/plugin/git.vim
@@ -0,0 +1,8 @@
+nnoremap <leader>ga :Git fetch --all<CR>
+nnoremap <leader>grum :Git rebase upstream/master<CR>
+nnoremap <leader>grom :Git rebase origin/master<CR>
+
+nmap <leader>gh :diffget //3<CR>
+nmap <leader>gu :diffget //2<CR>
+nmap <leader>gs :G<CR>
+
diff --git a/nvim/plugin/harpoon.vim b/nvim/plugin/harpoon.vim
new file mode 100644
index 0000000..46c3a31
--- /dev/null
+++ b/nvim/plugin/harpoon.vim
@@ -0,0 +1,19 @@
+lua require("theprimeagen")
+
+" Terminal commands
+" ueoa is first through fourth finger left hand home row.
+" This just means I can crush, with opposite hand, the 4 terminal positions
+"
+" These functions are stored in harpoon. A plugn that I am developing
+nnoremap <silent><leader>a :lua require("harpoon.mark").add_file()<CR>
+nnoremap <silent><C-e> :lua require("harpoon.ui").toggle_quick_menu()<CR>
+nnoremap <silent><leader>tc :lua require("harpoon.cmd-ui").toggle_quick_menu()<CR>
+
+nnoremap <silent><C-h> :lua require("harpoon.ui").nav_file(1)<CR>
+nnoremap <silent><C-t> :lua require("harpoon.ui").nav_file(2)<CR>
+nnoremap <silent><C-n> :lua require("harpoon.ui").nav_file(3)<CR>
+nnoremap <silent><C-s> :lua require("harpoon.ui").nav_file(4)<CR>
+nnoremap <silent><leader>tu :lua require("harpoon.term").gotoTerminal(1)<CR>
+nnoremap <silent><leader>te :lua require("harpoon.term").gotoTerminal(2)<CR>
+nnoremap <silent><leader>cu :lua require("harpoon.term").sendCommand(1, 1)<CR>
+nnoremap <silent><leader>ce :lua require("harpoon.term").sendCommand(1, 2)<CR>
diff --git a/nvim/plugin/lsp.vim b/nvim/plugin/lsp.vim
new file mode 100644
index 0000000..2d4672d
--- /dev/null
+++ b/nvim/plugin/lsp.vim
@@ -0,0 +1,24 @@
+" Do this in lua?? maybe...
+" vim.o is short for something teej thinks makes sense.
+set completeopt=menu,menuone,noselect
+let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy']
+
+fun! LspLocationList()
+ " lua vim.lsp.diagnostic.set_loclist({open_loclist = false})
+endfun
+
+nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR>
+nnoremap <leader>vi :lua vim.lsp.buf.implementation()<CR>
+nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
+nnoremap <leader>vrr :lua vim.lsp.buf.references()<CR>
+nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
+nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
+nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
+nnoremap <leader>vsd :lua vim.lsp.diagnostic.show_line_diagnostics(); vim.lsp.util.show_line_diagnostics()<CR>
+nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR>
+nnoremap <leader>vll :call LspLocationList()<CR>
+
+augroup THE_PRIMEAGEN_LSP
+ autocmd!
+ autocmd! BufWrite,BufEnter,InsertLeave * :call LspLocationList()
+augroup END
diff --git a/nvim/plugin/navigation.vim b/nvim/plugin/navigation.vim
new file mode 100644
index 0000000..4db3e4c
--- /dev/null
+++ b/nvim/plugin/navigation.vim
@@ -0,0 +1,33 @@
+nnoremap <C-Left> :call AfPPAlternatePluthPluth()<CR>
+nnoremap <C-Up> :call AfPPAlternate()<CR>
+inoremap <C-Left> <esc>:call AfPPAlternatePluthPluth()<CR>
+inoremap <C-Up> <esc>:call AfPPAlternate()<CR>
+nnoremap <C-k> :cnext<CR>zz
+nnoremap <C-j> :cprev<CR>zz
+nnoremap <leader>k :lnext<CR>zz
+nnoremap <leader>j :lprev<CR>zz
+nnoremap <C-q> :call ToggleQFList(1)<CR>
+nnoremap <leader>q :call ToggleQFList(0)<CR>
+
+let g:the_primeagen_qf_l = 0
+let g:the_primeagen_qf_g = 0
+
+fun! ToggleQFList(global)
+ if a:global
+ if g:the_primeagen_qf_g == 1
+ let g:the_primeagen_qf_g = 0
+ cclose
+ else
+ let g:the_primeagen_qf_g = 1
+ copen
+ end
+ else
+ if g:the_primeagen_qf_l == 1
+ let g:the_primeagen_qf_l = 0
+ lclose
+ else
+ let g:the_primeagen_qf_l = 1
+ lopen
+ end
+ endif
+endfun
diff --git a/nvim/plugin/netrw.vim b/nvim/plugin/netrw.vim
new file mode 100644
index 0000000..7988327
--- /dev/null
+++ b/nvim/plugin/netrw.vim
@@ -0,0 +1,4 @@
+let g:netrw_browse_split = 0
+let g:netrw_banner = 0
+let g:netrw_winsize = 25
+
diff --git a/nvim/plugin/plenary.vim b/nvim/plugin/plenary.vim
new file mode 100644
index 0000000..c282c9a
--- /dev/null
+++ b/nvim/plugin/plenary.vim
@@ -0,0 +1,2 @@
+nmap <leader>tt <Plug>PlenaryTestFile
+
diff --git a/nvim/plugin/refactoring.vim b/nvim/plugin/refactoring.vim
new file mode 100644
index 0000000..78f3756
--- /dev/null
+++ b/nvim/plugin/refactoring.vim
@@ -0,0 +1,9 @@
+lua require("theprimeagen")
+
+lua require("refactoring").setup({})
+
+vnoremap <silent> <leader>rr :lua require("theprimeagen.telescope").refactors()<CR>
+nnoremap <silent> <leader>rr :lua require("theprimeagen.telescope").refactors()<CR>
+nnoremap <silent> <leader>df :lua require("refactoring").debug.printf({below = false})<CR>
+nnoremap <silent> <leader>db :lua require("refactoring").debug.printf({below = true})<CR>
+
diff --git a/nvim/plugin/sets.vim b/nvim/plugin/sets.vim
new file mode 100644
index 0000000..b691eb2
--- /dev/null
+++ b/nvim/plugin/sets.vim
@@ -0,0 +1,34 @@
+set guicursor=
+set relativenumber
+set nohlsearch
+set hidden
+set noerrorbells
+set tabstop=4 softtabstop=4
+set shiftwidth=4
+set expandtab
+set smartindent
+set nu
+set nowrap
+set noswapfile
+set nobackup
+set undodir=~/.vim/undodir
+set undofile
+set incsearch
+set termguicolors
+set scrolloff=8
+" set noshowmode
+set signcolumn=yes
+set isfname+=@-@
+" set ls=0
+
+" Give more space for displaying messages.
+set cmdheight=1
+
+" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
+" delays and poor user experience.
+set updatetime=50
+
+" Don't pass messages to |ins-completion-menu|.
+set shortmess+=c
+
+set colorcolumn=80
diff --git a/nvim/plugin/telescope.vim b/nvim/plugin/telescope.vim
new file mode 100644
index 0000000..fdd9603
--- /dev/null
+++ b/nvim/plugin/telescope.vim
@@ -0,0 +1,16 @@
+lua require("theprimeagen")
+
+nnoremap <leader>ps :lua require('telescope.builtin').grep_string({ search = vim.fn.input("Grep For > ")})<CR>
+nnoremap <C-p> :lua require('telescope.builtin').git_files()<CR>
+nnoremap <Leader>pf :lua require('telescope.builtin').find_files()<CR>
+
+nnoremap <leader>pw :lua require('telescope.builtin').grep_string { search = vim.fn.expand("<cword>") }<CR>
+nnoremap <leader>pb :lua require('telescope.builtin').buffers()<CR>
+nnoremap <leader>vh :lua require('telescope.builtin').help_tags()<CR>
+nnoremap <leader>vrc :lua require('theprimeagen.telescope').search_dotfiles({ hidden = true })<CR>
+nnoremap <leader>va :lua require('theprimeagen.telescope').anime_selector()<CR>
+nnoremap <leader>vc :lua require('theprimeagen.telescope').chat_selector()<CR>
+nnoremap <leader>gc :lua require('theprimeagen.telescope').git_branches()<CR>
+nnoremap <leader>gw :lua require('telescope').extensions.git_worktree.git_worktrees()<CR>
+nnoremap <leader>gm :lua require('telescope').extensions.git_worktree.create_git_worktree()<CR>
+nnoremap <leader>td :lua require('theprimeagen.telescope').dev()<CR>
diff --git a/nvim/plugin/vimspector.vim b/nvim/plugin/vimspector.vim
new file mode 100644
index 0000000..deba533
--- /dev/null
+++ b/nvim/plugin/vimspector.vim
@@ -0,0 +1,12 @@
+fun! GotoWindow(id)
+ call win_gotoid(a:id)
+ MaximizerToggle
+endfun
+
+" Debugger remaps
+nnoremap <leader>m :MaximizerToggle!<CR>
+
+" <Plug>VimspectorStop
+" <Plug>VimspectorPause
+" <Plug>VimspectorAddFunctionBreakpoint
+