277 lines
10 KiB
Lua
277 lines
10 KiB
Lua
-- You can add your own plugins here or in other files in this directory!
|
|
-- I promise not to create any merge conflicts in this directory :)
|
|
--
|
|
-- See the kickstart.nvim README for more information
|
|
local function do_custom_commit(prefix)
|
|
local ok, _ = pcall(vim.cmd, 'G commit -a')
|
|
if ok then
|
|
local branch = vim.fn.system "git branch --show-current | tr -d '\n'"
|
|
local ticket = branch:match '([A-Z]+%-%d+)'
|
|
vim.cmd 'startinsert'
|
|
if not ticket then
|
|
vim.api.nvim_put({ string.format('%s: ', prefix) }, 'c', true, true)
|
|
return
|
|
end
|
|
if prefix == '' then
|
|
vim.api.nvim_put({ string.format('%s: ', ticket) }, 'c', true, true)
|
|
return
|
|
end
|
|
vim.api.nvim_put({ string.format('%s(%s): ', prefix, ticket) }, 'c', true, true)
|
|
end
|
|
end
|
|
|
|
return {
|
|
{
|
|
'christoomey/vim-tmux-navigator',
|
|
cmd = {
|
|
'TmuxNavigateLeft',
|
|
'TmuxNavigateDown',
|
|
'TmuxNavigateUp',
|
|
'TmuxNavigateRight',
|
|
'TmuxNavigatePrevious',
|
|
},
|
|
keys = {
|
|
-- there were come ctrl+hjkl stuff here but i don't think i need it, use alt+arrows
|
|
},
|
|
},
|
|
{
|
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
|
config = function()
|
|
require('nvim-treesitter.configs').setup {
|
|
textobjects = {
|
|
select = {
|
|
enable = true,
|
|
|
|
-- Automatically jump forward to textobj, similar to targets.vim
|
|
lookahead = true,
|
|
|
|
keymaps = {
|
|
-- You can use the capture groups defined in textobjects.scm
|
|
['af'] = '@function.outer',
|
|
['if'] = '@function.inner',
|
|
['ac'] = '@class.outer',
|
|
-- You can optionally set descriptions to the mappings (used in the desc parameter of
|
|
-- nvim_buf_set_keymap) which plugins like which-key display
|
|
['ic'] = { query = '@class.inner', desc = 'Select inner part of a class region' },
|
|
-- You can also use captures from other query groups like `locals.scm`
|
|
['as'] = { query = '@scope', query_group = 'locals', desc = 'Select language scope' },
|
|
},
|
|
-- You can choose the select mode (default is charwise 'v')
|
|
--
|
|
-- Can also be a function which gets passed a table with the keys
|
|
-- * query_string: eg '@function.inner'
|
|
-- * method: eg 'v' or 'o'
|
|
-- and should return the mode ('v', 'V', or '<c-v>') or a table
|
|
-- mapping query_strings to modes.
|
|
selection_modes = {
|
|
['@parameter.outer'] = 'v', -- charwise
|
|
['@function.outer'] = 'V', -- linewise
|
|
['@class.outer'] = 'V', -- <c-v> for blockwise but i changed it
|
|
},
|
|
-- If you set this to `true` (default is `false`) then any textobject is
|
|
-- extended to include preceding or succeeding whitespace. Succeeding
|
|
-- whitespace has priority in order to act similarly to eg the built-in
|
|
-- `ap`.
|
|
--
|
|
-- Can also be a function which gets passed a table with the keys
|
|
-- * query_string: eg '@function.inner'
|
|
-- * selection_mode: eg 'v'
|
|
-- and should return true or false
|
|
include_surrounding_whitespace = false,
|
|
},
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
'nvim-tree/nvim-tree.lua',
|
|
version = '*',
|
|
lazy = false,
|
|
dependencies = {
|
|
'nvim-tree/nvim-web-devicons',
|
|
},
|
|
config = function()
|
|
require('nvim-tree').setup {
|
|
update_focused_file = {
|
|
enable = true,
|
|
},
|
|
}
|
|
vim.keymap.set('n', '<leader>tt', ':NvimTreeToggle\n', { desc = '[T]oggle NVim[T]ree' })
|
|
end,
|
|
},
|
|
{
|
|
'nvimtools/none-ls.nvim',
|
|
ft = { 'python' },
|
|
opts = function()
|
|
local null_ls = require 'null-ls'
|
|
return {
|
|
sources = {
|
|
null_ls.builtins.diagnostics.mypy.with {
|
|
extra_args = function()
|
|
local virtual = os.getenv 'VIRTUAL_ENV' or os.getenv 'CONDA_PREFIX' or '/usr'
|
|
return { '--python-executable', virtual .. '/bin/python3' }
|
|
end,
|
|
},
|
|
null_ls.builtins.formatting.isort.with { prefer_local = true },
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
'mfussenegger/nvim-dap',
|
|
config = function()
|
|
vim.keymap.set('n', '<leader>db', '<cmd> DapToggleBreakpoint <CR>', { desc = '[D]ebug [B]reakpoint' })
|
|
vim.keymap.set('n', '<F5>', function()
|
|
require('dap').continue()
|
|
end, { desc = 'Step Over' })
|
|
vim.keymap.set('n', '<F6>', function()
|
|
require('dap').step_over()
|
|
end, { desc = 'Step Over' })
|
|
vim.keymap.set('n', '<F7>', function()
|
|
require('dap').step_into()
|
|
end, { desc = 'Step Into' })
|
|
end,
|
|
},
|
|
{
|
|
'mfussenegger/nvim-dap-python',
|
|
ft = 'python',
|
|
dependencies = {
|
|
'mfussenegger/nvim-dap',
|
|
},
|
|
config = function()
|
|
local path = '~/.local/share/nvim/mason/packages/debugpy/venv/bin/python'
|
|
require('dap-python').setup(path)
|
|
end,
|
|
},
|
|
{
|
|
'nvim-neotest/neotest',
|
|
dependencies = {
|
|
'nvim-neotest/nvim-nio',
|
|
'nvim-lua/plenary.nvim',
|
|
'antoinemadec/FixCursorHold.nvim',
|
|
'nvim-treesitter/nvim-treesitter',
|
|
'nvim-neotest/neotest-python',
|
|
},
|
|
config = function()
|
|
require('neotest').setup {
|
|
adapters = {
|
|
require 'neotest-python' {
|
|
dap = { justMyCode = false },
|
|
pytest_discover_instances = true,
|
|
},
|
|
},
|
|
}
|
|
vim.keymap.set('n', '<leader>tn', function()
|
|
require('neotest').run.run()
|
|
end, { desc = '[T]ests: Run [N]earest' })
|
|
vim.keymap.set('n', '<leader>tdn', function()
|
|
require('neotest').run.run { strategy = 'dap' }
|
|
end, { desc = '[T]ests: [D]ebug [N]earest' })
|
|
vim.keymap.set('n', '<leader>tf', function()
|
|
require('neotest').run.run(vim.fn.expand '%')
|
|
end, { desc = '[T]ests: Run all tests in [F]ile' })
|
|
vim.keymap.set('n', '<leader>to', function()
|
|
require('neotest').output.open { enter = true }
|
|
end, { desc = '[T]ests: Open [O]utput Window' })
|
|
end,
|
|
},
|
|
{
|
|
'rcarriga/nvim-dap-ui',
|
|
dependencies = { 'mfussenegger/nvim-dap', 'nvim-neotest/nvim-nio' },
|
|
config = function()
|
|
local dap, dapui = require 'dap', require 'dapui'
|
|
dap.listeners.before.attach.dapui_config = function()
|
|
dapui.setup()
|
|
dapui.open()
|
|
end
|
|
dap.listeners.before.launch.dapui_config = function()
|
|
dapui.setup()
|
|
dapui.open()
|
|
end
|
|
dap.listeners.before.event_terminated.dapui_config = function()
|
|
dapui.close()
|
|
end
|
|
dap.listeners.before.event_exited.dapui_config = function()
|
|
dapui.close()
|
|
end
|
|
end,
|
|
},
|
|
{
|
|
'folke/neodev.nvim',
|
|
opts = {},
|
|
config = function()
|
|
require('neodev').setup {
|
|
library = { plugins = { 'nvim-dap-ui' }, types = true },
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
'tpope/vim-fugitive',
|
|
config = function()
|
|
vim.keymap.set('n', '<leader>gb', '<Cmd>Telescope git_branches<CR>', { desc = '[G]it [B]ranches' })
|
|
vim.keymap.set('n', '<leader>gs', '<Cmd>Git<CR>', { desc = '[G]it [S]tatus' })
|
|
vim.keymap.set('n', '<leader>gcf', function()
|
|
do_custom_commit 'feat'
|
|
end, { desc = '[G]it [C]ommit [F]eat' })
|
|
vim.keymap.set('n', '<leader>gcc', function()
|
|
do_custom_commit 'chore'
|
|
end, { desc = '[G]it [C]ommit [C]hore' })
|
|
vim.keymap.set('n', '<leader>gcr', function()
|
|
do_custom_commit 'refactor'
|
|
end, { desc = '[G]it [C]ommit [R]efactor' })
|
|
vim.keymap.set('n', '<leader>gce', '<Cmd>Git commit -a<CR>', { desc = '[G]it [C]ommit [E]mpty' })
|
|
|
|
vim.keymap.set('n', '<leader>gp', '<Cmd>Git push<CR>', { desc = '[G]it [P]ush' })
|
|
vim.keymap.set('n', '<leader>gf', '<Cmd>Git pull<CR>', { desc = '[G]it [F]pull' })
|
|
vim.keymap.set('n', '<leader>gd', '<Cmd>Git diff<CR>', { desc = '[G]it [D]iff' })
|
|
vim.keymap.set('n', '<leader>gl', '<Cmd>Git log<CR>', { desc = '[G]it [L]og' })
|
|
vim.keymap.set('n', '<leader>gw', '<Cmd>Git blame<CR>', { desc = '[G]it [W]hodunit (Blame)' })
|
|
end,
|
|
},
|
|
{
|
|
'LunarVim/breadcrumbs.nvim',
|
|
dependencies = {
|
|
{ 'SmiteshP/nvim-navic' },
|
|
},
|
|
config = function()
|
|
require('nvim-navic').setup { lsp = { auto_attach = true, preference = { 'pyright' } } }
|
|
require('breadcrumbs').setup()
|
|
end,
|
|
},
|
|
{
|
|
'github/copilot.vim',
|
|
},
|
|
{
|
|
'nvimdev/dashboard-nvim',
|
|
event = 'VimEnter',
|
|
config = function()
|
|
require('dashboard').setup {
|
|
config = {
|
|
header = {
|
|
'⠀⢀⣴⣦⠀⠀⠀⠀⢰⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀',
|
|
'⣰⣿⣿⣿⣷⡀⠀⠀⢸⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀',
|
|
'⣿⣿⣿⣿⣿⣿⣄⠀⢸⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀',
|
|
'⣿⣿⣿⠈⢿⣿⣿⣦⢸⣿⣿⡇⠀⣠⠴⠒⠢⣄⠀⠀⣠⠴⠲⠦⣄⠐⣶⣆⠀⠀⢀⣶⡖⢰⣶⠀⢰⣶⣴⡶⣶⣆⣴⡶⣶⣶⡄',
|
|
'⣿⣿⣿⠀⠀⠻⣿⣿⣿⣿⣿⡇⢸⣁⣀⣀⣀⣘⡆⣼⠁⠀⠀⠀⠘⡇⠹⣿⡄⠀⣼⡿⠀⢸⣿⠀⢸⣿⠁⠀⢸⣿⡏⠀⠀⣿⣿',
|
|
'⠹⣿⣿⠀⠀⠀⠙⣿⣿⣿⡿⠃⢸⡀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⢀⡏⠀⢻⣿⣸⣿⠁⠀⢸⣿⠀⢸⣿⠀⠀⢸⣿⡇⠀⠀⣿⣿',
|
|
'⠀⠈⠻⠀⠀⠀⠀⠈⠿⠋⠀⠀⠈⠳⢤⣀⣠⠴⠀⠈⠧⣄⣀⡠⠞⠁⠀⠀⠿⠿⠃⠀⠀⢸⣿⠀⢸⣿⠀⠀⠸⣿⡇⠀⠀⣿⡿',
|
|
},
|
|
shortcut = {},
|
|
project = { enable = false },
|
|
mru = { cwd_only = true },
|
|
footer = {
|
|
' ',
|
|
' 👾 github.com/feakuru 👾 ',
|
|
},
|
|
},
|
|
hide = { statusline = false, tabline = false, winbar = false },
|
|
}
|
|
end,
|
|
dependencies = { { 'nvim-tree/nvim-web-devicons' } },
|
|
},
|
|
{
|
|
'ThePrimeagen/vim-be-good',
|
|
},
|
|
}
|