2025-03-08 17:46:35 +01:00
|
|
|
-- [[ Configure and install plugins ]]
|
|
|
|
|
--
|
|
|
|
|
-- To check the current status of your plugins, run
|
|
|
|
|
-- :Lazy
|
|
|
|
|
--
|
|
|
|
|
-- You can press `?` in this menu for help. Use `:q` to close the window
|
|
|
|
|
--
|
|
|
|
|
-- To update plugins you can run
|
|
|
|
|
-- :Lazy update
|
|
|
|
|
--
|
|
|
|
|
-- NOTE: Here is where you install your plugins.
|
|
|
|
|
require('lazy').setup({
|
|
|
|
|
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
|
|
|
|
|
'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
|
|
|
|
|
'christoomey/vim-tmux-navigator',
|
|
|
|
|
'christoomey/vim-tmux-runner',
|
2025-05-03 15:25:47 +02:00
|
|
|
|
|
|
|
|
{
|
|
|
|
|
"folke/which-key.nvim",
|
|
|
|
|
event = "VeryLazy",
|
|
|
|
|
opts = {
|
|
|
|
|
-- your configuration comes here
|
|
|
|
|
-- or leave it empty to use the default settings
|
|
|
|
|
-- refer to the configuration section below
|
2025-05-03 16:39:30 +02:00
|
|
|
spec = {
|
|
|
|
|
{ '[', group = 'Navigation' },
|
|
|
|
|
{ ']', group = 'Navigation' },
|
|
|
|
|
{ '<leader>t', group = '[T]oggle' },
|
|
|
|
|
{ '<leader>h', group = 'Git [h]unk', mode = { 'n', 'v' } },
|
|
|
|
|
},
|
2025-05-03 15:25:47 +02:00
|
|
|
},
|
|
|
|
|
keys = {
|
|
|
|
|
{
|
|
|
|
|
"<leader>?",
|
|
|
|
|
function()
|
|
|
|
|
require("which-key").show({ global = false })
|
|
|
|
|
end,
|
|
|
|
|
desc = "Buffer Local Keymaps (which-key)",
|
|
|
|
|
},
|
|
|
|
|
},
|
2025-05-03 16:39:30 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
'lewis6991/gitsigns.nvim',
|
|
|
|
|
opts = {
|
|
|
|
|
signs = {
|
|
|
|
|
add = { text = '+' },
|
|
|
|
|
change = { text = '~' },
|
|
|
|
|
delete = { text = '_' },
|
|
|
|
|
topdelete = { text = '‾' },
|
|
|
|
|
changedelete = { text = '~' },
|
|
|
|
|
},
|
|
|
|
|
on_attach = function(bufnr)
|
|
|
|
|
local gitsigns = require 'gitsigns'
|
|
|
|
|
|
|
|
|
|
local function map(mode, l, r, opts)
|
|
|
|
|
opts = opts or {}
|
|
|
|
|
opts.buffer = bufnr
|
|
|
|
|
vim.keymap.set(mode, l, r, opts)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Navigation
|
|
|
|
|
map('n', ']c', function()
|
|
|
|
|
if vim.wo.diff then
|
|
|
|
|
vim.cmd.normal { ']c', bang = true }
|
|
|
|
|
else
|
|
|
|
|
gitsigns.nav_hunk 'next'
|
|
|
|
|
end
|
|
|
|
|
end, { desc = 'Jump to next git [c]hange' })
|
|
|
|
|
|
|
|
|
|
map('n', '[c', function()
|
|
|
|
|
if vim.wo.diff then
|
|
|
|
|
vim.cmd.normal { '[c', bang = true }
|
|
|
|
|
else
|
|
|
|
|
gitsigns.nav_hunk 'prev'
|
|
|
|
|
end
|
|
|
|
|
end, { desc = 'Jump to previous git [c]hange' })
|
|
|
|
|
|
|
|
|
|
-- Actions
|
|
|
|
|
-- visual mode
|
|
|
|
|
map('v', '<leader>hs', function()
|
|
|
|
|
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
|
|
end, { desc = 'git [s]tage hunk' })
|
|
|
|
|
map('v', '<leader>hr', function()
|
|
|
|
|
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
|
|
end, { desc = 'git [r]eset hunk' })
|
|
|
|
|
-- normal mode
|
|
|
|
|
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
|
|
|
|
|
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
|
|
|
|
|
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
|
|
|
|
|
map('n', '<leader>hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' })
|
|
|
|
|
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
|
|
|
|
|
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
|
|
|
|
|
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
|
|
|
|
|
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
|
|
|
|
|
map('n', '<leader>hD', function()
|
|
|
|
|
gitsigns.diffthis '@'
|
|
|
|
|
end, { desc = 'git [D]iff against last commit' })
|
|
|
|
|
-- Toggles
|
|
|
|
|
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
|
|
|
|
|
map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
},
|
2025-05-03 15:25:47 +02:00
|
|
|
|
2025-03-08 17:46:35 +01:00
|
|
|
}, {
|
|
|
|
|
ui = {
|
|
|
|
|
-- If you are using a Nerd Font: set icons to an empty table which will use the
|
|
|
|
|
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
|
|
|
|
|
icons = vim.g.have_nerd_font and {} or {
|
|
|
|
|
cmd = '⌘',
|
|
|
|
|
config = '🛠',
|
|
|
|
|
event = '📅',
|
|
|
|
|
ft = '📂',
|
|
|
|
|
init = '⚙',
|
|
|
|
|
keys = '🗝',
|
|
|
|
|
plugin = '🔌',
|
|
|
|
|
runtime = '💻',
|
|
|
|
|
require = '🌙',
|
|
|
|
|
source = '📄',
|
|
|
|
|
start = '🚀',
|
|
|
|
|
task = '📌',
|
|
|
|
|
lazy = '💤 ',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- vim: ts=2 sts=2 sw=2 et
|