347 lines
8.4 KiB
Lua
347 lines
8.4 KiB
Lua
-- Plugins: UI
|
|
-- https://github.com/rafi/vim-config
|
|
|
|
return {
|
|
|
|
-----------------------------------------------------------------------------
|
|
{ 'nvim-tree/nvim-web-devicons', lazy = false },
|
|
{ 'MunifTanjim/nui.nvim', lazy = false },
|
|
{
|
|
'akinsho/bufferline.nvim', lazy = false, version = "*",
|
|
dependencies = 'nvim-tree/nvim-web-devicons'
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'folke/noice.nvim',
|
|
event = 'VeryLazy',
|
|
dependencies = {
|
|
'MunifTanjim/nui.nvim',
|
|
'rcarriga/nvim-notify',
|
|
'nvim-treesitter/nvim-treesitter',
|
|
},
|
|
-- stylua: ignore
|
|
keys = {
|
|
{ '<S-Enter>', function() require('noice').redirect(tostring(vim.fn.getcmdline())) end, mode = 'c', desc = 'Redirect Cmdline' },
|
|
{ '<leader>Snl', function() require('noice').cmd('last') end, desc = 'Noice Last Message' },
|
|
{ '<leader>Snh', function() require('noice').cmd('history') end, desc = 'Noice History' },
|
|
{ '<leader>Sna', function() require('noice').cmd('all') end, desc = 'Noice All' },
|
|
{ '<c-f>', function() if not require('noice.lsp').scroll(4) then return '<c-f>' end end, silent = true, expr = true, desc = 'Scroll forward', mode = {'i', 'n', 's'} },
|
|
{ '<c-b>', function() if not require('noice.lsp').scroll(-4) then return '<c-b>' end end, silent = true, expr = true, desc = 'Scroll backward', mode = {'i', 'n', 's'}},
|
|
},
|
|
---@type NoiceConfig
|
|
opts = {
|
|
lsp = {
|
|
override = {
|
|
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
|
|
['vim.lsp.util.stylize_markdown'] = true,
|
|
['cmp.entry.get_documentation'] = true,
|
|
},
|
|
},
|
|
messages = {
|
|
view_search = false,
|
|
},
|
|
routes = {
|
|
-- See :h ui-messages
|
|
{
|
|
filter = { event = 'msg_show', find = '%d+L, %d+B$' },
|
|
view = 'mini',
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', find = '^Hunk %d+ of %d+$' },
|
|
view = 'mini',
|
|
},
|
|
{
|
|
filter = { event = 'notify', find = '^No code actions available$' },
|
|
view = 'mini',
|
|
},
|
|
{
|
|
filter = { event = 'notify', find = '^No information available$' },
|
|
opts = { skip = true },
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', find = '^%d+ change;' },
|
|
opts = { skip = true },
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', find = '^%d+ %a+ lines' },
|
|
opts = { skip = true },
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', find = '^%d+ lines yanked$' },
|
|
opts = { skip = true },
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', kind = 'emsg', find = 'E490' },
|
|
opts = { skip = true },
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', kind = 'quickfix' },
|
|
view = 'mini',
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', kind = 'search_count' },
|
|
view = 'mini',
|
|
},
|
|
{
|
|
filter = { event = 'msg_show', kind = 'wmsg' },
|
|
view = 'mini',
|
|
},
|
|
},
|
|
presets = {
|
|
bottom_search = true,
|
|
command_palette = true,
|
|
long_message_to_split = true,
|
|
lsp_doc_border = true,
|
|
},
|
|
commands = {
|
|
all = {
|
|
view = 'split',
|
|
opts = { enter = true, format = 'details' },
|
|
filter = {},
|
|
},
|
|
},
|
|
---@type NoiceConfigViews
|
|
views = {
|
|
mini = {
|
|
zindex = 100,
|
|
win_options = { winblend = 0 },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'stevearc/dressing.nvim',
|
|
init = function()
|
|
---@diagnostic disable-next-line: duplicate-set-field
|
|
vim.ui.select = function(...)
|
|
require('lazy').load({ plugins = { 'dressing.nvim' } })
|
|
return vim.ui.select(...)
|
|
end
|
|
---@diagnostic disable-next-line: duplicate-set-field
|
|
vim.ui.input = function(...)
|
|
require('lazy').load({ plugins = { 'dressing.nvim' } })
|
|
return vim.ui.input(...)
|
|
end
|
|
end,
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'SmiteshP/nvim-navic',
|
|
keys = {
|
|
{
|
|
'<Leader>tf',
|
|
function()
|
|
if vim.b.navic_winbar then
|
|
vim.b.navic_winbar = false
|
|
vim.opt_local.winbar = ''
|
|
else
|
|
vim.b.navic_winbar = true
|
|
vim.opt_local.winbar = '%#NavicIconsFile# %t %* '
|
|
.. "%{%v:lua.require'nvim-navic'.get_location()%}"
|
|
end
|
|
end,
|
|
desc = 'Toggle structure panel',
|
|
},
|
|
},
|
|
init = function()
|
|
vim.g.navic_silence = true
|
|
|
|
---@param client lsp.Client
|
|
---@param buffer integer
|
|
require('plex.lib.utils').on_attach(function(client, buffer)
|
|
if client.server_capabilities.documentSymbolProvider then
|
|
require('nvim-navic').attach(client, buffer)
|
|
end
|
|
end)
|
|
end,
|
|
opts = function()
|
|
return {
|
|
separator = ' ',
|
|
highlight = true,
|
|
icons = require('plex.config').icons.kinds,
|
|
}
|
|
end,
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'rcarriga/nvim-notify',
|
|
event = 'VeryLazy',
|
|
keys = {
|
|
{
|
|
'<leader>un',
|
|
function()
|
|
require('notify').dismiss({ silent = true, pending = true })
|
|
end,
|
|
desc = 'Dismiss all Notifications',
|
|
},
|
|
},
|
|
opts = {
|
|
timeout = 3000,
|
|
max_height = function()
|
|
return math.floor(vim.o.lines * 0.75)
|
|
end,
|
|
max_width = function()
|
|
return math.floor(vim.o.columns * 0.75)
|
|
end,
|
|
},
|
|
init = function()
|
|
-- When noice is not enabled, install notify on VeryLazy
|
|
local Util = require('plex.lib.utils')
|
|
if not Util.has('noice.nvim') then
|
|
Util.on_very_lazy(function()
|
|
vim.notify = require('notify')
|
|
end)
|
|
end
|
|
end,
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'chentoast/marks.nvim',
|
|
dependencies = 'lewis6991/gitsigns.nvim',
|
|
event = 'FileType',
|
|
keys = {
|
|
{ 'm/', '<cmd>MarksListAll<CR>', desc = 'Marks from all opened buffers' },
|
|
},
|
|
opts = {
|
|
sign_priority = { lower = 10, upper = 15, builtin = 8, bookmark = 20 },
|
|
bookmark_1 = { sign = '' }, -- ⚐ ⚑
|
|
mappings = {
|
|
annotate = 'm<Space>',
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'lukas-reineke/indent-blankline.nvim',
|
|
event = 'FileType',
|
|
keys = {
|
|
{ '<Leader>ue', '<cmd>IndentBlanklineToggle<CR>' },
|
|
},
|
|
opts = {
|
|
show_trailing_blankline_indent = false,
|
|
disable_with_nolist = true,
|
|
show_foldtext = false,
|
|
char_priority = 100,
|
|
show_current_context = true,
|
|
show_current_context_start = false,
|
|
filetype_exclude = {
|
|
'lspinfo',
|
|
'checkhealth',
|
|
'git',
|
|
'gitcommit',
|
|
'help',
|
|
'man',
|
|
'lazy',
|
|
'alpha',
|
|
'dashboard',
|
|
'terminal',
|
|
'TelescopePrompt',
|
|
'TelescopeResults',
|
|
'neo-tree',
|
|
'Outline',
|
|
'mason',
|
|
'Trouble',
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'tenxsoydev/tabs-vs-spaces.nvim',
|
|
event = { 'BufReadPost', 'BufNewFile' },
|
|
config = true,
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
't9md/vim-quickhl',
|
|
keys = {
|
|
{
|
|
'<Leader>mt',
|
|
'<Plug>(quickhl-manual-this)',
|
|
mode = { 'n', 'x' },
|
|
desc = 'Highlight word',
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'kevinhwang91/nvim-bqf',
|
|
ft = 'qf',
|
|
cmd = 'BqfAutoToggle',
|
|
event = 'QuickFixCmdPost',
|
|
opts = {
|
|
auto_resize_height = false,
|
|
func_map = {
|
|
tab = 'st',
|
|
split = 'sv',
|
|
vsplit = 'sg',
|
|
|
|
stoggleup = 'K',
|
|
stoggledown = 'J',
|
|
stogglevm = '<Space>',
|
|
|
|
ptoggleitem = 'p',
|
|
ptoggleauto = 'P',
|
|
ptogglemode = 'zp',
|
|
|
|
pscrollup = '<C-b>',
|
|
pscrolldown = '<C-f>',
|
|
|
|
prevfile = 'gk',
|
|
nextfile = 'gj',
|
|
|
|
prevhist = '<S-Tab>',
|
|
nexthist = '<Tab>',
|
|
},
|
|
preview = {
|
|
auto_preview = true,
|
|
should_preview_cb = function(bufnr)
|
|
-- file size greater than 100kb can't be previewed automatically
|
|
local filename = vim.api.nvim_buf_get_name(bufnr)
|
|
local fsize = vim.fn.getfsize(filename)
|
|
if fsize > 100 * 1024 then
|
|
return false
|
|
end
|
|
return true
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'uga-rosa/ccc.nvim',
|
|
event = 'FileType',
|
|
keys = {
|
|
{ '<Leader>cp', '<cmd>CccPick<CR>', desc = 'Color-picker' },
|
|
},
|
|
opts = {
|
|
highlighter = {
|
|
auto_enable = true,
|
|
lsp = true,
|
|
excludes = { 'lazy', 'mason', 'help', 'neo-tree' },
|
|
},
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------------------------
|
|
{
|
|
'itchyny/calendar.vim',
|
|
cmd = 'Calendar',
|
|
init = function()
|
|
vim.g.calendar_google_calendar = 1
|
|
vim.g.calendar_google_task = 1
|
|
vim.g.calendar_cache_directory = vim.fn.stdpath('data') .. '/calendar'
|
|
end,
|
|
},
|
|
}
|