329 lines
12 KiB
Lua
329 lines
12 KiB
Lua
local vars = require('user.config.vars')
|
|
|
|
return {
|
|
{
|
|
'echasnovski/mini.bufremove',
|
|
opts = { silent = true },
|
|
config = function(_, opts)
|
|
require('mini.bufremove').setup(opts)
|
|
end,
|
|
},
|
|
{
|
|
'akinsho/toggleterm.nvim',
|
|
cmd = 'ToggleTerm',
|
|
keys = {
|
|
{ [[<C-\>]], '<cmd>ToggleTerm<CR>', desc = 'Terminal' },
|
|
{ [[<C-S-\>]], '<cmd>ToggleTerm direction=float<CR>', desc = 'Float terminal' },
|
|
},
|
|
opts = {
|
|
shade_terminals = false,
|
|
float_opts = {
|
|
border = vars.border,
|
|
winblend = 0,
|
|
},
|
|
winbar = { enabled = true },
|
|
},
|
|
},
|
|
{
|
|
'nvim-telescope/telescope.nvim',
|
|
cmd = 'Telescope',
|
|
keys = {
|
|
-- File pickers
|
|
{ '<leader>/', '<cmd>Telescope live_grep<CR>', desc = 'Live grep' },
|
|
{ '<leader>fe', '<cmd>Telescope file_browser<CR>', desc = 'File browser' },
|
|
{ '<leader>ff', '<cmd>Telescope find_files<CR>', desc = 'Files' },
|
|
-- Vim pickers
|
|
{ '<leader>:', '<cmd>Telescope command_history<CR>', desc = 'Command history' },
|
|
{ '<leader>fa', '<cmd>Telescope autocommands<CR>', desc = 'Auto commands' },
|
|
{ '<leader>fb', '<cmd>Telescope buffers<CR>', desc = 'Buffers' },
|
|
{ '<leader>fh', '<cmd>Telescope help_tags<CR>', desc = 'Help pages' },
|
|
{ '<leader>fk', '<cmd>Telescope keymaps<CR>', desc = 'Keymaps (normal mode)' },
|
|
{ '<leader>fm', '<cmd>Telescope marks<CR>', desc = 'Marks' },
|
|
{ '<leader>fo', '<cmd>Telescope vim_options<CR>', desc = 'Vim options' },
|
|
{ '<leader>fr', '<cmd>Telescope oldfiles<CR>', desc = 'Recent files' },
|
|
{ '<leader>fz', '<cmd>Telescope current_buffer_fuzzy_find<CR>', desc = 'Current buffer' },
|
|
-- Symbols
|
|
{
|
|
'<leader>fsg',
|
|
function()
|
|
require('telescope.builtin').symbols { sources = { 'gitmoji' }, prompt_title = 'Gitmoji' }
|
|
end,
|
|
desc = 'Gitmoji',
|
|
},
|
|
{
|
|
'<leader>fsj',
|
|
function()
|
|
require('telescope.builtin').symbols { sources = { 'emoji' }, prompt_title = 'Emoji' }
|
|
end,
|
|
desc = 'Emoji',
|
|
},
|
|
{
|
|
'<leader>fsk',
|
|
function()
|
|
require('telescope.builtin').symbols { sources = { 'kaomoji' }, prompt_title = 'Kaomoji' }
|
|
end,
|
|
desc = 'Kaomoji',
|
|
},
|
|
{
|
|
'<leader>fsn',
|
|
function()
|
|
require('telescope.builtin').symbols { sources = { 'nerd' }, prompt_title = 'Nerd-fonts' }
|
|
end,
|
|
desc = 'Nerd-fonts',
|
|
},
|
|
-- Git pickers
|
|
{ '<leader>ga', '<cmd>Telescope git_stash<CR>', desc = 'Stash items' },
|
|
{ '<leader>gm', '<cmd>Telescope git_branches<CR>', desc = 'Branches' },
|
|
{ '<leader>gc', '<cmd>Telescope git_bcommits<CR>', desc = 'Buffer commits' },
|
|
{ '<leader>gC', '<cmd>Telescope git_commits<CR>', desc = 'Commits' },
|
|
},
|
|
dependencies = {
|
|
'nvim-telescope/telescope-file-browser.nvim',
|
|
{ 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
|
|
{
|
|
'nvim-telescope/telescope-symbols.nvim',
|
|
-- there is only the data/ directory to care about
|
|
init = function()
|
|
require('lazy.core.loader').disable_rtp_plugin('telescope-symbols.nvim')
|
|
end,
|
|
},
|
|
},
|
|
opts = function()
|
|
return require('user.plugins.util.telescope')
|
|
end,
|
|
config = function(_, opts)
|
|
local telescope = require('telescope')
|
|
telescope.setup(opts)
|
|
|
|
-- NOTE: explicitly set after the setup so the options are applied correctly
|
|
telescope.load_extension('file_browser')
|
|
telescope.load_extension('fzf')
|
|
end,
|
|
},
|
|
{
|
|
'LukasPietzschmann/telescope-tabs',
|
|
keys = {
|
|
{ '<leader>f<Tab>', function() require('telescope-tabs').list_tabs() end, desc = 'Tabs' },
|
|
},
|
|
opts = {
|
|
entry_formatter = function(tab_id, _, file_names, _, is_current)
|
|
local current_icon = is_current and ' ' or ' '
|
|
if require('user.util.misc').has('tabby.nvim') then
|
|
local tab_name = require('tabby.feature.tab_name').get(tab_id)
|
|
return string.format('%d: %s%s', tab_id, current_icon, tab_name)
|
|
end
|
|
return string.format('%d: %s%s', tab_id, current_icon, table.concat(file_names, ', '))
|
|
end,
|
|
entry_ordinal = function(tab_id, _, file_names)
|
|
if require('user.util.misc').has('tabby.nvim') then
|
|
return require('tabby.feature.tab_name').get(tab_id)
|
|
end
|
|
return table.concat(file_names, ' ')
|
|
end,
|
|
},
|
|
},
|
|
{
|
|
'ahmedkhalf/project.nvim',
|
|
event = { 'BufReadPost', 'BufNewFile' },
|
|
keys = {
|
|
{
|
|
'<leader>fp', function()
|
|
local telescope = require('telescope')
|
|
telescope.load_extension('projects')
|
|
telescope.extensions.projects.projects()
|
|
end,
|
|
desc = 'Recent projects',
|
|
},
|
|
},
|
|
config = function()
|
|
require('user.plugins.util.project')
|
|
end,
|
|
},
|
|
{
|
|
'stevearc/overseer.nvim',
|
|
cmd = {
|
|
'OverseerToggle',
|
|
'OverseerBuild',
|
|
'OverseerInfo',
|
|
'OverseerRunCmd',
|
|
'OverseerRun',
|
|
},
|
|
keys = {
|
|
{ '<leader>tb', '<cmd>OverseerBuild<CR>', desc = 'Build task' },
|
|
{ '<leader>ti', '<cmd>OverseerInfo<CR>', desc = 'Info' },
|
|
{ '<leader>to', '<cmd>OverseerToggle<CR>', desc = 'Task list' },
|
|
{ '<leader>tr', '<cmd>OverseerRun<CR>', desc = 'Run task' },
|
|
},
|
|
opts = function()
|
|
return require('user.plugins.util.overseer')
|
|
end,
|
|
},
|
|
{
|
|
'stevearc/stickybuf.nvim',
|
|
event = 'BufReadPost',
|
|
cmd = { 'PinBuffer', 'PinBuftype', 'Unpin', 'PinFileType' },
|
|
opts = { get_auto_pin = require('user.plugins.util.stickybuf') },
|
|
},
|
|
{
|
|
'NeogitOrg/neogit',
|
|
cmd = 'Neogit',
|
|
keys = {
|
|
{'<leader>go', '<cmd>Neogit<CR>', desc = 'Neogit' },
|
|
},
|
|
dependencies = {
|
|
{
|
|
'sindrets/diffview.nvim',
|
|
cmd = { 'DiffviewOpen', 'DiffviewFileHistory' },
|
|
},
|
|
},
|
|
opts = {
|
|
signs = {
|
|
section = { '', '' },
|
|
item = { '', '' },
|
|
},
|
|
integrations = { diffview = true },
|
|
},
|
|
},
|
|
{
|
|
'lewis6991/gitsigns.nvim',
|
|
event = { 'BufNewFile', 'BufReadPost' },
|
|
dependencies = { 'plenary.nvim', 'vim-repeat' },
|
|
opts = require('user.plugins.util.gitsigns'),
|
|
},
|
|
{
|
|
'akinsho/git-conflict.nvim',
|
|
event = { 'BufReadPost', 'BufNewFile' },
|
|
keys = {
|
|
{ '[x', function() require('git-conflict').find_prev('ours') end, desc = 'Previous git conflict' },
|
|
{ ']x', function() require('git-conflict').find_next('ours') end, desc = 'Previous git conflict' },
|
|
},
|
|
config = function()
|
|
require('user.plugins.util.git-conflict')
|
|
end,
|
|
},
|
|
{
|
|
'cshuaimin/ssr.nvim',
|
|
keys = {
|
|
{ '<leader>ss', function() require('ssr').open() end, mode = { 'x', 'n' }, desc = 'Structural search/replace' },
|
|
},
|
|
opts = { border = vars.border },
|
|
},
|
|
{
|
|
'nvim-pack/nvim-spectre',
|
|
keys = {
|
|
{ '<leader>so', function() require('spectre').open() end, desc = 'Search/Replace (Spectre)' },
|
|
{ '<leader>so', function() require('spectre').open_visual() end, desc = 'Search/Replace selection (Spectre)', mode = 'x' },
|
|
{ '<leader>sp', function() require('spectre').open_file_search() end, desc = 'Search/Replace in current file' },
|
|
},
|
|
opts = { find_engine = { rg = { args = vars.rg_args } } },
|
|
},
|
|
{
|
|
'uga-rosa/ccc.nvim',
|
|
cmd = { 'CccPick', 'CccConvert', 'CccHighlighterToggle' },
|
|
keys = {
|
|
{ '<leader>ec', '<cmd>CccPick<CR>', desc = 'Pick color' },
|
|
{ '<leader>eC', '<cmd>CccPick<CR>', desc = 'Convert color under cursor' },
|
|
{ '<leader>uc', '<cmd>CccHighlighterToggle<CR>', desc = 'Highlight color text' },
|
|
},
|
|
config = function()
|
|
require('user.plugins.util.ccc')
|
|
end,
|
|
},
|
|
{
|
|
'folke/persistence.nvim',
|
|
event = 'BufReadPre',
|
|
keys = {
|
|
{ '<leader>ps', function() require('persistence').save() end, desc = 'Save session for current directory' },
|
|
{ '<leader>pd', function() require('persistence').stop() end, desc = 'Don\'t save current session' },
|
|
{ '<leader>pr', function() require('persistence').load() end, desc = 'Restore session' },
|
|
{ '<leader>pl', function() require('persistence').load { last = true } end, desc = 'Restore last session' },
|
|
},
|
|
opts = { options = vim.opt.sessionoptions:get() },
|
|
},
|
|
{
|
|
'michaelb/sniprun',
|
|
build = 'cargo build --release',
|
|
cmd = { 'SnipRun', 'SnipInfo' },
|
|
keys = {
|
|
{ '<leader>ex', '<cmd>SnipRun<CR>', desc = 'Execute current line' },
|
|
{ '<leader>ex', '<cmd>SnipRun<CR>', desc = 'Execute selection', mode = 'x' },
|
|
},
|
|
opts = {
|
|
display = { 'NvimNotify' },
|
|
display_options = { notification_timeout = 2000 },
|
|
show_no_output = {
|
|
'Classic',
|
|
'NvimNotify',
|
|
'TempFloatingWindow',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
'rest-nvim/rest.nvim',
|
|
keys = {
|
|
{ 'gu', function() require('rest-nvim').run() end, desc = 'cURL request under cursor' },
|
|
},
|
|
opts = { result_split_in_place = true },
|
|
},
|
|
{
|
|
'mbbill/undotree',
|
|
cmd = 'UndotreeToggle',
|
|
keys = {
|
|
{ '<localleader>u', '<cmd>UndotreeToggle<CR>', desc = 'Undotree' },
|
|
},
|
|
init = function()
|
|
vim.g.undotree_WindowLayout = 2
|
|
vim.g.undotree_SplitWidth = 30
|
|
vim.g.undotree_DiffpaneHeight = 10
|
|
vim.g.undotree_SetFocusWhenToggle = 1
|
|
vim.g.undotree_RelativeTimestamp = 1
|
|
end,
|
|
},
|
|
{
|
|
'potamides/pantran.nvim',
|
|
cmd = 'Pantran',
|
|
keys = {
|
|
{ '<leader>er', function() return require('pantran').motion_translate() end, expr = true, desc = 'Translate (motion)' },
|
|
{ '<leader>eR', function() return require('pantran').motion_translate() .. '_' end, expr = true, desc = 'Translate (cursor)' },
|
|
{ '<leader>er', function() return require('pantran').motion_translate() end, expr = true, mode = 'x', desc = 'Translate' },
|
|
},
|
|
opts = function()
|
|
return require('user.plugins.util.pantran')
|
|
end,
|
|
},
|
|
{
|
|
'iamcco/markdown-preview.nvim',
|
|
build = 'cd app && pnpm install && pnpm add msgpack-lite@latest',
|
|
ft = { 'markdown', 'rmd' },
|
|
opts = {
|
|
mkdp_browser = 'xdg-open',
|
|
mkdp_refresh_slow = 1,
|
|
mkdp_filetypes = { 'markdown', 'rmd' },
|
|
mkdp_echo_preview_url = 0,
|
|
mkdp_preview_options = { disable_filename = 1 },
|
|
},
|
|
config = function(_, opts)
|
|
for key, val in pairs(opts) do
|
|
vim.g[key] = val
|
|
end
|
|
end,
|
|
},
|
|
{
|
|
'ellisonleao/carbon-now.nvim',
|
|
cmd = 'CarbonNow',
|
|
keys = {
|
|
{ mode = { 'n', 'x' }, '<leader>ui', '<cmd>CarbonNow<CR>', desc = 'Carbon' },
|
|
},
|
|
opts = function()
|
|
return require('user.plugins.util.carbon-now')
|
|
end,
|
|
},
|
|
{
|
|
'dstein64/vim-startuptime',
|
|
cmd = 'StartupTime',
|
|
init = function()
|
|
vim.g.startuptime_tries = 10
|
|
end,
|
|
},
|
|
}
|