You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
12 KiB
269 lines
12 KiB
--------------------------------------------------------------------------------
|
|
-- Development
|
|
--------------------------------------------------------------------------------
|
|
-- Tools for supporting development, excluding language-specific which should
|
|
-- go in `lang-<language>.lua`.
|
|
--
|
|
|
|
return {
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Debugging
|
|
--------------------------------------------------------------------------------
|
|
|
|
{
|
|
name = 'vim-vdebug/vdebug',
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd' }, group = true, label = 'debugger' },
|
|
{ mode = 'v', key = { '<leader>', 'd', 'd' }, group = true, label = 'debugger' },
|
|
{ mode = 'n', key = { '<F5>' }, virtual = true, label = 'start debugger' },
|
|
{ mode = 'n', key = { '<F10>' }, virtual = true, label = 'set breakpoint' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd', 'b' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):setBreakpoint()<CR>', label = 'toggle breakpoint' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd', 'c' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):setConditionalBreakpoint()<CR>', label = 'conditional breakpoint' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd', 't' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):startTrace()<CR>', label = 'trace expression' },
|
|
{ mode = 'v', key = { '<leader>', 'd', 'd', 't' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):startTrace()<CR>', label = 'trace expression' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd', 'e' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):eval()<CR>', label = 'eval code' },
|
|
{ mode = 'v', key = { '<leader>', 'd', 'd', 'e' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):eval()<CR>', label = 'eval code' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'd', 'w' }, map = ':lua nukevim.modules:get("vim-vdebug/vdebug"):showBreakpoints()<CR>', label = 'show breakpoints' },
|
|
}
|
|
},
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Editing
|
|
--------------------------------------------------------------------------------
|
|
-- Things that make the actual typing experience better.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- .editorconfig
|
|
--
|
|
-- Load and respect the .editorconfig file in projects
|
|
--
|
|
{ name = 'editorconfig/editorconfig-vim' },
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Intellisense
|
|
--------------------------------------------------------------------------------
|
|
-- Things that provide code insights and completion.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Code completion provider
|
|
--
|
|
-- Provides completions for a whole bunch of stuff, managed separately through
|
|
-- the coc package.json
|
|
--
|
|
{
|
|
name = 'neoclide/coc.nvim',
|
|
-- Only enable this plugin if npm is installed
|
|
requires = { 'npm' },
|
|
config = {
|
|
branch = 'master',
|
|
['do'] = 'npm install'
|
|
},
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'c', 'r' }, map = ":call CocAction('jumpReferences')<CR>", label = "references" },
|
|
}
|
|
},
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Code tag sidebar
|
|
--
|
|
-- Provides a UI for browsing code "tags" (classes, functions, etc) in the
|
|
-- currently open file.
|
|
--
|
|
{
|
|
name = 'preservim/tagbar',
|
|
requires = { 'ctags' },
|
|
config = { ['on'] = { 'TagbarToggle', 'TagbarOpen', 'TagbarOpenAutoClose' } },
|
|
-- keys = {
|
|
-- { mode = 'n', key = { '<leader>', 't' }, map = ':TagbarOpenAutoClose<CR>', label = 'Show File Structure' }
|
|
-- }
|
|
keys = {
|
|
{ mode = 'n', key = { '<A-;>' }, map = ':TagbarOpenAutoClose<CR>', label = 'show tagbar' },
|
|
{ mode = 'i', key = { '<A-;>' }, map = '<ESC>:TagbarOpenAutoClose<CR>', label = 'show tagbar' },
|
|
}
|
|
},
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Projects
|
|
--------------------------------------------------------------------------------
|
|
-- Things that make working with projects better.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Making the working directory follow your projects
|
|
--
|
|
-- Whenever you load a new file, changes the working directory to the
|
|
-- nearest parent that has a `.git` folder in it, generally just working to
|
|
-- automatically always be in your current project's folder.
|
|
--
|
|
{ name = 'airblade/vim-rooter' },
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Trouble - Show a todo list and list of errors from the lsp
|
|
--
|
|
{ name = 'kyazdani42/nvim-web-devicons' },
|
|
{ name = 'folke/trouble.nvim', config = { branch = 'main' } },
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Todo Comments
|
|
--
|
|
-- Find todo/fixme/etc and highlight them, and allow viewing a list
|
|
-- project-wide
|
|
{
|
|
name = 'folke/todo-comments.nvim',
|
|
config = { branch = "main" },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'w', 't' }, map = ':TodoTrouble<CR>', label = "todos" },
|
|
}
|
|
},
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- UI
|
|
--------------------------------------------------------------------------------
|
|
-- Things that make the UI nicer.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Collect scope at the top of the editor to maintain context
|
|
--
|
|
-- E.g., as you scroll down, if you're within a function() whose
|
|
-- declaration has scrolled off-screen, this will pin it to the top of the
|
|
-- editor so it's always visible.
|
|
--
|
|
{ enable = false, name = 'wellle/context.vim' },
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Tool: Git
|
|
--------------------------------------------------------------------------------
|
|
-- Things that make your git experience better.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Git Wrapper
|
|
--
|
|
-- Adds a :G command that allows you to specify most git commands and have
|
|
-- them do sensible things from within vim with a vim-y interface.
|
|
--
|
|
{
|
|
name = 'tpope/vim-fugitive',
|
|
-- Only enable if git is installed
|
|
requires = { 'git' },
|
|
config = { ['on'] = { 'G', 'Gdiffsplit', 'GDelete' } },
|
|
-- Put a bunch of stuff in the <leader> menu
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'g', 'b' }, map = ':G blame<CR>', label = 'blame' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'd' }, map = ':Gdiffsplit<CR>', label = 'diff' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'l' }, map = ':G log<CR>', label = 'log' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'r' }, map = ':GDelete<CR>', label = 'rm' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 's' }, map = ':G<CR>', label = 'status' },
|
|
|
|
{ mode = 'n', key = { '<leader>', 'g', 'a' }, map = ':G add %<CR>', label = 'add' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'c' }, map = ':G commit<CR>', label = 'commit' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'p' }, map = ':G push<CR>', label = 'push' },
|
|
|
|
{ mode = 'n', key = { '<leader>', 'g', 'x' }, map = ':lua nukevim.modules:get("tpope/vim-fugitive"):on_change_branch()<CR>', label = 'change branch' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'z' }, map = ':lua nukevim.modules:get("tpope/vim-fugitive"):on_checkout()<CR>', label = 'checkout', without = { 'nvim-telescope/telescope.nvim' } },
|
|
}
|
|
},
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Better log browsing
|
|
--
|
|
-- Show the commit history of the repo in the usual branching tree type
|
|
-- list.
|
|
--
|
|
{
|
|
name = 'junegunn/gv.vim',
|
|
requires = { 'git' },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'g', 'g' }, map = ':GV<CR>', label = 'graph' }
|
|
}
|
|
},
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Show line-by-line changes in the editor
|
|
--
|
|
-- Shows +/-/~ in the gutter to signify line-level changes versus the most
|
|
-- recent commit and provides tools for working with hunks.
|
|
--
|
|
{
|
|
name = 'airblade/vim-gitgutter',
|
|
requires = { 'git' },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'g', 'r' }, map = '<Plug>(GitGutterPrevHunk)', label = 'previous hunk' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'f' }, map = '<Plug>(GitGutterNextHunk)', label = 'next hunk' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 't' }, map = '<Plug>(GitGutterStageHunk)', label = 'stage hunk' },
|
|
{ mode = 'n', key = { '<leader>', 'g', 'y' }, map = '<Plug>(GitGutterPreviewHunk)', label = 'preview hunk' },
|
|
}
|
|
},
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Show blame on each line
|
|
--
|
|
-- vscode style codelens blame shown on each line after a delay
|
|
--
|
|
{
|
|
name = 'apzelos/blamer.nvim',
|
|
requires = { 'git' },
|
|
-- config = {
|
|
-- ['on'] = { 'BlamerToggle' }
|
|
-- },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'g', 'w' }, map = '<Cmd>BlamerToggle<CR>', label = 'toggle inline blame' },
|
|
}
|
|
},
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Tool: Docker
|
|
--------------------------------------------------------------------------------
|
|
-- Things that make your docker experience better.
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Pure vimscript docker container management
|
|
--
|
|
-- This plugin is disabled by default as I prefer the "denops-docker" listed
|
|
-- below, but if you can't/won't install deno then this is an option.
|
|
--
|
|
{
|
|
enable = false,
|
|
name = 'kkvh/vim-docker-tools',
|
|
requires = { 'docker' },
|
|
config = { ['on'] = { 'DockerToolsOpen', 'DockerToolsToggle' } },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'd', 'c' }, map = ':below new<CR>:DockerToolsOpen<CR>', label = 'docker containers' }
|
|
}
|
|
},
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Docker container and image management
|
|
--
|
|
-- This plugin seems a little more polished and full-featured, so as long
|
|
-- as deno is available enable this instead.
|
|
--
|
|
{
|
|
enable = true,
|
|
name = 'skanehira/denops-docker.vim',
|
|
config = { branch = 'main', ['on'] = { 'DockerContainers', 'DockerImages' } },
|
|
requires = { 'deno', 'docker' },
|
|
keys = {
|
|
{ mode = 'n', key = { '<leader>', 'd', 'c' }, map = ':below new<CR>:DockerContainers<CR>8<C-w>_', options = { silent = true }, label = 'docker containers' },
|
|
{ mode = 'n', key = { '<leader>', 'd', 'i' }, map = ':below new<CR>:DockerImages<CR>8<C-w>_', options = { silent = true }, label = 'docker images' },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 'u' }, label = 'start', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 'd' }, label = 'stop', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { '<C-k>' }, label = 'kill', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 'a' }, label = 'terminal', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 't' }, label = 'log', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { '<C-d>' }, label = 'delete', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 'q' }, label = 'close window', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { 'r' }, label = 'restart', virtual = true },
|
|
{ filetype = 'docker-containers', mode = 'n', key = { '<CR>' }, label = 'inspect', virtual = true },
|
|
{ filetype = 'docker-images', mode = 'n', key = { '<CR>' }, label = 'inspect', virtual = true },
|
|
{ filetype = 'docker-images', mode = 'n', key = { '<C-d>' }, label = 'delete', virtual = true },
|
|
{ filetype = 'docker-images', mode = 'n', key = { 'r' }, label = 'run', virtual = true },
|
|
{ filetype = 'docker-images', mode = 'n', key = { 'q' }, label = 'close window', virtual = true },
|
|
|
|
}
|
|
},
|
|
|
|
}
|
|
|