diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-03-02 19:09:29 -0600 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-03-02 19:09:29 -0600 |
commit | 6a36592700b75e3658584db672f09ee33b2ba840 (patch) | |
tree | dd908e0eadd96e168f2d723e4d778ee3e037b81b /nvim | |
parent | 10c8ca3c945a1bf7adffbb1dbac0789be85387e0 (diff) |
feat: woof
Diffstat (limited to 'nvim')
-rw-r--r-- | nvim/ftplugin/json.vim | 5 | ||||
-rw-r--r-- | nvim/init.vim | 193 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/debugger.lua | 19 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/git-worktree.lua | 29 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/harpoon.lua | 13 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/init.lua | 19 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/lsp.lua | 191 | ||||
-rw-r--r-- | nvim/lua/theprimeagen/telescope.lua | 222 | ||||
-rw-r--r-- | nvim/plugin/colors.vim | 33 | ||||
-rw-r--r-- | nvim/plugin/git.vim | 8 | ||||
-rw-r--r-- | nvim/plugin/harpoon.vim | 19 | ||||
-rw-r--r-- | nvim/plugin/lsp.vim | 24 | ||||
-rw-r--r-- | nvim/plugin/navigation.vim | 33 | ||||
-rw-r--r-- | nvim/plugin/netrw.vim | 4 | ||||
-rw-r--r-- | nvim/plugin/plenary.vim | 2 | ||||
-rw-r--r-- | nvim/plugin/refactoring.vim | 9 | ||||
-rw-r--r-- | nvim/plugin/sets.vim | 34 | ||||
-rw-r--r-- | nvim/plugin/telescope.vim | 16 | ||||
-rw-r--r-- | nvim/plugin/vimspector.vim | 12 |
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 + |