huge updates
This commit is contained in:
1 parent
ca26b00c27
commit
18bd0cb00b
49 files changed
+4210
-2140
No files matched your search
@@ -1,83 +0,0 @@
|
||||
-- Header
|
||||
local function header()
|
||||
local banner_small = {
|
||||
' ',
|
||||
' ',
|
||||
' ',
|
||||
' ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ',
|
||||
' ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ',
|
||||
' ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ',
|
||||
' ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ',
|
||||
' ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ',
|
||||
' ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ',
|
||||
' ',
|
||||
' With experience comes perspective ',
|
||||
}
|
||||
|
||||
return banner_small
|
||||
end
|
||||
-- Footer
|
||||
local function footer()
|
||||
local version = vim.version()
|
||||
local print_version = 'v' .. version.major .. '.' .. version.minor .. '.' .. version.patch
|
||||
local stats = require('lazy').stats()
|
||||
local plugins_count = stats.loaded .. '/' .. stats.count
|
||||
local ms = math.floor(stats.startuptime + 0.5)
|
||||
local time = vim.fn.strftime('%H:%M:%S')
|
||||
local date = vim.fn.strftime('%d.%m.%Y')
|
||||
local line1 = ' ' .. plugins_count .. ' plugins loaded in ' .. ms .. 'ms'
|
||||
local line2 = ' ' .. date .. ' ' .. time
|
||||
local line3 = ' ' .. print_version
|
||||
|
||||
-- Calculate padding for centering lines
|
||||
local line1_width = vim.fn.strdisplaywidth(line1)
|
||||
local line2_padding = math.max(0, math.floor((line1_width - vim.fn.strdisplaywidth(line2)) / 2))
|
||||
local line3_padding = math.max(0, math.floor((line1_width - vim.fn.strdisplaywidth(line3)) / 2))
|
||||
|
||||
-- Apply padding to lines
|
||||
line2 = string.rep(' ', line2_padding) .. line2
|
||||
line3 = string.rep(' ', line3_padding) .. line3
|
||||
|
||||
return {
|
||||
' ',
|
||||
line1,
|
||||
line2,
|
||||
line3,
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
'goolord/alpha-nvim',
|
||||
event = 'VimEnter',
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
config = function()
|
||||
local alpha = require('alpha')
|
||||
local dashboard = require('alpha.themes.dashboard')
|
||||
|
||||
dashboard.section.header.val = header()
|
||||
dashboard.section.footer.val = footer()
|
||||
|
||||
-- Menu
|
||||
-- TODO: Add projects and Frecency?
|
||||
dashboard.section.buttons.val = {
|
||||
dashboard.button('e', ' New file', ':ene <BAR> startinsert<CR>'),
|
||||
dashboard.button('f', ' Find files', '<cmd>Telescope find_files<CR>'),
|
||||
dashboard.button('t', ' Find text', '<cmd>Telescope live_grep<CR>'),
|
||||
dashboard.button('r', ' Recent files', '<cmd>Telescope oldfiles<CR>'),
|
||||
dashboard.button('p', ' Projects', '<cmd>Telescope projects<CR>'),
|
||||
dashboard.button('c', ' Config', '<cmd>e $MYVIMRC<CR>'),
|
||||
dashboard.button('l', ' Plugins', '<cmd>Lazy<CR>'),
|
||||
dashboard.button('q', ' Quit', '<cmd>qa<CR>'),
|
||||
}
|
||||
|
||||
alpha.setup(dashboard.config)
|
||||
-- Update the footer after all plugins are fully loaded
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'LazyVimStarted',
|
||||
callback = function()
|
||||
dashboard.section.footer.val = footer()
|
||||
pcall(vim.cmd, 'AlphaRedraw')
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
return {
|
||||
{
|
||||
{
|
||||
'windwp/nvim-autopairs',
|
||||
keys = {
|
||||
{ '<M-e>', mode = 'i' },
|
||||
{ '<CR>', mode = 'i' },
|
||||
{ '{', mode = 'i' },
|
||||
{ '[', mode = 'i' },
|
||||
{ '(', mode = 'i' },
|
||||
{ '"', mode = 'i' },
|
||||
{ "'", mode = 'i' },
|
||||
{ '`', mode = 'i' },
|
||||
{ '<', mode = 'i' },
|
||||
},
|
||||
lazy = true,
|
||||
init = function()
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'IntPairsComp',
|
||||
callback = function()
|
||||
require('cmp').event:on(
|
||||
'confirm_done',
|
||||
require('nvim-autopairs.completion.cmp').on_confirm_done()
|
||||
)
|
||||
end,
|
||||
once = true,
|
||||
})
|
||||
end,
|
||||
config = function()
|
||||
require('nvim-autopairs').setup({
|
||||
map_bs = false,
|
||||
check_ts = true,
|
||||
fast_wrap = { highlight = 'Question', highlight_grey = 'LspCodeLens' },
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
optional = true,
|
||||
opts = function()
|
||||
require('cmp').event:on('menu_opened', function()
|
||||
if vim.api.nvim_get_mode().mode:sub(1, 1) ~= 'c' then
|
||||
vim.api.nvim_exec_autocmds('User', { pattern = 'IntPairsComp', modeline = false })
|
||||
end
|
||||
end)
|
||||
end,
|
||||
},
|
||||
},
|
||||
{
|
||||
'altermo/ultimate-autopair.nvim',
|
||||
keys = {
|
||||
{ '<A-)>', mode = { 'i', 'c' } },
|
||||
{ '<BS>', mode = { 'i', 'c' } },
|
||||
{ '<Space>', mode = { 'i', 'c' } },
|
||||
{ '{', mode = 'c' },
|
||||
{ '[', mode = 'c' },
|
||||
{ '(', mode = 'c' },
|
||||
{ '"', mode = 'c' },
|
||||
{ "'", mode = 'c' },
|
||||
{ '`', mode = 'c' },
|
||||
},
|
||||
lazy = true,
|
||||
config = function()
|
||||
require('ultimate-autopair').setup({
|
||||
pair_map = true,
|
||||
cr = { enable = false },
|
||||
space2 = { enable = true },
|
||||
fastwarp = { enable = false },
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
return {
|
||||
'utilyre/barbecue.nvim',
|
||||
name = 'barbecue',
|
||||
version = '*',
|
||||
event = { 'BufReadPost', 'BufAdd', 'BufNewFile' },
|
||||
dependencies = {
|
||||
'SmiteshP/nvim-navic',
|
||||
'nvim-tree/nvim-web-devicons', -- optional dependency
|
||||
},
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
'<leader>bq',
|
||||
function()
|
||||
require('barbecue.ui').toggle()
|
||||
end,
|
||||
desc = 'toggle barbecue',
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('barbecue').setup({
|
||||
create_autocmd = false, -- prevent barbecue from updating itself automatically
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({
|
||||
'WinScrolled', -- or WinResized on NVIM-v0.9 and higher
|
||||
'BufWinEnter',
|
||||
'CursorHold',
|
||||
'InsertLeave',
|
||||
|
||||
-- include this if you have set `show_modified` to `true`
|
||||
-- "BufModifiedSet",
|
||||
}, {
|
||||
group = vim.api.nvim_create_augroup('barbecue.updater', {}),
|
||||
callback = function()
|
||||
require('barbecue.ui').update()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'Exafunction/codeium.vim',
|
||||
event = 'InsertEnter',
|
||||
config = function()
|
||||
local cmp = require('cmp')
|
||||
cmp.event:on('menu_opened', function()
|
||||
vim.g.codeium_manual = true
|
||||
vim.fn['codeium#Clear']()
|
||||
end)
|
||||
cmp.event:on('menu_closed', function()
|
||||
vim.g.codeium_manual = false
|
||||
vim.fn['codeium#Complete']()
|
||||
end)
|
||||
|
||||
vim.g.codeium_filetypes = {
|
||||
TelescopePrompt = false,
|
||||
DressingInput = false,
|
||||
['neo-tree-popup'] = false,
|
||||
['dap-repl'] = false,
|
||||
}
|
||||
|
||||
local opts = { expr = true, silent = true }
|
||||
vim.g.codeium_disable_bindings = 1
|
||||
|
||||
vim.keymap.set('i', '<M-CR>', function()
|
||||
return vim.fn['codeium#Accept']()
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('n', '<leader>ch', function()
|
||||
return vim.fn['codeium#Chat']()
|
||||
end, { desc = 'Chat with IA (Codeium)' })
|
||||
|
||||
vim.keymap.set('i', '<M-]>', function()
|
||||
return vim.fn['codeium#CycleCompletions'](1)
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('i', '<M-[>', function()
|
||||
return vim.fn['codeium#CycleCompletions'](-1)
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('i', '<M-c>', function()
|
||||
return vim.fn['codeium#Clear']()
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('n', '<leader>cI', '<cmd>CodeiumToggle<cr>', { desc = 'Toggle IA (Codeium)' })
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,211 @@
|
||||
return {
|
||||
{
|
||||
'max397574/better-escape.nvim',
|
||||
event = 'InsertEnter',
|
||||
opts = {
|
||||
k = function()
|
||||
vim.api.nvim_input('<esc>')
|
||||
local current_line = vim.api.nvim_get_current_line()
|
||||
if current_line:match('^%s+j$') then
|
||||
vim.schedule(function()
|
||||
vim.api.nvim_set_current_line('')
|
||||
end)
|
||||
end
|
||||
end,
|
||||
},
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
{
|
||||
'altermo/ultimate-autopair.nvim',
|
||||
event = { 'InsertEnter', 'CmdlineEnter' },
|
||||
branch = 'v0.6', --recommended as each new version will have breaking changes
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = { 'InsertEnter' },
|
||||
dependencies = {
|
||||
-- autocomplete plugins
|
||||
'hrsh7th/cmp-buffer',
|
||||
'hrsh7th/cmp-path',
|
||||
'hrsh7th/cmp-cmdline',
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-nvim-lua',
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
-- "hrsh7th/cmp-nvim-lsp-signature-help",
|
||||
-- "hrsh7th/cmp-calc",
|
||||
|
||||
-- vscode like icons to autocomplete list
|
||||
'onsails/lspkind.nvim',
|
||||
-- snippet plugin
|
||||
{ 'L3MON4D3/LuaSnip', event = { 'BufReadPost', 'BufNewFile' } },
|
||||
{ 'rafamadriz/friendly-snippets', event = { 'BufReadPost', 'BufNewFile' } },
|
||||
},
|
||||
config = function()
|
||||
require('configs.cmp')
|
||||
end,
|
||||
},
|
||||
{
|
||||
'Exafunction/codeium.vim',
|
||||
event = 'InsertEnter',
|
||||
config = function()
|
||||
local cmp = require('cmp')
|
||||
cmp.event:on('menu_opened', function()
|
||||
vim.g.codeium_manual = true
|
||||
vim.fn['codeium#Clear']()
|
||||
end)
|
||||
cmp.event:on('menu_closed', function()
|
||||
vim.g.codeium_manual = false
|
||||
vim.fn['codeium#Complete']()
|
||||
end)
|
||||
|
||||
vim.g.codeium_filetypes = {
|
||||
TelescopePrompt = false,
|
||||
DressingInput = false,
|
||||
['neo-tree-popup'] = false,
|
||||
['dap-repl'] = false,
|
||||
}
|
||||
|
||||
local opts = { expr = true, silent = true }
|
||||
vim.g.codeium_disable_bindings = 1
|
||||
|
||||
vim.keymap.set('i', '<M-CR>', function()
|
||||
return vim.fn['codeium#Accept']()
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('n', '<leader>ch', function()
|
||||
return vim.fn['codeium#Chat']()
|
||||
end, { desc = 'Chat with IA (Codeium)' })
|
||||
|
||||
vim.keymap.set('i', '<M-]>', function()
|
||||
return vim.fn['codeium#CycleCompletions'](1)
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('i', '<M-[>', function()
|
||||
return vim.fn['codeium#CycleCompletions'](-1)
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('i', '<M-c>', function()
|
||||
return vim.fn['codeium#Clear']()
|
||||
end, opts)
|
||||
|
||||
vim.keymap.set('n', '<leader>cI', '<cmd>CodeiumToggle<cr>', { desc = 'Toggle IA (Codeium)' })
|
||||
end,
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
{
|
||||
'NStefan002/screenkey.nvim',
|
||||
cmd = 'Screenkey',
|
||||
version = '*',
|
||||
vim.keymap.set('n', '<leader>kt', '<cmd>Screenkey<CR>', { desc = 'Toggle keys' }),
|
||||
config = function()
|
||||
require('screenkey').setup({
|
||||
win_opts = {
|
||||
relative = 'editor',
|
||||
anchor = 'SE',
|
||||
width = 40,
|
||||
height = 1,
|
||||
border = 'single',
|
||||
},
|
||||
compress_after = 3,
|
||||
clear_after = 3,
|
||||
disable = {
|
||||
filetypes = {}, -- for example: "toggleterm"
|
||||
buftypes = {}, -- for example: "terminal"
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'gbprod/yanky.nvim',
|
||||
event = 'BufReadPost',
|
||||
keys = {
|
||||
{ '<C-n>', '<Plug>(YankyCycleForward)' },
|
||||
{ '<C-p>', '<Plug>(YankyCycleBackward)' },
|
||||
{
|
||||
'<leader>yp',
|
||||
function()
|
||||
require('telescope').extensions.yank_history.yank_history({})
|
||||
end,
|
||||
desc = 'Open Yank History',
|
||||
},
|
||||
{ 'y', '<Plug>(YankyYank)', mode = { 'n', 'x' }, desc = 'Yank text' },
|
||||
{ 'p', '<Plug>(YankyPutAfter)', mode = { 'n', 'x' }, desc = 'Put yanked text after cursor' },
|
||||
{ 'P', '<Plug>(YankyPutBefore)', mode = { 'n', 'x' }, desc = 'Put yanked text before cursor' },
|
||||
{ 'gp', '<Plug>(YankyGPutAfter)', mode = { 'n', 'x' }, desc = 'Put yanked text after selection' },
|
||||
{ 'gP', '<Plug>(YankyGPutBefore)', mode = { 'n', 'x' }, desc = 'Put yanked text before selection' },
|
||||
-- This is not plugin keymaps
|
||||
{ '<leader>yP', '<cmd>CopyAbsolutePath<cr>', desc = 'Absolute Path' },
|
||||
{ '<leader>ya', '<cmd>%y+<cr>', desc = 'Copy Whole File' },
|
||||
{ '<leader>yf', '<cmd>CopyFileName<cr>', desc = 'File Name' },
|
||||
{ '<leader>yg', '<cmd>lua require"gitlinker".get_buf_range_url()<cr>', desc = 'Copy Git URL' },
|
||||
{ '<leader>yp', '<cmd>CopyRelativePath<cr>', desc = 'Relative Path' },
|
||||
},
|
||||
opts = {
|
||||
highlight = {
|
||||
timer = 150,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
{
|
||||
'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' },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'm-demare/hlargs.nvim',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
return {
|
||||
'willothy/nvim-cokeline',
|
||||
event = 'UIEnter',
|
||||
config = function()
|
||||
local get_hex = require('cokeline.hlgroups').get_hl_attr
|
||||
|
||||
local yellow = vim.g.terminal_color_3
|
||||
|
||||
require('cokeline').setup({
|
||||
default_hl = {
|
||||
fg = function(buffer)
|
||||
return buffer.is_focused and get_hex('Normal', 'fg') or get_hex('Comment', 'fg')
|
||||
end,
|
||||
bg = function()
|
||||
return get_hex('ColorColumn', 'bg')
|
||||
end,
|
||||
},
|
||||
|
||||
sidebar = {
|
||||
filetype = { 'NvimTree', 'neo-tree' },
|
||||
components = {
|
||||
{
|
||||
text = function(buf)
|
||||
-- Center the text by adding padding spaces
|
||||
local total_width = vim.api.nvim_win_get_width(0)
|
||||
local padding = math.floor((total_width - #buf.filetype) / 2)
|
||||
return string.rep(' ', padding) .. buf.filetype .. string.rep(' ', padding)
|
||||
end,
|
||||
fg = yellow,
|
||||
bg = function()
|
||||
return get_hex('NvimTreeNormal', 'bg')
|
||||
end,
|
||||
bold = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
components = {
|
||||
{
|
||||
text = function(buffer)
|
||||
return (buffer.index ~= 1) and '▏' or ''
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = ' ',
|
||||
},
|
||||
{
|
||||
text = function(buffer)
|
||||
return buffer.devicon.icon
|
||||
end,
|
||||
fg = function(buffer)
|
||||
return buffer.devicon.color
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = ' ',
|
||||
},
|
||||
{
|
||||
text = function(buffer)
|
||||
return buffer.filename .. ' '
|
||||
end,
|
||||
bold = function(buffer)
|
||||
return buffer.is_focused
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = '',
|
||||
on_click = function(_, _, _, _, buffer)
|
||||
buffer:delete()
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = ' ',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
return {
|
||||
{
|
||||
'bluz71/vim-moonfly-colors',
|
||||
name = 'moonfly',
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('moonfly').custom_colors({
|
||||
bg = '#000000',
|
||||
})
|
||||
vim.cmd([[colorscheme moonfly]])
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
-- configure autocomplete
|
||||
return {
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = { 'InsertEnter' },
|
||||
dependencies = {
|
||||
-- autocomplete plugins
|
||||
'hrsh7th/cmp-buffer',
|
||||
'hrsh7th/cmp-path',
|
||||
'hrsh7th/cmp-cmdline',
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-nvim-lua',
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
-- "hrsh7th/cmp-nvim-lsp-signature-help",
|
||||
-- "hrsh7th/cmp-calc",
|
||||
|
||||
-- vscode like icons to autocomplete list
|
||||
'onsails/lspkind.nvim',
|
||||
-- snippet plugin
|
||||
{ 'L3MON4D3/LuaSnip', event = { 'BufReadPost', 'BufNewFile' } },
|
||||
{ 'rafamadriz/friendly-snippets', event = { 'BufReadPost', 'BufNewFile' } },
|
||||
},
|
||||
config = function()
|
||||
local cmp = require('cmp')
|
||||
local luasnip = require('luasnip')
|
||||
require('luasnip/loaders/from_vscode').lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
keyword_length = 1,
|
||||
completeopt = 'menu,menuone',
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
formatting = {
|
||||
fields = { 'kind', 'abbr', 'menu' },
|
||||
format = function(entry, vim_item)
|
||||
local kind = require('lspkind').cmp_format({ mode = 'symbol_text', maxwidth = 50 })(entry, vim_item)
|
||||
local strings = vim.split(kind.kind, '%s', { trimempty = true })
|
||||
kind.kind = ' ' .. (strings[1] or '') .. ' '
|
||||
kind.menu = ' (' .. (strings[2] or '') .. ')'
|
||||
|
||||
return kind
|
||||
end,
|
||||
},
|
||||
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
['<Tab>'] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
['<S-Tab>'] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
['<C-k>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-j>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(), -- show completion suggestions
|
||||
['<C-e>'] = cmp.mapping.abort(), -- close completion window
|
||||
['<Esc>'] = cmp.mapping.close(),
|
||||
['<CR>'] = cmp.mapping.confirm({
|
||||
behavior = cmp.ConfirmBehavior.Insert,
|
||||
select = true,
|
||||
}),
|
||||
},
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'cmdline' },
|
||||
},
|
||||
}),
|
||||
cmp.setup.cmdline('/', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'buffer' },
|
||||
},
|
||||
}),
|
||||
-- sources for autocompletion
|
||||
sources = {
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' }, -- snippets
|
||||
{ name = 'buffer' }, -- text within current buffer
|
||||
{ name = 'path' }, -- file system paths
|
||||
{ name = 'codeium' }, -- AI for autocompletion
|
||||
-- { name = "nvim_lsp_signature_help" },
|
||||
-- { name = "calc" }, --for maths calculations
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
return {
|
||||
{
|
||||
'mfussenegger/nvim-dap',
|
||||
dependencies = {
|
||||
'rcarriga/nvim-dap-ui',
|
||||
},
|
||||
cmd = { 'DapUIToggle', 'DapToggleRepl', 'DapToggleBreakpoint' },
|
||||
keys = {
|
||||
{ '<leader>bO', '<cmd>DapStepOut<cr>', desc = 'Out' },
|
||||
{ '<leader>bR', '<cmd>DapRestartFrame<cr>', desc = 'Restart Frame' },
|
||||
{ '<leader>bb', '<cmd>DapToggleBreakpoint<cr>', desc = 'Breakpoint' },
|
||||
{ '<leader>bc', '<cmd>DapContinue<cr>', desc = 'Continue' },
|
||||
{ '<leader>bi', '<cmd>DapStepInto<cr>', desc = 'Into' },
|
||||
{ '<leader>bl', "<cmd>lua require'dap'.run_last()<cr>", desc = 'Last' },
|
||||
{ '<leader>bo', '<cmd>DapStepOver<cr>', desc = 'Over' },
|
||||
{ '<leader>br', '<cmd>DapToggleRepl<cr>', desc = 'Repl' },
|
||||
{ '<leader>bt', '<cmd>DapUIToggle<cr>', desc = 'Debugger' },
|
||||
{ '<leader>bx', '<cmd>DapTerminate<cr>', desc = 'Exit' },
|
||||
},
|
||||
config = function()
|
||||
local dap = require('dap')
|
||||
local dapui = require('dapui')
|
||||
|
||||
dapui.setup({
|
||||
icons = { expanded = ' ', collapsed = ' ' },
|
||||
mappings = {
|
||||
expand = { '<CR>', '<2-LeftMouse>' },
|
||||
open = 'o',
|
||||
remove = 'd',
|
||||
edit = 'e',
|
||||
repl = 'r',
|
||||
toggle = 't',
|
||||
},
|
||||
expand_lines = vim.fn.has('nvim-0.7'),
|
||||
layouts = {
|
||||
{
|
||||
elements = {
|
||||
{ id = 'scopes', size = 0.25 },
|
||||
'breakpoints',
|
||||
'stacks',
|
||||
'watches',
|
||||
},
|
||||
size = 40,
|
||||
position = 'right',
|
||||
},
|
||||
{
|
||||
elements = {
|
||||
'repl',
|
||||
'console',
|
||||
},
|
||||
size = 0.25,
|
||||
position = 'bottom',
|
||||
},
|
||||
},
|
||||
floating = {
|
||||
max_height = nil,
|
||||
max_width = nil,
|
||||
border = 'rounded',
|
||||
mappings = {
|
||||
close = { 'q', '<Esc>' },
|
||||
},
|
||||
},
|
||||
windows = { indent = 1 },
|
||||
render = {
|
||||
max_type_length = nil,
|
||||
},
|
||||
})
|
||||
|
||||
vim.fn.sign_define(
|
||||
'DapBreakpoint',
|
||||
{ text = ' ', texthl = 'DiagnosticSignError', linehl = '', numhl = '' }
|
||||
)
|
||||
|
||||
dap.listeners.after.event_initialized['dapui_config'] = function()
|
||||
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
|
||||
|
||||
dap.adapters.python = {
|
||||
type = 'executable',
|
||||
command = '/usr/bin/python',
|
||||
args = { '-m', 'debugpy.adapter' },
|
||||
}
|
||||
|
||||
dap.configurations.python = {
|
||||
{
|
||||
type = 'python',
|
||||
request = 'launch',
|
||||
name = 'Launch file',
|
||||
|
||||
program = '${file}',
|
||||
pythonPath = function()
|
||||
local cwd = vim.fn.getcwd()
|
||||
if vim.fn.executable(cwd .. '/venv/bin/python') == 1 then
|
||||
return cwd .. '/venv/bin/python'
|
||||
elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then
|
||||
return cwd .. '/.venv/bin/python'
|
||||
else
|
||||
return '/usr/bin/python'
|
||||
end
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
-- dap.adapters.ruby = {
|
||||
-- type = 'executable',
|
||||
-- command = 'bundle',
|
||||
-- args = { 'exec', 'readapt', 'stdio' },
|
||||
-- }
|
||||
|
||||
-- dap.configurations.ruby = {
|
||||
-- {
|
||||
-- type = 'ruby',
|
||||
-- request = 'launch',
|
||||
-- name = 'Rails',
|
||||
-- program = 'bundle',
|
||||
-- programArgs = { 'exec', 'rails', 's' },
|
||||
-- useBundler = true,
|
||||
-- },
|
||||
-- }
|
||||
|
||||
vim.api.nvim_create_user_command('DapUIToggle', function()
|
||||
require('dapui').toggle()
|
||||
end, {})
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,281 @@
|
||||
return {
|
||||
{
|
||||
'echasnovski/mini.files',
|
||||
version = false,
|
||||
keys = {
|
||||
{ '-', "<cmd>lua require('mini.files').open(vim.api.nvim_buf_get_name(0))<CR>", { silent = true } },
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvim-neo-tree/neo-tree.nvim',
|
||||
keys = {
|
||||
{ '<leader>ee', ':Neotree toggle float<CR>', silent = true, desc = 'Float File Explorer' },
|
||||
{ '<leader><tab>', ':Neotree toggle left<CR>', silent = true, desc = ' Left File Explorer' },
|
||||
},
|
||||
cmd = { 'Neotree' },
|
||||
opts = {
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
visible = true,
|
||||
show_hidden_count = true,
|
||||
hide_dotfiles = false,
|
||||
hide_gitignored = true,
|
||||
hide_by_name = {
|
||||
'.git',
|
||||
'.DS_Store',
|
||||
'thumbs.db',
|
||||
'.venv',
|
||||
},
|
||||
never_show = {},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
position = 'right',
|
||||
width = 35,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'folke/flash.nvim',
|
||||
event = 'VeryLazy',
|
||||
opts = {
|
||||
modes = {
|
||||
char = {
|
||||
jump_labels = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{
|
||||
'<leader>jN',
|
||||
"<cmd>lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})<cr>", mode = { "n", "v" },
|
||||
desc = 'Search Backward',
|
||||
},
|
||||
{ '<leader>jc', '*', desc = 'Word' },
|
||||
{ '<leader>jd', '<cmd>FlashDiagnostics<cr>', mode = { "n", "v" }, desc = 'Diagnostics' },
|
||||
{ '<leader>jf', '<cmd>Telescope jumplist<cr>', desc = 'Jumplist' },
|
||||
{ '<leader>jh', '<C-o>', desc = 'Backward' },
|
||||
{ '<leader>jj', "<cmd>lua require('flash').remote()<cr>", mode = { "n", "v" }, desc = 'Remote' },
|
||||
{ '<leader>jk', "<cmd>lua require('flash').treesitter()<cr>", mode = { "n", "v" }, desc = 'Treesitter' },
|
||||
{ '<leader>jl', '<C-i>', desc = 'Forward' },
|
||||
{
|
||||
'<leader>jn',
|
||||
"<cmd>lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})<cr>", mode = { "n", "v" },
|
||||
desc = 'Search Forward',
|
||||
},
|
||||
{ '<leader>jp', "<cmd>lua require('flash').jump({continue = true})<cr>", mode = { "n", "v" }, desc = 'Previous Jump' },
|
||||
{ '<leader>js', "<cmd>lua require('flash').jump()<cr>", mode = { "n", "v" }, desc = 'Search' },
|
||||
{ '<leader>jt', "<cmd>lua require('flash').treesitter_search()<cr>", mode = { "n", "v" }, desc = 'Remote Treesitter' },
|
||||
{
|
||||
'<leader>jw',
|
||||
'<cmd>lua require("flash").jump({ pattern = vim.fn.expand("<cword>")})<cr>', mode = { "n", "v" },
|
||||
desc = 'Current Word',
|
||||
},
|
||||
|
||||
},
|
||||
},
|
||||
{
|
||||
'folke/trouble.nvim',
|
||||
lazy = true,
|
||||
cmd = { 'Trouble', 'TroubleToggle', 'TroubleRefresh' },
|
||||
opts = {
|
||||
modes = {
|
||||
lsp = {
|
||||
win = { position = 'right' },
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>xx', '<cmd>Trouble diagnostics toggle<cr>', desc = 'Diagnostics (Trouble)' },
|
||||
{ '<leader>xX', '<cmd>Trouble diagnostics toggle filter.buf=0<cr>', desc = 'Buffer Diagnostics (Trouble)' },
|
||||
{ '<leader>xs', '<cmd>Trouble symbols toggle<cr>', desc = 'Symbols (Trouble)' },
|
||||
{ '<leader>xS', '<cmd>Trouble lsp toggle<cr>', desc = 'LSP references/definitions/... (Trouble)' },
|
||||
{ '<leader>xL', '<cmd>Trouble loclist toggle<cr>', desc = 'Location List (Trouble)' },
|
||||
{ '<leader>xQ', '<cmd>Trouble qflist toggle<cr>', desc = 'Quickfix List (Trouble)' },
|
||||
{
|
||||
'[q',
|
||||
function()
|
||||
if require('trouble').is_open() then
|
||||
require('trouble').prev({ skip_groups = true, jump = true })
|
||||
else
|
||||
local ok, err = pcall(vim.cmd.cprev)
|
||||
if not ok then
|
||||
vim.notify(err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end,
|
||||
desc = 'Previous Trouble/Quickfix Item',
|
||||
},
|
||||
{
|
||||
']q',
|
||||
function()
|
||||
if require('trouble').is_open() then
|
||||
require('trouble').next({ skip_groups = true, jump = true })
|
||||
else
|
||||
local ok, err = pcall(vim.cmd.cnext)
|
||||
if not ok then
|
||||
vim.notify(err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end,
|
||||
desc = 'Next Trouble/Quickfix Item',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvim-telescope/telescope.nvim',
|
||||
cmd = 'Telescope',
|
||||
version = false,
|
||||
lazy = true,
|
||||
dependencies = {
|
||||
{ 'nvim-tree/nvim-web-devicons' },
|
||||
{ 'nvim-telescope/telescope-fzf-native.nvim', build = 'zig' },
|
||||
{ 'nvim-telescope/telescope-ui-select.nvim' },
|
||||
{ 'nvim-telescope/telescope-symbols.nvim' },
|
||||
{ 'nvim-telescope/telescope-file-browser.nvim' },
|
||||
{ 'debugloop/telescope-undo.nvim' },
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>ff', '<cmd>Telescope find_files<cr>', desc = 'Find Files (CWD)' },
|
||||
{ '<leader>fg', '<cmd>Telescope live_grep<cr>', desc = 'Live Grep' },
|
||||
{ '<leader>fb', '<cmd>Telescope buffers<cr>', desc = 'Buffers' },
|
||||
{ '<leader>fh', '<cmd>Telescope help_tags<cr>', desc = 'Find Help' },
|
||||
{ '<leader>fo', '<cmd>Telescope oldfiles<cr>', desc = 'Old Recent Files' },
|
||||
{ '<leader>fm', '<cmd>Telescope marks<cr>', desc = 'Marks' },
|
||||
{ '<leader>fH', '<cmd>Telescope highlights<cr>', desc = 'Find Highlight Groups' },
|
||||
{ '<leader>fG', '<cmd>Telescope grep_string<cr>', desc = 'Grep String' },
|
||||
{ '<leader>kk', '<cmd>Telescope keymaps<cr>', desc = 'Keymaps' },
|
||||
{ '<leader>kc', '<cmd>Telescope commands<cr>', desc = 'Commands' },
|
||||
{ '<leader>kh', '<cmd>Telescope command_history<cr>', desc = 'Command History' },
|
||||
{ '<leader>ks', '<cmd>Telescope search_history<cr>', desc = 'Search History' },
|
||||
{ '<leader>fd', '<cmd>Telescope diagnostics<cr>', desc = 'Diagnostics' },
|
||||
{ '<leader>ef', '<cmd>Telescope file_browser<cr>', desc = 'File Browser' },
|
||||
{ '<leader>cr', '<cmd>Telescope reloader<cr>', desc = 'Reload Module' },
|
||||
{ '<leader>cn', '<cmd>Telescope notify<cr>', desc = 'Notifications' },
|
||||
{ '<leader>fu', '<cmd>Telescope undo<cr>', desc = 'Undo History' },
|
||||
{ '<leader>fb', '<cmd>Telescope buffers<cr>', desc = 'Buffers' },
|
||||
{ '<leader>fq', '<cmd>Telescope quickfix<cr>', desc = 'Quickfix' },
|
||||
{ '<leader>fs', '<cmd>Telescope current_buffer_fuzzy_find<cr>', desc = 'Fuzzy Find in File' },
|
||||
},
|
||||
|
||||
config = function()
|
||||
require('configs.telescope')
|
||||
end,
|
||||
},
|
||||
{
|
||||
'smjonas/inc-rename.nvim',
|
||||
cmd = 'IncRename',
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
|
||||
'akinsho/toggleterm.nvim',
|
||||
cmd = { 'ToggleTerm' },
|
||||
version = 'v2.*',
|
||||
keys = {
|
||||
{ '<leader>t1', '<cmd>1ToggleTerm<cr>', desc = 'Toggle Terminal', mode = 'n' },
|
||||
{ '<leader>t2', '<cmd>2ToggleTerm<cr>', desc = 'Toggle Terminal', mode = 'n' },
|
||||
},
|
||||
config = function()
|
||||
require('configs.toggleterm')
|
||||
end,
|
||||
},
|
||||
{
|
||||
'2kabhishek/termim.nvim',
|
||||
cmd = { 'Fterm', 'FTerm', 'Sterm', 'STerm', 'Vterm', 'VTerm' },
|
||||
keys = {
|
||||
{ '<leader>th', '<cmd>Sterm<cr>', desc = 'Horizontal Terminal' },
|
||||
{ '<leader>tv', '<cmd>Vterm<cr>', desc = 'Vertical Terminal' },
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvimdev/lspsaga.nvim',
|
||||
lazy = true,
|
||||
event = 'LspAttach',
|
||||
config = function()
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>lo',
|
||||
'<cmd>Lspsaga outline<cr>',
|
||||
{ desc = 'Lspsaga | Code Outline', silent = true }
|
||||
)
|
||||
require('lspsaga').setup({
|
||||
ui = {
|
||||
theme = 'round',
|
||||
border = 'rounded',
|
||||
winblend = 0,
|
||||
expand = '',
|
||||
collaspe = '',
|
||||
preview = ' ',
|
||||
code_action = ' ',
|
||||
diagnostic = ' ',
|
||||
hover = ' ',
|
||||
kind = {},
|
||||
},
|
||||
lightbulb = {
|
||||
enable = false,
|
||||
enable_in_insert = true,
|
||||
sign = true,
|
||||
sign_priority = 40,
|
||||
virtual_text = true,
|
||||
},
|
||||
symbol_in_winbar = {
|
||||
enable = false,
|
||||
separator = ' ',
|
||||
hide_keyword = true,
|
||||
show_file = true,
|
||||
folder_level = 0,
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
{
|
||||
'2kabhishek/tdo.nvim',
|
||||
dependencies = 'nvim-telescope/telescope.nvim',
|
||||
cmd = { 'Tdo', 'TdoEntry', 'TdoNote', 'TdoTodos', 'TdoToggle', 'TdoFind', 'TdoFiles' },
|
||||
keys = {
|
||||
{ '<leader>nd', '<cmd>Tdo<cr>', desc = "Today's Todo" },
|
||||
{ '<leader>ne', '<cmd>TdoEntry<cr>', desc = "Today's Entry" },
|
||||
{ '<leader>nf', '<cmd>TdoFiles<cr>', desc = 'All Notes' },
|
||||
{ '<leader>ng', '<cmd>TdoFind<cr>', desc = 'Find Notes' },
|
||||
{ '<leader>nh', '<cmd>Tdo -1<cr>', desc = "Yesterday's Todo" },
|
||||
{ '<leader>nl', '<cmd>Tdo 1<cr>', desc = "Tomorrow's Todo" },
|
||||
{ '<leader>nn', '<cmd>TdoNote<cr>', desc = 'New Note' },
|
||||
{ '<leader>nt', '<cmd>TdoTodos<cr>', desc = 'Incomplete Todos' },
|
||||
{ '<leader>nx', '<cmd>TdoToggle<cr>', desc = 'Toggle Todo' },
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
return {
|
||||
{
|
||||
'williamboman/mason.nvim',
|
||||
cmd = { 'Mason', 'MasonInstall', 'MasonInstallAll', 'MasonUpdate' },
|
||||
dependencies = {
|
||||
{ 'williamboman/mason-lspconfig.nvim', event = { 'BufReadPre', 'BufNewFile' } },
|
||||
{ 'WhoIsSethDaniel/mason-tool-installer.nvim' },
|
||||
{ 'zapling/mason-lock.nvim', cmd = { 'MasonLock', 'MasonLockRestore' }, opts = {} },
|
||||
},
|
||||
config = function()
|
||||
require('mason').setup()
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvimtools/none-ls.nvim', -- configure formatters & linters
|
||||
event = { 'BufRead', 'FileType' },
|
||||
dependencies = {
|
||||
'jay-babu/mason-null-ls.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('configs.none-ls')
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
return {
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
event = { 'BufReadPost', 'BufNewFile', 'BufWritePre' },
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
{ 'antosha417/nvim-lsp-file-operations', config = true },
|
||||
},
|
||||
config = function()
|
||||
require('configs.lsp')
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,169 +0,0 @@
|
||||
return {
|
||||
'neovim/nvim-lspconfig',
|
||||
event = { 'BufReadPost', 'FileType' },
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
{ 'antosha417/nvim-lsp-file-operations', config = true },
|
||||
},
|
||||
config = function()
|
||||
-- import lspconfig plugin
|
||||
local lspconfig = require('lspconfig')
|
||||
-- import cmp-nvim-lsp plugin
|
||||
local cmp_nvim_lsp = require('cmp_nvim_lsp')
|
||||
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
||||
callback = function(ev)
|
||||
-- Buffer local mappings.
|
||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||
local opts = { buffer = ev.buf, silent = true }
|
||||
|
||||
-- set keybinds
|
||||
opts.desc = 'Show LSP references'
|
||||
keymap.set('n', 'gR', '<cmd>Telescope lsp_references<CR>', opts) -- show definition, references
|
||||
|
||||
opts.desc = 'Go to declaration'
|
||||
keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- go to declaration
|
||||
|
||||
opts.desc = 'Show LSP definitions'
|
||||
keymap.set('n', 'gd', '<cmd>Telescope lsp_definitions<CR>', opts) -- show lsp definitions
|
||||
|
||||
opts.desc = 'Show LSP implementations'
|
||||
keymap.set('n', 'gi', '<cmd>Telescope lsp_implementations<CR>', opts) -- show lsp implementations
|
||||
|
||||
opts.desc = 'Show LSP type definitions'
|
||||
keymap.set('n', 'gt', '<cmd>Telescope lsp_type_definitions<CR>', opts) -- show lsp type definitions
|
||||
|
||||
opts.desc = 'See available code actions'
|
||||
keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
|
||||
|
||||
opts.desc = 'Smart rename'
|
||||
keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts) -- smart rename
|
||||
|
||||
opts.desc = 'Show buffer diagnostics'
|
||||
keymap.set('n', '<leader>D', '<cmd>Telescope diagnostics bufnr=0<CR>', opts) -- show diagnostics for file
|
||||
|
||||
opts.desc = 'Show line diagnostics'
|
||||
keymap.set('n', '<leader>d', vim.diagnostic.open_float, opts) -- show diagnostics for line
|
||||
|
||||
opts.desc = 'Show documentation for what is under cursor'
|
||||
keymap.set('n', 'K', vim.lsp.buf.hover, opts) -- show documentation for what is under cursor
|
||||
|
||||
opts.desc = 'Restart LSP'
|
||||
keymap.set('n', '<leader>rs', ':LspRestart<CR>', opts) -- mapping to restart lsp if necessary
|
||||
end,
|
||||
})
|
||||
|
||||
-- used to enable autocompletion (assign to every lsp server config)
|
||||
local capabilities = cmp_nvim_lsp.default_capabilities()
|
||||
|
||||
-- configure matlab server
|
||||
lspconfig['clangd'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
-- configure bash server
|
||||
lspconfig['bashls'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
-- configure html server
|
||||
lspconfig['html'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
-- configure typescript server with plugin
|
||||
lspconfig['tsserver'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- configure css server
|
||||
lspconfig['cssls'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- configure tailwindcss server
|
||||
lspconfig['tailwindcss'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- configure svelte server
|
||||
lspconfig['svelte'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = function(client, bufnr)
|
||||
on_attach(client, bufnr)
|
||||
|
||||
vim.api.nvim_create_autocmd('BufWritePost', {
|
||||
pattern = { '*.js', '*.ts' },
|
||||
callback = function(ctx)
|
||||
if client.name == 'svelte' then
|
||||
client.notify('$/onDidChangeTsOrJsFile', { uri = ctx.file })
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
})
|
||||
-- configure python server
|
||||
lspconfig['pyright'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- configure lua server (with special settings)
|
||||
lspconfig['lua_ls'].setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = { -- custom settings for lua
|
||||
Lua = {
|
||||
-- make the language server recognize "vim" global
|
||||
diagnostics = {
|
||||
globals = { 'vim' },
|
||||
},
|
||||
workspace = {
|
||||
-- make language server aware of runtime files
|
||||
library = {
|
||||
[vim.fn.expand('$VIMRUNTIME/lua')] = true,
|
||||
[vim.fn.stdpath('config') .. '/lua'] = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
local x = vim.diagnostic.severity
|
||||
local config = {
|
||||
-- Enable virtual text
|
||||
virtual_text = { -- or false for disable
|
||||
prefix = '', -- ■
|
||||
suffix = '',
|
||||
format = function(diagnostic)
|
||||
local prefix = ' '
|
||||
local suffix = ' '
|
||||
-- return full message with custom prefix & suffix
|
||||
return prefix .. diagnostic.message .. suffix
|
||||
end,
|
||||
},
|
||||
update_in_insert = true,
|
||||
signs = { text = { [x.ERROR] = '', [x.WARN] = '', [x.HINT] = '', [x.INFO] = '' } },
|
||||
underline = false,
|
||||
severity_sort = true,
|
||||
float = {
|
||||
focusable = false,
|
||||
style = 'minimal',
|
||||
border = 'rounded',
|
||||
source = 'always',
|
||||
header = '',
|
||||
prefix = '',
|
||||
},
|
||||
}
|
||||
|
||||
vim.diagnostic.config(config)
|
||||
-- add borders to lsp info window
|
||||
require('lspconfig.ui.windows').default_options.border = 'single'
|
||||
end,
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
return {
|
||||
'nvimdev/lspsaga.nvim',
|
||||
lazy = true,
|
||||
event = 'LspAttach',
|
||||
config = function()
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>ot',
|
||||
'<cmd>Lspsaga outline<cr>',
|
||||
{ desc = 'Lspsaga | Code Outline', silent = true }
|
||||
)
|
||||
require('lspsaga').setup({
|
||||
ui = {
|
||||
theme = 'round',
|
||||
border = 'rounded',
|
||||
winblend = 0,
|
||||
expand = '',
|
||||
collaspe = '',
|
||||
preview = ' ',
|
||||
code_action = ' ',
|
||||
diagnostic = ' ',
|
||||
hover = ' ',
|
||||
kind = {},
|
||||
},
|
||||
lightbulb = {
|
||||
enable = false,
|
||||
enable_in_insert = true,
|
||||
sign = true,
|
||||
sign_priority = 40,
|
||||
virtual_text = true,
|
||||
},
|
||||
symbol_in_winbar = {
|
||||
enable = false,
|
||||
separator = ' ',
|
||||
hide_keyword = true,
|
||||
show_file = true,
|
||||
folder_level = 0,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,210 +0,0 @@
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
event = 'UIEnter',
|
||||
config = function()
|
||||
-- Eviline config for lualine
|
||||
-- Author: shadmansaleh
|
||||
-- Credit: glepnir
|
||||
local lualine = require('lualine')
|
||||
|
||||
-- Color table for highlights
|
||||
-- stylua: ignore
|
||||
local colors = {
|
||||
bg = 'none',
|
||||
fg = '#bbc2cf',
|
||||
yellow = '#ECBE7B',
|
||||
cyan = '#008080',
|
||||
darkblue = '#081633',
|
||||
green = '#98be65',
|
||||
orange = '#FF8800',
|
||||
violet = '#a9a1e1',
|
||||
magenta = '#c678dd',
|
||||
blue = '#51afef',
|
||||
red = '#ec5f67',
|
||||
}
|
||||
|
||||
local conditions = {
|
||||
buffer_not_empty = function()
|
||||
return vim.fn.empty(vim.fn.expand('%:t')) ~= 1
|
||||
end,
|
||||
hide_in_width = function()
|
||||
return vim.fn.winwidth(0) > 80
|
||||
end,
|
||||
check_git_workspace = function()
|
||||
local filepath = vim.fn.expand('%:p:h')
|
||||
local gitdir = vim.fn.finddir('.git', filepath .. ';')
|
||||
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
||||
end,
|
||||
}
|
||||
|
||||
-- Config
|
||||
local config = {
|
||||
options = {
|
||||
-- Disable sections and component separators
|
||||
component_separators = '',
|
||||
section_separators = '',
|
||||
disabled_filetypes = {
|
||||
'NeoTree',
|
||||
'NvimTree',
|
||||
'Outline',
|
||||
'alpha',
|
||||
},
|
||||
theme = {
|
||||
-- We are going to use lualine_c an lualine_x as left and
|
||||
-- right section. Both are highlighted by c theme . So we
|
||||
-- are just setting default looks o statusline
|
||||
normal = { c = { fg = colors.fg, bg = colors.bg } },
|
||||
inactive = { c = { fg = colors.fg, bg = colors.bg } },
|
||||
},
|
||||
},
|
||||
sections = {
|
||||
-- these are to remove the defaults
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
-- These will be filled later
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
},
|
||||
inactive_sections = {
|
||||
-- these are to remove the defaults
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
},
|
||||
}
|
||||
|
||||
-- Inserts a component in lualine_c at left section
|
||||
local function ins_left(component)
|
||||
table.insert(config.sections.lualine_c, component)
|
||||
end
|
||||
|
||||
-- Inserts a component in lualine_x at right section
|
||||
local function ins_right(component)
|
||||
table.insert(config.sections.lualine_x, component)
|
||||
end
|
||||
|
||||
ins_left({
|
||||
function()
|
||||
return '▊'
|
||||
end,
|
||||
color = { fg = colors.blue }, -- Sets highlighting of component
|
||||
padding = { left = 0, right = 1 }, -- We don't need space before this
|
||||
})
|
||||
|
||||
ins_left({
|
||||
-- mode component
|
||||
function()
|
||||
return ''
|
||||
end,
|
||||
color = function()
|
||||
-- auto change color according to neovims mode
|
||||
local mode_color = {
|
||||
n = colors.red,
|
||||
i = colors.green,
|
||||
v = colors.blue,
|
||||
['␖'] = colors.blue,
|
||||
V = colors.blue,
|
||||
c = colors.magenta,
|
||||
no = colors.red,
|
||||
s = colors.orange,
|
||||
S = colors.orange,
|
||||
['␓'] = colors.orange,
|
||||
ic = colors.yellow,
|
||||
R = colors.violet,
|
||||
Rv = colors.violet,
|
||||
cv = colors.red,
|
||||
ce = colors.red,
|
||||
r = colors.cyan,
|
||||
rm = colors.cyan,
|
||||
['r?'] = colors.cyan,
|
||||
['!'] = colors.red,
|
||||
t = colors.red,
|
||||
}
|
||||
return { fg = mode_color[vim.fn.mode()] }
|
||||
end,
|
||||
padding = { right = 1 },
|
||||
})
|
||||
|
||||
ins_left({
|
||||
'filename',
|
||||
cond = conditions.buffer_not_empty,
|
||||
color = { fg = colors.magenta, gui = 'bold' },
|
||||
})
|
||||
|
||||
ins_left({
|
||||
'diagnostics',
|
||||
sources = { 'nvim_diagnostic' },
|
||||
symbols = { error = ' ', warn = ' ', info = ' ' },
|
||||
diagnostics_color = {
|
||||
error = { fg = colors.red },
|
||||
warn = { fg = colors.yellow },
|
||||
info = { fg = colors.cyan },
|
||||
},
|
||||
})
|
||||
|
||||
-- Insert mid section. You can make any number of sections in neovim :)
|
||||
-- for lualine it's any number greater then 2
|
||||
ins_left({
|
||||
function()
|
||||
return '%='
|
||||
end,
|
||||
})
|
||||
|
||||
ins_left({
|
||||
-- Lsp server name .
|
||||
function()
|
||||
local msg = 'No Active Lsp'
|
||||
local clients = vim.lsp.get_clients()
|
||||
if next(clients) == nil then
|
||||
return msg
|
||||
end
|
||||
for _, client in ipairs(clients) do
|
||||
local filetypes = client.config.filetypes
|
||||
if filetypes and vim.fn.index(filetypes) ~= -1 then
|
||||
return client.name
|
||||
end
|
||||
end
|
||||
return msg
|
||||
end,
|
||||
icon = ' LSP:',
|
||||
color = { fg = '#ffffff', gui = 'bold' },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
'diff',
|
||||
-- Is it me or the symbol for modified us really weird
|
||||
symbols = { added = ' ', modified = ' ', removed = ' ' },
|
||||
diff_color = {
|
||||
added = { fg = colors.green },
|
||||
modified = { fg = colors.orange },
|
||||
removed = { fg = colors.red },
|
||||
},
|
||||
cond = conditions.hide_in_width,
|
||||
})
|
||||
|
||||
ins_right({
|
||||
'branch',
|
||||
icon = '',
|
||||
color = { fg = colors.violet, gui = 'bold' },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
function()
|
||||
return '▊'
|
||||
end,
|
||||
color = { fg = colors.blue },
|
||||
padding = { left = 1 },
|
||||
})
|
||||
|
||||
-- Now don't forget to initialize lualine
|
||||
lualine.setup(config)
|
||||
end,
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
return {
|
||||
'williamboman/mason.nvim',
|
||||
cmd = { 'Mason', 'MasonInstall', 'MasonInstallAll', 'MasonUpdate' },
|
||||
dependencies = {
|
||||
{ 'williamboman/mason-lspconfig.nvim', event = { 'BufReadPre', 'BufNewFile' } },
|
||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||
{ 'zapling/mason-lock.nvim', cmd = { 'MasonLock', 'MasonLockRestore' }, opts = {} },
|
||||
},
|
||||
config = function()
|
||||
local mason = require('mason')
|
||||
local mason_lspconfig = require('mason-lspconfig')
|
||||
local mason_tool_installer = require('mason-tool-installer')
|
||||
|
||||
-- enable mason and configure icons
|
||||
mason.setup({
|
||||
ui = {
|
||||
border = 'rounded',
|
||||
icons = {
|
||||
package_installed = '✓',
|
||||
package_pending = '➜',
|
||||
package_uninstalled = '✗',
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
mason_lspconfig.setup({
|
||||
-- list of servers for mason to install
|
||||
ensure_installed = {
|
||||
'tsserver',
|
||||
'html',
|
||||
'cssls',
|
||||
'tailwindcss',
|
||||
'svelte',
|
||||
'lua_ls',
|
||||
'pyright',
|
||||
'jdtls',
|
||||
'bashls',
|
||||
'jsonls',
|
||||
'clangd',
|
||||
},
|
||||
})
|
||||
|
||||
mason_tool_installer.setup({
|
||||
ensure_installed = {
|
||||
'prettier', -- prettier formatter
|
||||
'biome', -- js formatter
|
||||
'stylua', -- lua formatter
|
||||
'black', -- python formatter
|
||||
'isort', -- python formatter
|
||||
'clang-format', -- c/c++ formatter
|
||||
'luacheck',
|
||||
'pylint',
|
||||
'eslint_d',
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -5,15 +5,9 @@ return {
|
||||
version = false,
|
||||
config = function()
|
||||
require('mini.comment').setup({})
|
||||
require('mini.ai').setup({})
|
||||
require('mini.cursorword').setup()
|
||||
-- require("mini.tabline").setup()
|
||||
local statusline = require('mini.statusline')
|
||||
statusline.setup({ use_icons = true })
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
statusline.section_location = function()
|
||||
return '%2l:%-2v'
|
||||
end
|
||||
|
||||
require('mini.bracketed').setup({
|
||||
file = { suffix = '' },
|
||||
window = { suffix = '' },
|
||||
@@ -31,6 +25,9 @@ return {
|
||||
highlight = 'gsh', -- Highlight surrounding
|
||||
update_n_lines = 'gsn', -- Update `n_lines`
|
||||
},
|
||||
keys = {
|
||||
{ 'gz', '', desc = '+surround' },
|
||||
},
|
||||
})
|
||||
require('mini.pairs').setup({
|
||||
odes = { command = true },
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
return {
|
||||
'nvim-neo-tree/neo-tree.nvim',
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
'MunifTanjim/nui.nvim',
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>ee', ':Neotree toggle float<CR>', silent = true, desc = 'Float File Explorer' },
|
||||
{ '<leader><tab>', ':Neotree toggle left<CR>', silent = true, desc = 'Left File Explorer' },
|
||||
},
|
||||
cmd = { 'Neotree' },
|
||||
opts = {
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
visible = true,
|
||||
show_hidden_count = true,
|
||||
hide_dotfiles = false,
|
||||
hide_gitignored = true,
|
||||
hide_by_name = {
|
||||
'.git',
|
||||
'.DS_Store',
|
||||
'thumbs.db',
|
||||
'.venv',
|
||||
},
|
||||
never_show = {},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
position = 'right',
|
||||
width = 35,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
return {
|
||||
'nvim-neotest/neotest',
|
||||
dependencies = { 'haydenmeade/neotest-jest', 'marilari88/neotest-vitest' },
|
||||
cmd = 'Neotest',
|
||||
config = function()
|
||||
require('neotest').setup({
|
||||
status = { virtual_text = true },
|
||||
output = { open_on_run = true },
|
||||
adapters = {
|
||||
require('neotest-vitest'),
|
||||
require('neotest-jest')({
|
||||
jestCommand = 'npm test --',
|
||||
jestConfigFile = 'custom.jest.config.ts',
|
||||
env = { CI = true },
|
||||
cwd = function(path)
|
||||
return vim.fn.getcwd()
|
||||
end,
|
||||
}),
|
||||
},
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
'<leader>tw',
|
||||
function()
|
||||
require('neotest').run.run(vim.fn.expand('%'))
|
||||
end,
|
||||
desc = 'Run File',
|
||||
},
|
||||
{
|
||||
'<leader>tT',
|
||||
function()
|
||||
require('neotest').run.run(vim.loop.cwd())
|
||||
end,
|
||||
desc = 'Run All Test Files',
|
||||
},
|
||||
{
|
||||
'<leader>tr',
|
||||
function()
|
||||
require('neotest').run.run()
|
||||
end,
|
||||
desc = 'Run Nearest',
|
||||
},
|
||||
{
|
||||
'<leader>ts',
|
||||
function()
|
||||
require('neotest').summary.toggle()
|
||||
end,
|
||||
desc = 'Toggle Summary',
|
||||
},
|
||||
{
|
||||
'<leader>to',
|
||||
function()
|
||||
require('neotest').output.open({ enter = true, auto_close = true })
|
||||
end,
|
||||
desc = 'Show Output',
|
||||
},
|
||||
{
|
||||
'<leader>tO',
|
||||
function()
|
||||
require('neotest').output_panel.toggle()
|
||||
end,
|
||||
desc = 'Toggle Output Panel',
|
||||
},
|
||||
{
|
||||
'<leader>tS',
|
||||
function()
|
||||
require('neotest').run.stop()
|
||||
end,
|
||||
desc = 'Stop',
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
-- override nvim ui
|
||||
return {
|
||||
'folke/noice.nvim',
|
||||
event = 'UIEnter',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'MunifTanjim/nui.nvim',
|
||||
'rcarriga/nvim-notify',
|
||||
},
|
||||
opts = {
|
||||
cmdline = {
|
||||
view = 'cmdline',
|
||||
format = {
|
||||
cmdline = { icon = '▍' },
|
||||
substitute = {
|
||||
pattern = '^:%%?s/',
|
||||
icon = ' ',
|
||||
ft = 'regex',
|
||||
opts = { border = { text = { top = ' sub (old/new/) ' } } },
|
||||
},
|
||||
input = { view = 'cmdline_input', icon = '█' },
|
||||
},
|
||||
},
|
||||
routes = {
|
||||
{
|
||||
view = 'notify',
|
||||
filter = { event = 'msg_showmode' },
|
||||
},
|
||||
{
|
||||
filter = {
|
||||
event = 'msg_show',
|
||||
kind = '',
|
||||
find = 'written',
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
},
|
||||
lsp = {
|
||||
progress = {
|
||||
enabled = false,
|
||||
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
|
||||
-- See the section on formatting for more details on how to customize.
|
||||
format = 'lsp_progress',
|
||||
format_done = 'lsp_progress_done',
|
||||
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||||
view = 'mini',
|
||||
},
|
||||
override = {
|
||||
-- override the default lsp markdown formatter with Noice
|
||||
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
|
||||
-- override the lsp markdown formatter with Noice
|
||||
['vim.lsp.util.stylize_markdown'] = true,
|
||||
-- override cmp documentation with Noice (needs the other options to work)
|
||||
['cmp.entry.get_documentation'] = true,
|
||||
},
|
||||
hover = {
|
||||
enabled = true,
|
||||
silent = false, -- set to true to not show a message if hover is not available
|
||||
view = nil, -- when nil, use defaults from documentation
|
||||
opts = {}, -- merged with defaults from documentation
|
||||
},
|
||||
signature = {
|
||||
enabled = false,
|
||||
auto_open = {
|
||||
enabled = true,
|
||||
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
|
||||
luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes
|
||||
throttle = 50, -- Debounce lsp signature help request by 50ms
|
||||
},
|
||||
view = nil, -- when nil, use defaults from documentation
|
||||
opts = {}, -- merged with defaults from documentation
|
||||
},
|
||||
message = {
|
||||
-- Messages shown by lsp servers
|
||||
enabled = true,
|
||||
view = 'notify',
|
||||
opts = {},
|
||||
},
|
||||
-- defaults for hover and signature help
|
||||
documentation = {
|
||||
view = 'hover',
|
||||
opts = {
|
||||
lang = 'markdown',
|
||||
replace = true,
|
||||
render = 'plain',
|
||||
format = { '{message}' },
|
||||
win_options = { concealcursor = 'n', conceallevel = 3 },
|
||||
},
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
-- you can enable a preset by setting it to true, or a table that will override the preset config
|
||||
-- you can also add custom presets that you can enable/disable with enabled=true
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
command_palette = false, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = true, -- add a border to hover docs and signature help
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
return {
|
||||
'nvimtools/none-ls.nvim', -- configure formatters & linters
|
||||
event = { 'BufRead', 'FileType' },
|
||||
dependencies = {
|
||||
'jay-babu/mason-null-ls.nvim',
|
||||
},
|
||||
config = function()
|
||||
local mason_null_ls = require('mason-null-ls')
|
||||
|
||||
local null_ls = require('null-ls')
|
||||
|
||||
local null_ls_utils = require('null-ls.utils')
|
||||
|
||||
mason_null_ls.setup({
|
||||
ensure_installed = {
|
||||
'prettier', -- prettier formatter
|
||||
'biome', -- js formatter
|
||||
'clang-format', -- c/c++ formatter
|
||||
'stylua', -- lua formatter
|
||||
'black', -- python formatter
|
||||
'pylint', -- python linter
|
||||
-- "eslint_d", -- js linter
|
||||
},
|
||||
})
|
||||
|
||||
-- for conciseness
|
||||
local formatting = null_ls.builtins.formatting -- to setup formatters
|
||||
local diagnostics = null_ls.builtins.diagnostics -- to setup linters
|
||||
|
||||
-- to setup format on save
|
||||
local augroup = vim.api.nvim_create_augroup('LspFormatting', {})
|
||||
|
||||
-- configure null_ls
|
||||
null_ls.setup({
|
||||
root_dir = null_ls_utils.root_pattern('.null-ls-root', 'Makefile', '.git', 'package.json'),
|
||||
sources = {
|
||||
formatting.prettier, -- js/ts formatter
|
||||
formatting.stylua, -- lua formatter
|
||||
formatting.isort,
|
||||
formatting.black,
|
||||
formatting.clang_format,
|
||||
diagnostics.pylint,
|
||||
-- diagnostics.eslint_d.with({ -- js/ts linter
|
||||
-- condition = function(utils)
|
||||
-- return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs
|
||||
-- end,
|
||||
-- }),
|
||||
},
|
||||
-- configure format on save
|
||||
on_attach = function(current_client, bufnr)
|
||||
if current_client.supports_method('textDocument/formatting') then
|
||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
vim.lsp.buf.format({
|
||||
filter = function(client)
|
||||
-- only use null-ls for formatting instead of lsp server
|
||||
return client.name == 'null-ls'
|
||||
end,
|
||||
bufnr = bufnr,
|
||||
})
|
||||
end,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
return {
|
||||
'mfussenegger/nvim-dap',
|
||||
dependencies = {
|
||||
'leoluz/nvim-dap-go',
|
||||
'rcarriga/nvim-dap-ui',
|
||||
'nvim-neotest/nvim-nio',
|
||||
},
|
||||
lazy = true,
|
||||
config = function()
|
||||
require('dap-go').setup()
|
||||
require('dapui').setup()
|
||||
local dap = require('dap')
|
||||
local keymap = vim.keymap
|
||||
local dapui = require('dapui')
|
||||
|
||||
keymap.set('n', '<leader>dt', dap.toggle_breakpoint, {})
|
||||
keymap.set('n', '<leader>dc', dap.continue, {})
|
||||
|
||||
dap.listeners.before.attach.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.launch.dapui_config = function()
|
||||
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,
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
return {
|
||||
{
|
||||
'folke/persistence.nvim',
|
||||
event = 'BufReadPre',
|
||||
opts = { options = vim.opt.sessionoptions:get() },
|
||||
keys = {
|
||||
{
|
||||
'<leader>ms',
|
||||
function()
|
||||
require('persistence').load()
|
||||
end,
|
||||
desc = 'Restore Session',
|
||||
},
|
||||
{
|
||||
'<leader>ml',
|
||||
function()
|
||||
require('persistence').load({ last = true })
|
||||
end,
|
||||
desc = 'Restore Last Session',
|
||||
},
|
||||
{
|
||||
'<leader>md',
|
||||
function()
|
||||
require('persistence').stop()
|
||||
end,
|
||||
desc = "Don't Save Current Session",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvim-lua/plenary.nvim',
|
||||
lazy = true,
|
||||
},
|
||||
{
|
||||
'iamcco/markdown-preview.nvim',
|
||||
build = 'cd app && yarn install',
|
||||
ft = { 'markdown' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>cm',
|
||||
'<cmd>MarkdownPreviewToggle<CR>',
|
||||
desc = 'toggle markdown preview',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvim-pack/nvim-spectre',
|
||||
build = false,
|
||||
cmd = 'Spectre',
|
||||
opts = { open_cmd = 'noswapfile vnew' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>mr',
|
||||
function()
|
||||
require('spectre').open()
|
||||
end,
|
||||
desc = 'Replace in Files (Spectre)',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'szw/vim-maximizer',
|
||||
|
||||
keys = {
|
||||
{ '<leader>mm', '<cmd>MaximizerToggle<CR>', desc = 'Maximize/minimize a split' },
|
||||
},
|
||||
},
|
||||
{
|
||||
'folke/zen-mode.nvim',
|
||||
cmd = { 'ZenMode' },
|
||||
opts = {},
|
||||
keys = {
|
||||
{ '<leader>wz', '<cmd>ZenMode<cr>', desc = 'Toggle zen mode' },
|
||||
},
|
||||
},
|
||||
{
|
||||
'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',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'creativenull/dotfyle-metadata.nvim',
|
||||
cmd = { 'DotfyleGenerate', 'DotfyleOpen' },
|
||||
},
|
||||
{
|
||||
'willothy/flatten.nvim',
|
||||
priority = 1001,
|
||||
opts = {
|
||||
window = {
|
||||
open = 'alternate',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'wakatime/vim-wakatime',
|
||||
lazy = false,
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
{
|
||||
'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,
|
||||
},
|
||||
},
|
||||
{
|
||||
'm4xshen/hardtime.nvim',
|
||||
config = function()
|
||||
require('hardtime').setup({ enabled = true })
|
||||
end,
|
||||
cmd = 'Hardtime',
|
||||
init = function()
|
||||
vim.keymap.set('n', '<leader>ch', '<cmd>HardtimeToggle<cr>', { desc = 'Toggle Hardtime' })
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,145 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'nvim-telescope/telescope.nvim',
|
||||
cmd = 'Telescope',
|
||||
version = false,
|
||||
lazy = true,
|
||||
dependencies = {
|
||||
{ 'nvim-lua/plenary.nvim' },
|
||||
{ 'nvim-tree/nvim-web-devicons' },
|
||||
{ 'nvim-telescope/telescope-fzf-native.nvim', build = 'zig' },
|
||||
{ 'nvim-telescope/telescope-ui-select.nvim' },
|
||||
{ 'nvim-telescope/telescope-file-browser.nvim' },
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
'<leader>sf',
|
||||
function()
|
||||
require('telescope.builtin').find_files()
|
||||
end,
|
||||
desc = 'Find File (CWD)',
|
||||
},
|
||||
{
|
||||
'<leader>sh',
|
||||
function()
|
||||
require('telescope.builtin').help_tags()
|
||||
end,
|
||||
desc = 'Find Help',
|
||||
},
|
||||
{
|
||||
'<leader>sH',
|
||||
function()
|
||||
require('telescope.builtin').highlights()
|
||||
end,
|
||||
desc = 'Find highlight groups',
|
||||
},
|
||||
{
|
||||
'<leader>sM',
|
||||
function()
|
||||
require('telescope.builtin').man_pages()
|
||||
end,
|
||||
desc = 'Map Pages',
|
||||
},
|
||||
{
|
||||
'<leader>so',
|
||||
function()
|
||||
require('telescope.builtin').oldfiles()
|
||||
end,
|
||||
desc = 'Open Recent File',
|
||||
},
|
||||
{
|
||||
'<leader>sg',
|
||||
function()
|
||||
require('telescope.builtin').live_grep()
|
||||
end,
|
||||
desc = 'Live Grep',
|
||||
},
|
||||
{
|
||||
'<leader>sw',
|
||||
function()
|
||||
require('telescope.builtin').grep_string()
|
||||
end,
|
||||
desc = 'Grep String',
|
||||
},
|
||||
{
|
||||
'<leader>sk',
|
||||
function()
|
||||
require('telescope.builtin').keymaps()
|
||||
end,
|
||||
desc = 'Keymaps',
|
||||
},
|
||||
{
|
||||
'<leader>sC',
|
||||
function()
|
||||
require('telescope.builtin').commands()
|
||||
end,
|
||||
desc = 'Commands',
|
||||
},
|
||||
{
|
||||
'<leader><leader>',
|
||||
function()
|
||||
require('telescope.builtin').buffers()
|
||||
end,
|
||||
desc = 'Buffers',
|
||||
},
|
||||
{
|
||||
'<leader>sd',
|
||||
function()
|
||||
require('telescope.builtin').diagnostics()
|
||||
end,
|
||||
desc = 'diagnostics',
|
||||
},
|
||||
{
|
||||
'<leader>sF',
|
||||
'<cmd>Telescope file_browser<CR>',
|
||||
desc = 'File Browser',
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local telescope = require('telescope')
|
||||
local fb_actions = require('telescope').extensions.file_browser.actions
|
||||
telescope.setup({
|
||||
file_ignore_patterns = { '%.git/.' },
|
||||
defaults = {
|
||||
preview = {
|
||||
treesitter = false,
|
||||
},
|
||||
},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = 'smart_case', -- or "ignore_case" or "respect_case"
|
||||
},
|
||||
file_browser = {
|
||||
theme = 'ivy',
|
||||
hijack_netrw = true,
|
||||
mapping = {
|
||||
['i'] = {
|
||||
['<A-c>'] = fb_actions.create,
|
||||
['<A-r>'] = fb_actions.rename,
|
||||
['<A-d>'] = fb_actions.remove,
|
||||
['<A-h>'] = fb_actions.toggle_hidden,
|
||||
},
|
||||
['n'] = {
|
||||
['<A-c>'] = fb_actions.create,
|
||||
['<A-r'] = fb_actions.rename,
|
||||
['<A-d'] = fb_actions.remove,
|
||||
['<A-h'] = fb_actions.toggle_hidden,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
borderchars = {
|
||||
prompt = { '─', '│', '─', '│', '╭', '╮', '╯', '╰' },
|
||||
results = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
|
||||
},
|
||||
})
|
||||
telescope.load_extension('ui-select')
|
||||
telescope.load_extension('file_browser')
|
||||
-- telescope.load_extension("refactoring")
|
||||
telescope.load_extension('notify')
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
local size = function()
|
||||
return vim.o.columns * 0.5
|
||||
end
|
||||
return {
|
||||
'akinsho/toggleterm.nvim',
|
||||
lazy = true,
|
||||
cmd = {
|
||||
'ToggleTerm',
|
||||
'ToggleTermSetName',
|
||||
'ToggleTermToggleAll',
|
||||
'ToggleTermSendVisualLines',
|
||||
'ToggleTermSendCurrentLine',
|
||||
'ToggleTermSendVisualSelection',
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>1', '<cmd>1ToggleTerm<cr>', desc = 'Toggle Terminal', mode = 'n' },
|
||||
{ '<A-t>', '<cmd>ToggleTerm size=' .. size() .. '<cr>', desc = 'Toggle Terminal', mode = 'n' },
|
||||
{ '<leader>2', '<cmd>2ToggleTerm<cr>', desc = 'Toggle Terminal', mode = 'n' },
|
||||
},
|
||||
opts = {
|
||||
size = 10,
|
||||
open_mapping = [[<c-\>]],
|
||||
hide_numbers = true,
|
||||
shade_filetypes = {},
|
||||
shade_terminals = true,
|
||||
shading_factor = '2',
|
||||
start_in_insert = true,
|
||||
insert_mappings = true,
|
||||
terminal_mappings = true,
|
||||
persist_size = true,
|
||||
direction = 'float', -- Use 'float' for floating terminal windows
|
||||
close_on_exit = true,
|
||||
shell = vim.o.shell,
|
||||
float_opts = {
|
||||
border = 'curved', -- or 'single', 'double', 'shadow', etc.
|
||||
winblend = 0, -- Set to 0 for full transparency
|
||||
highlights = {
|
||||
border = 'Normal',
|
||||
background = 'Normal',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'2kabhishek/termim.nvim',
|
||||
cmd = { 'Fterm', 'FTerm', 'Sterm', 'STerm', 'Vterm', 'VTerm' },
|
||||
keys = {
|
||||
{ '<leader>th', '<cmd>Sterm<cr>', desc = 'Horizontal Terminal' },
|
||||
{ '<leader>tv', '<cmd>Vterm<cr>', desc = 'Vertical Terminal' },
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
return {
|
||||
'nvim-neotest/neotest',
|
||||
dependencies = {
|
||||
'nvim-neotest/nvim-nio',
|
||||
'olimorris/neotest-rspec',
|
||||
'nvim-neotest/neotest-jest',
|
||||
'nvim-neotest/neotest-python',
|
||||
},
|
||||
cmd = 'Neotest',
|
||||
config = function()
|
||||
require('neotest').setup({
|
||||
status = { virtual_text = true },
|
||||
output = { open_on_run = true },
|
||||
adapters = {
|
||||
require('neotest-vitest'),
|
||||
require('neotest-jest')({
|
||||
jestCommand = 'npm test --',
|
||||
jestConfigFile = 'custom.jest.config.ts',
|
||||
env = { CI = true },
|
||||
cwd = function(path)
|
||||
return vim.fn.getcwd()
|
||||
end,
|
||||
}),
|
||||
},
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{ '<leader>uc', '<cmd>lua require("neotest").run.run()<cr>', desc = 'Run Current Test' },
|
||||
{ '<leader>uf', '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))<cr>', desc = 'Run Test File' },
|
||||
{
|
||||
'<leader>uo',
|
||||
'<cmd>lua require("neotest").output.open({ enter = true, auto_close = true })<cr>',
|
||||
desc = 'Show Output',
|
||||
},
|
||||
{ '<leader>uS', '<cmd>lua require("neotest").summary.toggle<cr>', desc = 'Toggle Summary' },
|
||||
{ '<leader>ur', '<cmd>lua require("neotest").run.run()', desc = 'Run Nearest Test' },
|
||||
{ '<leader>us', '<cmd>lua require("neotest").run.stop()<cr>', desc = 'Stop' },
|
||||
{ '<leader>uO', '<cmd>lua require("neotest").output_panel.toggle<cr>', desc = 'Toggle Output Panel' },
|
||||
},
|
||||
}
|
||||
@@ -7,7 +7,7 @@ return {
|
||||
cmd = { 'TSInstall', 'TSBufEnable', 'TSBufDisable', 'TSModuleInfo' },
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
'windwp/nvim-ts-autotag',
|
||||
{ 'windwp/nvim-ts-autotag', event = { 'BufReadPost', 'BufNewFile', 'BufWritePre' } },
|
||||
},
|
||||
config = function()
|
||||
require('nvim-ts-autotag').setup()
|
||||
@@ -46,7 +46,6 @@ return {
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
-- Automatically jump forward to textobj, similar to targets.vim
|
||||
lookahead = true,
|
||||
keymaps = {
|
||||
['af'] = { query = '@function.outer', desc = 'Select outer part of a function region' },
|
||||
@@ -72,19 +71,12 @@ return {
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter-context',
|
||||
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||
config = function()
|
||||
require('treesitter-context').setup({ enable = false })
|
||||
end,
|
||||
cmd = 'TSContextToggle',
|
||||
init = function()
|
||||
vim.keymap.set('n', '[c', function()
|
||||
require('treesitter-context').go_to_context()
|
||||
end, { silent = true, desc = 'Go to TS context' })
|
||||
vim.keymap.set('n', '<leader>tc', function()
|
||||
require('treesitter-context').toggle()
|
||||
end, { silent = true, desc = 'Toggle TS Context' })
|
||||
end,
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter-context',
|
||||
event = 'VeryLazy',
|
||||
config = function(_, opts)
|
||||
require('treesitter-context').setup({ mode = 'cursor', max_lines = 3 })
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
return {
|
||||
'folke/trouble.nvim',
|
||||
lazy = true,
|
||||
cmd = { 'Trouble', 'TroubleToggle', 'TroubleRefresh' },
|
||||
opts = {
|
||||
modes = {
|
||||
lsp = {
|
||||
win = { position = 'right' },
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>xx', '<cmd>Trouble diagnostics toggle<cr>', desc = 'Diagnostics (Trouble)' },
|
||||
{ '<leader>xX', '<cmd>Trouble diagnostics toggle filter.buf=0<cr>', desc = 'Buffer Diagnostics (Trouble)' },
|
||||
{ '<leader>cs', '<cmd>Trouble symbols toggle<cr>', desc = 'Symbols (Trouble)' },
|
||||
{ '<leader>cS', '<cmd>Trouble lsp toggle<cr>', desc = 'LSP references/definitions/... (Trouble)' },
|
||||
{ '<leader>xL', '<cmd>Trouble loclist toggle<cr>', desc = 'Location List (Trouble)' },
|
||||
{ '<leader>xQ', '<cmd>Trouble qflist toggle<cr>', desc = 'Quickfix List (Trouble)' },
|
||||
{
|
||||
'[q',
|
||||
function()
|
||||
if require('trouble').is_open() then
|
||||
require('trouble').prev({ skip_groups = true, jump = true })
|
||||
else
|
||||
local ok, err = pcall(vim.cmd.cprev)
|
||||
if not ok then
|
||||
vim.notify(err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end,
|
||||
desc = 'Previous Trouble/Quickfix Item',
|
||||
},
|
||||
{
|
||||
']q',
|
||||
function()
|
||||
if require('trouble').is_open() then
|
||||
require('trouble').next({ skip_groups = true, jump = true })
|
||||
else
|
||||
local ok, err = pcall(vim.cmd.cnext)
|
||||
if not ok then
|
||||
vim.notify(err, vim.log.levels.ERROR)
|
||||
end
|
||||
end
|
||||
end,
|
||||
desc = 'Next Trouble/Quickfix Item',
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
return {
|
||||
{
|
||||
'rcarriga/nvim-notify',
|
||||
event = 'VeryLazy',
|
||||
keys = {
|
||||
{
|
||||
'<leader>mn',
|
||||
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',
|
||||
},
|
||||
},
|
||||
{
|
||||
'folke/noice.nvim',
|
||||
event = 'UIEnter',
|
||||
dependencies = {
|
||||
{ 'MunifTanjim/nui.nvim', lazy = true },
|
||||
'rcarriga/nvim-notify',
|
||||
},
|
||||
opts = {
|
||||
cmdline = {
|
||||
view = 'cmdline',
|
||||
format = {
|
||||
cmdline = { icon = '▍' },
|
||||
substitute = {
|
||||
pattern = '^:%%?s/',
|
||||
icon = ' ',
|
||||
ft = 'regex',
|
||||
opts = { border = { text = { top = ' sub (old/new/) ' } } },
|
||||
},
|
||||
input = { view = 'cmdline_input', icon = '█' },
|
||||
},
|
||||
},
|
||||
routes = {
|
||||
{
|
||||
view = 'notify',
|
||||
filter = { event = 'msg_showmode' },
|
||||
},
|
||||
{
|
||||
filter = {
|
||||
event = 'msg_show',
|
||||
kind = '',
|
||||
find = 'written',
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
},
|
||||
lsp = {
|
||||
progress = {
|
||||
enabled = false,
|
||||
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
|
||||
-- See the section on formatting for more details on how to customize.
|
||||
format = 'lsp_progress',
|
||||
format_done = 'lsp_progress_done',
|
||||
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||||
view = 'mini',
|
||||
},
|
||||
override = {
|
||||
-- override the default lsp markdown formatter with Noice
|
||||
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
|
||||
-- override the lsp markdown formatter with Noice
|
||||
['vim.lsp.util.stylize_markdown'] = true,
|
||||
-- override cmp documentation with Noice (needs the other options to work)
|
||||
['cmp.entry.get_documentation'] = true,
|
||||
},
|
||||
hover = {
|
||||
enabled = true,
|
||||
silent = false, -- set to true to not show a message if hover is not available
|
||||
view = nil, -- when nil, use defaults from documentation
|
||||
opts = {}, -- merged with defaults from documentation
|
||||
},
|
||||
signature = {
|
||||
enabled = false,
|
||||
auto_open = {
|
||||
enabled = true,
|
||||
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
|
||||
luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes
|
||||
throttle = 50, -- Debounce lsp signature help request by 50ms
|
||||
},
|
||||
view = nil, -- when nil, use defaults from documentation
|
||||
opts = {}, -- merged with defaults from documentation
|
||||
},
|
||||
message = {
|
||||
-- Messages shown by lsp servers
|
||||
enabled = true,
|
||||
view = 'notify',
|
||||
opts = {},
|
||||
},
|
||||
-- defaults for hover and signature help
|
||||
documentation = {
|
||||
view = 'hover',
|
||||
opts = {
|
||||
lang = 'markdown',
|
||||
replace = true,
|
||||
render = 'plain',
|
||||
format = { '{message}' },
|
||||
win_options = { concealcursor = 'n', conceallevel = 3 },
|
||||
},
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
command_palette = false, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = true, -- add a border to hover docs and signature help
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'stevearc/dressing.nvim',
|
||||
event = 'VeryLazy',
|
||||
},
|
||||
{
|
||||
'akinsho/bufferline.nvim',
|
||||
event = 'UIEnter',
|
||||
version = '*',
|
||||
config = function()
|
||||
require('bufferline').setup({
|
||||
options = {
|
||||
close_command = function()
|
||||
require('bufdelete').bufdelete(0, true)
|
||||
end,
|
||||
right_mouse_command = function()
|
||||
require('bufdelete').bugdelete(0, false)
|
||||
end,
|
||||
diagnostics = 'nvim_lsp',
|
||||
always_show_bufferline = true,
|
||||
buffer_close_icon = '',
|
||||
modified_icon = '',
|
||||
close_icon = '',
|
||||
left_trunc_marker = '',
|
||||
right_trunc_marker = '',
|
||||
offsets = {
|
||||
{
|
||||
filetype = 'neo-tree',
|
||||
text = 'Neo-tree',
|
||||
highlight = 'Directory',
|
||||
text_align = 'left',
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvim-lualine/lualine.nvim',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
config = function()
|
||||
require('configs.lualine')
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
main = 'ibl',
|
||||
event = { 'BufReadPost', 'BufNewFile' },
|
||||
opts = {
|
||||
exclude = {
|
||||
filetypes = { 'help', 'alpha', 'dashboard', 'neo-tree', 'Trouble', 'lazy' },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'utilyre/barbecue.nvim',
|
||||
name = 'barbecue',
|
||||
version = '*',
|
||||
event = { 'BufReadPost', 'BufAdd', 'BufNewFile' },
|
||||
dependencies = {
|
||||
'SmiteshP/nvim-navic',
|
||||
},
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
'<leader>bq',
|
||||
function()
|
||||
require('barbecue.ui').toggle()
|
||||
end,
|
||||
desc = 'toggle barbecue',
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('barbecue').setup({
|
||||
create_autocmd = false, -- prevent barbecue from updating itself automatically
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({
|
||||
'WinScrolled', -- or WinResized on NVIM-v0.9 and higher
|
||||
'BufWinEnter',
|
||||
'CursorHold',
|
||||
'InsertLeave',
|
||||
}, {
|
||||
group = vim.api.nvim_create_augroup('barbecue.updater', {}),
|
||||
callback = function()
|
||||
require('barbecue.ui').update()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'goolord/alpha-nvim',
|
||||
event = 'VimEnter',
|
||||
config = function()
|
||||
require('configs.alpha')
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
return {
|
||||
'folke/which-key.nvim',
|
||||
event = 'UIEnter',
|
||||
opts = {
|
||||
preset = 'helix',
|
||||
icons = {
|
||||
breadcrumb = ' ',
|
||||
separator = ' ',
|
||||
group = '',
|
||||
rules = false,
|
||||
},
|
||||
triggers = {
|
||||
{ '<auto>', mode = 'nixsotc' },
|
||||
{ '<leader>', mode = { 'n', 'v' } },
|
||||
},
|
||||
spec = {
|
||||
mode = { 'n', 'v' },
|
||||
{ '[', group = ' Previous' },
|
||||
{ ']', group = ' Next' },
|
||||
{ '<leader>b', group = ' Debug' },
|
||||
{ '<leader>c', group = ' Code' },
|
||||
{ '<leader>C', group = ' Comment' },
|
||||
{ '<leader>d', group = ' Database' },
|
||||
{ '<leader>e', group = ' Edit' },
|
||||
{ '<leader>f', group = ' Find' },
|
||||
{ '<leader>i', group = ' Insert' },
|
||||
{ '<leader>j', group = ' Jump' },
|
||||
{ '<leader>k', group = ' Keys' },
|
||||
{ '<leader>l', group = ' LSP' },
|
||||
{ '<leader>m', group = ' Misc' },
|
||||
{ '<leader>n', group = ' Notes' },
|
||||
{ '<leader>q', group = ' Quit' },
|
||||
{ '<leader>s', group = ' Split' },
|
||||
{ '<leader>t', group = ' Terminal' },
|
||||
{ '<leader>u', group = ' Test' },
|
||||
{ '<leader>v', group = ' Select' },
|
||||
{ '<leader>w', group = ' Writing' },
|
||||
{ '<leader>x', group = ' Diagnostics/Quickfix' },
|
||||
{ '<leader>y', group = ' Yank' },
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
'<leader>?',
|
||||
function()
|
||||
require('which-key').show({ global = false })
|
||||
end,
|
||||
desc = ' Buffer Local Keymaps (which-key)',
|
||||
},
|
||||
-- other keymaps
|
||||
{ '<leader>cR', '<cmd>ReloadConfig<cr>', desc = 'Reload Configs' },
|
||||
{ '<leader>cd', '<cmd>RootDir<cr>', desc = 'Root Directory' },
|
||||
{ '<leader>cl', '<cmd>:g/^\\s*$/d<cr>', desc = 'Clean Empty Lines' },
|
||||
{ '<leader>co', '<cmd>Alpha<cr>', desc = 'Alpha' },
|
||||
{ '<leader>cr', '<cmd>Telescope reloader<cr>', desc = 'Reload Module' },
|
||||
--edit
|
||||
{ '<leader>ea', '<cmd>b#<cr>', desc = 'Alternate File' },
|
||||
{ '<leader>ec', '<cmd>e $MYVIMRC<cr>', desc = 'Config' },
|
||||
{
|
||||
'<leader>ed',
|
||||
'<cmd>lua require("telescope.builtin").find_files({cwd = vim.fn.stdpath("config")})<cr>',
|
||||
desc = 'Config Dir',
|
||||
},
|
||||
{ '<leader>ee', '<cmd>NvimTreeToggle<cr>', desc = 'Explorer' },
|
||||
{ '<leader>em', '<cmd>e README.md<cr>', desc = 'Readme' },
|
||||
{ '<leader>en', '<cmd>enew<cr>', desc = 'New File' },
|
||||
-- split
|
||||
{ '<leader>s+', '<cmd>resize +10<cr>', desc = 'Increase window height' },
|
||||
{ '<leader>s-', '<cmd>vertical resize -20<cr>', desc = 'Decrease window width' },
|
||||
{ '<leader>s/', '<C-w>s', desc = 'Split Below' },
|
||||
{ '<leader>s=', '<cmd>vertical resize +20<cr>', desc = 'Increase window width' },
|
||||
{ '<leader>sH', '<cmd>vertical resize -10<cr>', desc = 'Decrease window width' },
|
||||
{ '<leader>sJ', '<cmd>resize -5<cr>', desc = 'Decrease window height' },
|
||||
{ '<leader>sK', '<cmd>resize +5<cr>', desc = 'Increase window height' },
|
||||
{ '<leader>sL', '<cmd>vertical resize +10<cr>', desc = 'Increase window width' },
|
||||
{ '<leader>s\\', '<C-w>v', desc = 'Split Right' },
|
||||
{ '<leader>s_', '<cmd>resize -10<cr>', desc = 'Decrease window height' },
|
||||
{ '<leader>s`', '<C-w>p', desc = 'Previous Window' },
|
||||
{ '<leader>sa', '<cmd>split<cr>', desc = 'Horizontal Split' },
|
||||
{ '<leader>sc', '<cmd>tabclose<cr>', desc = 'Close Tab' },
|
||||
{ '<leader>sf', '<cmd>tabfirst<cr>', desc = 'First Tab' },
|
||||
{ '<leader>sh', '<C-w>h', desc = 'Move Left' },
|
||||
{ '<leader>sj', '<C-w>j', desc = 'Move Down' },
|
||||
{ '<leader>sk', '<C-w>k', desc = 'Move Up' },
|
||||
{ '<leader>sl', '<C-w>l', desc = 'Move Right' },
|
||||
{ '<leader>sp', '<cmd>NavigatorPrevious<cr>', desc = 'Previous Pane' },
|
||||
{ '<leader>sq', '<C-w>c', desc = 'Close Split' },
|
||||
{ '<leader>ss', '<cmd>vsplit<cr>', desc = 'Vertical Split' },
|
||||
-- select
|
||||
{ '<leader>vB', 'vab', desc = 'Around Bracket' },
|
||||
{ '<leader>vP', 'vap', desc = 'Around Para' },
|
||||
{ '<leader>vQ', 'vaq', desc = 'Around Quote' },
|
||||
{ '<leader>vb', 'vib', desc = 'Bracket' },
|
||||
{ '<leader>vp', 'vip', desc = 'Paragraph' },
|
||||
{ '<leader>vq', 'viq', desc = 'Quote' },
|
||||
-- writing
|
||||
{ '<leader>wc', '<cmd>set spell!<cr>', desc = 'Spellcheck' },
|
||||
{ '<leader>wf', "<cmd>lua require'utils'.sudo_write()<cr>", desc = 'Force Write' },
|
||||
{ '<leader>wj', ']s', desc = 'Next Misspell' },
|
||||
{ '<leader>wk', '[s', desc = 'Prev Misspell' },
|
||||
{ '<leader>wq', '<cmd>wq<cr>', desc = 'Write and Quit' },
|
||||
{ '<leader>ws', '<cmd>Telescope spell_suggest<cr>', desc = 'Suggestions' },
|
||||
{ '<leader>ww', '<cmd>w<cr>', desc = 'Write and Quit' },
|
||||
{ '<leader>x', '<cmd>x<cr>', desc = ' Save and Quit' },
|
||||
--quit
|
||||
{ '<leader>qa', '<cmd>qall<cr>', desc = 'Quit All' },
|
||||
{ '<leader>qc', '<cmd>bw<cr>', desc = 'Close Buffer' },
|
||||
{ '<leader>qd', '<cmd>bdelete<cr>', desc = 'Delete Buffer' },
|
||||
{ '<leader>qf', '<cmd>qall!<cr>', desc = 'Force Quit' },
|
||||
{ '<leader>qo', ':%bdelete|b#|bdelete#<cr>', desc = 'Close Others' },
|
||||
{ '<leader>qq', '<cmd>q<cr>', desc = 'Quit' },
|
||||
{ '<leader>qs', '<C-w>c', desc = 'Close Split' },
|
||||
{ '<leader>qw', '<cmd>wq<cr>', desc = 'Write and Quit' },
|
||||
-- insert
|
||||
{ '<leader>iP', '<cmd>put %:p<cr>', desc = 'Absolute Path' },
|
||||
{ '<leader>id', "<cmd>put =strftime('## %a, %d %b, %Y, %r')<cr>", desc = 'Date' },
|
||||
{ '<leader>ie', '<cmd>Telescope symbols<cr>', desc = 'Emojis' },
|
||||
{ '<leader>if', "<cmd>put =expand('%:t')<cr>", desc = 'File Name' },
|
||||
{ '<leader>in', '<cmd>Nerdy<cr>', desc = 'Nerd Glyphs' },
|
||||
{ '<leader>ip', '<cmd>put %<cr>', desc = 'Relative Path' },
|
||||
{ '<leader>ir', '<cmd>Telescope registers<cr>', desc = 'Registers' },
|
||||
{ '<leader>it', "<cmd>put =strftime('## %r')<cr>", desc = 'Time' },
|
||||
|
||||
-- Visiual Mode
|
||||
{ '<leader>cS', ':sort!<cr>', mode = 'v', desc = 'Sort Desc' },
|
||||
{ '<leader>ci', ':sort i<cr>', mode = 'v', desc = 'Sort Case Insensitive' },
|
||||
{ '<leader>cs', ':sort<cr>', mode = 'v', desc = 'Sort Asc' },
|
||||
{ '<leader>cu', ':!uniq<cr>', mode = 'v', desc = 'Unique' },
|
||||
|
||||
{ '<leader>la', mode = 'v', desc = '<cmd><C-U>Lspsaga range_code_action<CR>' },
|
||||
|
||||
-- no leader
|
||||
{ '[B', '<cmd>bfirst<cr>', desc = 'First Buffer' },
|
||||
{ '[b', '<cmd>bprevious<cr>', desc = 'Buffer' },
|
||||
{ '[d', '<cmd>Lspsaga diagnostic_jump_prev<cr>', desc = 'Diagnostic' },
|
||||
{ '[e', 'g;', desc = 'Edit' },
|
||||
{ '[j', '<C-o>', desc = 'Jump' },
|
||||
|
||||
{ ']', group = ' Next' },
|
||||
{ ']B', '<cmd>blast<cr>', desc = 'Buffer' },
|
||||
{ ']b', '<cmd>bnext<cr>', desc = 'Buffer' },
|
||||
{ ']d', '<cmd>Lspsaga diagnostic_jump_next<cr>', desc = 'Diagnostic' },
|
||||
{ ']e', 'g,', desc = 'Edit' },
|
||||
{ ']j', '<C-i>', desc = 'Jump' },
|
||||
|
||||
{ '<C-Down>', '<cmd>resize -10<cr>', desc = 'Decrease window height' },
|
||||
{ '<C-Left>', '<cmd>vertical resize -10<cr>', desc = 'Decrease window width' },
|
||||
{ '<C-Right>', '<cmd>vertical resize +10<cr>', desc = 'Increase window width' },
|
||||
{ '<C-Up>', '<cmd>resize +10<cr>', desc = 'Increase window height' },
|
||||
{ '<A-e>', '<cmd>Telescope find_files<cr>', desc = 'Find Files' },
|
||||
{ '<A-f>', '<cmd>Telescope file_browser<cr>', desc = 'Find browser' },
|
||||
|
||||
{ '<C-h>', '<C-w>h', desc = 'Move Left' },
|
||||
{ '<C-j>', '<C-w>j', desc = 'Move Down' },
|
||||
{ '<C-k>', '<C-w>k', desc = 'Move Up' },
|
||||
{ '<C-l>', '<C-w>l', desc = 'Move Right' },
|
||||
{ '<C-\\>', '<C-w>p', desc = 'Previous Pane' },
|
||||
|
||||
{ '<S-tab>', '<cmd>bprevious<cr>', desc = 'Previous Buffer' },
|
||||
{ '<tab>', '<cmd>bnext<cr>', desc = 'Next Buffer' },
|
||||
|
||||
{ 'K', '<cmd>Lspsaga hover_doc<cr>', desc = 'LSP Hover' },
|
||||
{ 'Q', '<cmd>qall!<cr>', desc = 'Force Quit!' },
|
||||
{ 'U', '<cmd>redo<cr>', desc = 'Redo' },
|
||||
},
|
||||
}
|
||||
Reference in new issue
Block a user