huge updates
This commit is contained in:
1 parent
a2b0f73e33
commit
b5e4ef3bff
54 files changed
+931
-812
No files matched your search
+589
@@ -0,0 +1,589 @@
|
||||
return {
|
||||
-- Delete Buffer
|
||||
{
|
||||
'famiu/bufdelete.nvim',
|
||||
event = { 'BufReadPre', 'BufNewFile' },
|
||||
init = function()
|
||||
vim.keymap.set('n', '<leader>q', function()
|
||||
require('bufdelete').bufdelete(0, false)
|
||||
end, { silent = true, desc = 'Quit Buffer' })
|
||||
end,
|
||||
},
|
||||
-- Better Escape
|
||||
{
|
||||
'max397574/better-escape.nvim',
|
||||
config = function()
|
||||
require('better_escape').setup()
|
||||
end,
|
||||
},
|
||||
-- Comment
|
||||
{
|
||||
{
|
||||
'LudoPinelli/comment-box.nvim',
|
||||
opts = {},
|
||||
vscode = true,
|
||||
keys = {
|
||||
{ '<leader>cb', '<cmd>CBccbox<CR>', mode = { 'n', 'v' }, desc = 'Comment Box' },
|
||||
{ '<leader>ct', '<cmd>CBllline<CR>', mode = { 'n', 'v' }, desc = 'Tiled line' },
|
||||
{ '<leader>cl', '<cmd>CBline<CR>', desc = 'Line' },
|
||||
{ '<leader>cm', '<cmd>CBllbox14<CR>', mode = { 'n', 'v' }, desc = 'Marked' },
|
||||
{ '<leader>cc', '<cmd>CBcatalog<CR>', desc = 'Catalog' },
|
||||
{ '<leader>cd', '<cmd>CBd<CR>', mode = { 'n', 'v' }, desc = 'Delete Comment Style' },
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Code Screnshot
|
||||
{
|
||||
'mistricky/codesnap.nvim',
|
||||
build = 'make',
|
||||
cmd = { 'CodeSnap', 'CodeSnapSave' },
|
||||
vscode = false,
|
||||
keys = {
|
||||
{ '<leader>cp', mode = 'v', "<cmd>'<,'>CodeSnap<cr>", desc = 'Screenshot (Clipboard)' },
|
||||
{ '<leader>cP', mode = 'v', "<cmd>'<,'>CodeSnapSave<cr>", desc = 'Screenshot (Save)' },
|
||||
},
|
||||
cond = vim.env.KITTY_SCROLLBACK_NVIM == nil,
|
||||
opts = {
|
||||
save_path = (os.getenv('HOME') .. '/Pictures/screenshots/code'),
|
||||
title = 'CodeSnap.nvim',
|
||||
code_font_family = 'JetBrainsMono Nerd Font',
|
||||
watermark_font_family = 'JetBrainsMono Nerd Font',
|
||||
watermark = '',
|
||||
bg_theme = 'summer',
|
||||
},
|
||||
},
|
||||
-- Generate dotfyle metadata for your config
|
||||
{
|
||||
'creativenull/dotfyle-metadata.nvim',
|
||||
cmd = { 'DotfyleGenerate', 'DotfyleOpen' },
|
||||
},
|
||||
-- improve the default vim.ui interfaces
|
||||
{
|
||||
'stevearc/dressing.nvim',
|
||||
event = 'VeryLazy',
|
||||
},
|
||||
-- Show diagnostics and lsp info inside a custom window, following the mouse position
|
||||
{
|
||||
'soulis-1256/eagle.nvim',
|
||||
event = { 'BufReadPre', 'BufNewFile' },
|
||||
config = function()
|
||||
require('eagle').setup({})
|
||||
end,
|
||||
},
|
||||
-- Navigate your code with search labels, enhanced character motions and Treesitter integration
|
||||
{
|
||||
'folke/flash.nvim',
|
||||
event = { 'CursorHold', 'CursorHoldI' },
|
||||
vscode = true,
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
's',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function()
|
||||
require('flash').jump()
|
||||
end,
|
||||
desc = 'Flash',
|
||||
},
|
||||
{
|
||||
'S',
|
||||
mode = { 'n', 'o', 'x' },
|
||||
function()
|
||||
require('flash').treesitter()
|
||||
end,
|
||||
desc = 'Flash Treesitter',
|
||||
},
|
||||
{
|
||||
'r',
|
||||
mode = 'o',
|
||||
function()
|
||||
require('flash').remote()
|
||||
end,
|
||||
desc = 'Remote Flash',
|
||||
},
|
||||
{
|
||||
'R',
|
||||
mode = { 'o', 'x' },
|
||||
function()
|
||||
require('flash').treesitter_search()
|
||||
end,
|
||||
desc = 'Treesitter Search',
|
||||
},
|
||||
{
|
||||
'<c-s>',
|
||||
mode = { 'c' },
|
||||
function()
|
||||
require('flash').toggle()
|
||||
end,
|
||||
desc = 'Toggle Flash Search',
|
||||
},
|
||||
},
|
||||
},
|
||||
--open files in neovim without creating a nested sessions
|
||||
{
|
||||
'willothy/flatten.nvim',
|
||||
priority = 1001,
|
||||
opts = {
|
||||
window = {
|
||||
open = 'alternate',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- highlight arguments
|
||||
{
|
||||
'm-demare/hlargs.nvim',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
},
|
||||
-- emoji picker
|
||||
{
|
||||
'ziontee113/icon-picker.nvim',
|
||||
enabled = true,
|
||||
cmd = { 'IconPickerInsert' },
|
||||
vim.keymap.set('n', '<Leader>se', '<cmd>IconPickerInsert emoji<cr>'),
|
||||
config = function()
|
||||
require('icon-picker').setup({ disable_legacy_commands = true })
|
||||
end,
|
||||
},
|
||||
-- Incremental rename
|
||||
{
|
||||
'smjonas/inc-rename.nvim',
|
||||
cmd = 'IncRename',
|
||||
config = true,
|
||||
},
|
||||
-- automtically guess indent
|
||||
{
|
||||
'nmac427/guess-indent.nvim',
|
||||
event = 'FileType',
|
||||
config = function()
|
||||
require('guess-indent').setup({})
|
||||
end,
|
||||
},
|
||||
-- Faster LuaLS setup
|
||||
{
|
||||
'folke/lazydev.nvim',
|
||||
ft = 'lua', -- only load on lua files
|
||||
cmd = 'LazyDev',
|
||||
lazy = true,
|
||||
event = 'LspAttach',
|
||||
opts = {
|
||||
library = {},
|
||||
},
|
||||
},
|
||||
-- Snippets
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
dependencies = {
|
||||
'rafamadriz/friendly-snippets',
|
||||
'mstuttgart/odoo-snippets',
|
||||
},
|
||||
opts = {
|
||||
history = true,
|
||||
updateevents = 'TextChanged,TextChangedI',
|
||||
},
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
config = function()
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
end,
|
||||
},
|
||||
-- Markdown preview
|
||||
{
|
||||
'iamcco/markdown-preview.nvim',
|
||||
build = 'cd app && yarn install',
|
||||
ft = { 'markdown' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>mp',
|
||||
'<cmd>MarkdownPreviewToggle<CR>',
|
||||
desc = 'toggle markdown preview',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Colorscheme
|
||||
{
|
||||
'bluz71/vim-moonfly-colors',
|
||||
name = 'moonfly',
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('moonfly').custom_colors({
|
||||
bg = '#000000',
|
||||
})
|
||||
vim.cmd([[colorscheme moonfly]])
|
||||
end,
|
||||
},
|
||||
-- navigate between neovim and terminal
|
||||
{
|
||||
'numToStr/Navigator.nvim',
|
||||
keys = {
|
||||
{ '<C-h>', '<cmd>NavigatorLeft<cr>' },
|
||||
{ '<C-j>', '<cmd>NavigatorDown<cr>' },
|
||||
{ '<C-k>', '<cmd>NavigatorUp<cr>' },
|
||||
{ '<C-l>', '<cmd>NavigatorRight<cr>' },
|
||||
{ '<C-\\>', '<cmd>NavigatorPrevious<cr>' },
|
||||
},
|
||||
config = function()
|
||||
require('Navigator').setup()
|
||||
end,
|
||||
},
|
||||
-- popup display that provides breadcrumbs like navigation features
|
||||
{
|
||||
'SmiteshP/nvim-navbuddy',
|
||||
dependencies = {
|
||||
'neovim/nvim-lspconfig',
|
||||
'SmiteshP/nvim-navic',
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>nv', '<cmd>Navbuddy<cr>', desc = 'Nav' },
|
||||
},
|
||||
config = function()
|
||||
local actions = require('nvim-navbuddy.actions')
|
||||
local navbuddy = require('nvim-navbuddy')
|
||||
navbuddy.setup({
|
||||
window = {
|
||||
border = 'double',
|
||||
},
|
||||
mappings = {
|
||||
['k'] = actions.next_sibling,
|
||||
['i'] = actions.previous_sibling,
|
||||
['j'] = actions.parent,
|
||||
['l'] = actions.children,
|
||||
},
|
||||
lsp = { auto_attach = true },
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- smooth scrolling
|
||||
{
|
||||
'karb94/neoscroll.nvim',
|
||||
event = 'UIEnter',
|
||||
config = function()
|
||||
require('neoscroll').setup({
|
||||
mappings = { -- Keys to be mapped to their corresponding default scrolling animation
|
||||
'<C-u>',
|
||||
'<C-d>',
|
||||
'<C-b>',
|
||||
'<C-f>',
|
||||
'<C-y>',
|
||||
'<C-e>',
|
||||
'zt',
|
||||
'zz',
|
||||
'zb',
|
||||
},
|
||||
hide_cursor = true, -- Hide cursor while scrolling
|
||||
stop_eof = true, -- Stop at <EOF> when scrolling downwards
|
||||
respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
|
||||
cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further
|
||||
easing = 'linear', -- Default easing function
|
||||
pre_hook = nil, -- Function to run before the scrolling animation starts
|
||||
post_hook = nil, -- Function to run after the scrolling animation ends
|
||||
performance_mode = false, -- Disable "Performance Mode" on all buffers.
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- Notifications
|
||||
{
|
||||
'rcarriga/nvim-notify',
|
||||
event = 'VeryLazy',
|
||||
keys = {
|
||||
{
|
||||
'<leader>un',
|
||||
function()
|
||||
require('notify').dismiss({ silent = true, pending = true })
|
||||
end,
|
||||
desc = 'Dismiss All Notifications',
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
level = 2,
|
||||
minimum_width = 50,
|
||||
stages = 'fade',
|
||||
timeout = 3000,
|
||||
top_down = true,
|
||||
render = 'compact',
|
||||
background_colour = '#000000',
|
||||
},
|
||||
},
|
||||
-- Ui components
|
||||
{
|
||||
'MunifTanjim/nui.nvim',
|
||||
lazy = true,
|
||||
},
|
||||
-- Peek lines just when you intend
|
||||
{
|
||||
'nacro90/numb.nvim',
|
||||
event = 'CmdlineEnter',
|
||||
config = function()
|
||||
require('numb').setup({
|
||||
show_numbers = true, -- Enable 'number' for the window while peeking
|
||||
show_cursorline = true, -- Enable 'cursorline' for the window while peeking
|
||||
hide_relativenumbers = true, -- Enable turning off 'relativenumber' for the window while peeking
|
||||
number_only = false, -- Peek only when the command is only a number instead of when it starts with a number
|
||||
centered_peeking = true, -- Peeked line will be centered relative to window
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvim-lua/plenary.nvim',
|
||||
lazy = true,
|
||||
},
|
||||
-- Session Management
|
||||
{
|
||||
'folke/persistence.nvim',
|
||||
event = 'BufReadPre',
|
||||
opts = { options = vim.opt.sessionoptions:get() },
|
||||
keys = {
|
||||
{
|
||||
'<leader>ss',
|
||||
function()
|
||||
require('persistence').load()
|
||||
end,
|
||||
desc = 'Restore Session',
|
||||
},
|
||||
{
|
||||
'<leader>sl',
|
||||
function()
|
||||
require('persistence').load({ last = true })
|
||||
end,
|
||||
desc = 'Restore Last Session',
|
||||
},
|
||||
{
|
||||
'<leader>sd',
|
||||
function()
|
||||
require('persistence').stop()
|
||||
end,
|
||||
desc = "Don't Save Current Session",
|
||||
},
|
||||
},
|
||||
},
|
||||
-- alternating syntax highlighting
|
||||
{
|
||||
'HiPhish/rainbow-delimiters.nvim',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
config = function()
|
||||
local rainbow_delimiters = require('rainbow-delimiters')
|
||||
require('rainbow-delimiters.setup').setup({
|
||||
{
|
||||
strategy = {
|
||||
[''] = rainbow_delimiters.strategy['global'],
|
||||
vim = rainbow_delimiters.strategy['local'],
|
||||
},
|
||||
query = {
|
||||
[''] = 'rainbow-delimiters',
|
||||
lua = 'rainbow-blocks',
|
||||
},
|
||||
priority = {
|
||||
[''] = 110,
|
||||
lua = 210,
|
||||
},
|
||||
highlight = {
|
||||
'RainbowDelimiterRed',
|
||||
'RainbowDelimiterYellow',
|
||||
'RainbowDelimiterBlue',
|
||||
'RainbowDelimiterOrange',
|
||||
'RainbowDelimiterGreen',
|
||||
'RainbowDelimiterViolet',
|
||||
'RainbowDelimiterCyan',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- Enhance the usage of macros
|
||||
{
|
||||
'chrisgrieser/nvim-recorder',
|
||||
dependencies = { 'rcarriga/nvim-notify' },
|
||||
event = 'VeryLazy',
|
||||
vscode = true,
|
||||
keys = {
|
||||
{ 'q', desc = 'Start Recording' },
|
||||
{ 'Q', desc = 'Play Recording' },
|
||||
{ '<C-q>', desc = 'Switch Slot' },
|
||||
{ 'cq', desc = 'Edit Macro' },
|
||||
{ 'yq', desc = 'Yank Macro' },
|
||||
{ 'dq', desc = 'Delete All Macros' },
|
||||
},
|
||||
opts = {
|
||||
useNerdFontsIcons = false,
|
||||
slots = { 'a', 'b', 'c', 'd' },
|
||||
mapping = {
|
||||
startStopRecording = 'q',
|
||||
playMacro = 'Q',
|
||||
editMacro = 'cq',
|
||||
switchSlot = '<C-q>',
|
||||
deleteAllMacros = 'dq',
|
||||
yankMacro = 'yq',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Screencast the keys
|
||||
{
|
||||
'NStefan002/screenkey.nvim',
|
||||
cmd = 'Screenkey',
|
||||
version = '*',
|
||||
vim.keymap.set('n', '<leader>kt', '<cmd>Screenkey<CR>', { desc = 'Toggle keys' }),
|
||||
config = function()
|
||||
require('screenkey').setup({
|
||||
-- see :h nvim_open_win
|
||||
win_opts = {
|
||||
relative = 'editor',
|
||||
anchor = 'SE',
|
||||
width = 40,
|
||||
height = 1,
|
||||
border = 'single',
|
||||
},
|
||||
-- compress input when repeated <compress_after> times
|
||||
compress_after = 3,
|
||||
-- clear the input after <clear_after> seconds of inactivity
|
||||
clear_after = 3,
|
||||
-- temporarily disable screenkey (for example when inside of the terminal)
|
||||
disable = {
|
||||
filetypes = {}, -- for example: "toggleterm"
|
||||
-- :h 'buftype'
|
||||
buftypes = {}, -- for example: "terminal"
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- search panel
|
||||
{
|
||||
'nvim-pack/nvim-spectre',
|
||||
build = false,
|
||||
cmd = 'Spectre',
|
||||
opts = { open_cmd = 'noswapfile vnew' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>sr',
|
||||
function()
|
||||
require('spectre').open()
|
||||
end,
|
||||
desc = 'Replace in Files (Spectre)',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'luukvbaal/statuscol.nvim',
|
||||
event = 'BufReadPre',
|
||||
config = function()
|
||||
local builtin = require('statuscol.builtin')
|
||||
require('statuscol').setup({
|
||||
setopt = true,
|
||||
separator = '',
|
||||
foldfunc = 'builtin',
|
||||
relculright = true,
|
||||
segments = {
|
||||
{ text = { '%s' }, click = 'v:lua.ScSa' },
|
||||
{
|
||||
text = { builtin.lnumfunc, ' ' },
|
||||
click = 'v:lua.ScLa',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- undo history visualizer
|
||||
{
|
||||
'mbbill/undotree',
|
||||
keys = {
|
||||
{ '<leader>uu', '<cmd>UndotreeToggle<cr>', desc = 'Toggle Undotree' },
|
||||
},
|
||||
},
|
||||
-- maximizer & restore current window
|
||||
{
|
||||
'szw/vim-maximizer',
|
||||
|
||||
keys = {
|
||||
{ '<leader>sm', '<cmd>MaximizerToggle<CR>', desc = 'Maximize/minimize a split' },
|
||||
},
|
||||
},
|
||||
-- for programming activity
|
||||
{
|
||||
'wakatime/vim-wakatime',
|
||||
lazy = false,
|
||||
},
|
||||
-- show keymaps
|
||||
{
|
||||
'folke/which-key.nvim',
|
||||
event = 'UIEnter',
|
||||
opts = {
|
||||
preset = 'helix',
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
'<leader>?',
|
||||
function()
|
||||
require('which-key').show({ global = false })
|
||||
end,
|
||||
desc = 'Buffer Local Keymaps (which-key)',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Distraction-free coding
|
||||
{
|
||||
'folke/zen-mode.nvim',
|
||||
cmd = { 'ZenMode' },
|
||||
opts = {},
|
||||
keys = {
|
||||
{ '<leader>zz', '<cmd>ZenMode<cr>', desc = 'Toggle zen mode' },
|
||||
},
|
||||
},
|
||||
-- Prismatic line decorations
|
||||
{
|
||||
'mvllow/modes.nvim',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
tag = 'v0.2.0',
|
||||
config = function()
|
||||
require('modes').setup({
|
||||
|
||||
colors = {
|
||||
visual = '#f5c359',
|
||||
delete = '#c75c6a',
|
||||
copy = '#78ccc5',
|
||||
insert = '#c5739a',
|
||||
},
|
||||
line_opacity = 0.15,
|
||||
set_cursor = true,
|
||||
set_cursorline = true,
|
||||
set_number = true,
|
||||
ignore_filetypes = { 'NvimTree', 'TelescopePrompt' },
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- Make editing big files faster
|
||||
{
|
||||
'LunarVim/bigfile.nvim',
|
||||
event = { 'BufEnter', 'WinEnter' },
|
||||
opts = {
|
||||
-- Disables LSP/treesitter, etc for files above 5000 lives (even if they have really long lines)
|
||||
pattern = function(bufnr, filesize_mib)
|
||||
if filesize_mib >= 2 then
|
||||
return true
|
||||
end
|
||||
-- you can't use `nvim_buf_line_count` because this runs on BufReadPre
|
||||
local file_contents = vim.fn.readfile(vim.api.nvim_buf_get_name(bufnr))
|
||||
local file_length = #file_contents
|
||||
if file_length > 5000 then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end,
|
||||
},
|
||||
},
|
||||
-- url-opener
|
||||
{
|
||||
'sontungexpt/url-open',
|
||||
event = { 'BufEnter', 'WinEnter' },
|
||||
cmd = 'URLOpenUnderCursor',
|
||||
config = function()
|
||||
local status_ok, url_open = pcall(require, 'url-open')
|
||||
if not status_ok then
|
||||
return
|
||||
end
|
||||
url_open.setup({})
|
||||
end,
|
||||
vim.keymap.set('n', 'gx', '<esc>:URLOpenUnderCursor<cr>'),
|
||||
},
|
||||
}
|
||||
Reference in new issue
Block a user