feat!: new config

inspired by https://github.com/BijanVeyssi/nvim-config
This commit is contained in:
Volodymyr Patuta 2024-05-22 13:59:00 +02:00
parent d50d533dd9
commit d79e2d5ecb
31 changed files with 919 additions and 744 deletions

View File

@ -1,14 +1,14 @@
require 'config.lazy'
require 'config.autocmd'
require 'config.autocmds'
require 'config.mappings'
require 'config.options'
require 'config.lazy'
vim.api.nvim_create_autocmd('User', {
pattern = 'LazyVimStarted',
callback = function()
vim.cmd 'colorscheme neogruber'
require 'config.mappings'
vim.cmd 'colorscheme gruber-darker'
require 'feline'
require 'dressing'
-- require 'dressing'
require 'NeoSwap'
end,
})

View File

@ -1,3 +1,33 @@
local function augroup(name)
return vim.api.nvim_create_augroup("my_" .. name, { clear = false })
end
vim.api.nvim_create_autocmd(
{ "BufEnter", "FocusGained", "InsertLeave", "WinEnter", "CmdlineLeave" },
{
group = augroup("toggle_relative_number"),
callback = function()
if not vim.opt.number:get() and not vim.opt.relativenumber:get() then
return
end
vim.opt.relativenumber = vim.api.nvim_get_mode().mode ~= "i"
end,
}
)
vim.api.nvim_create_autocmd(
{ "BufLeave", "FocusLost", "InsertEnter", "WinLeave", "CmdlineEnter" },
{
group = augroup("toggle_relative_number"),
callback = function(ev)
vim.opt.relativenumber = false
if ev.event == "CmdlineEnter" then
vim.cmd("redraw")
end
end,
}
)
-- close some filetypes with <q>
vim.api.nvim_create_autocmd({ 'FileType' }, {
pattern = { 'qf', 'help', 'man', 'lspinfo', 'spectre_panel', 'lir' },
@ -41,15 +71,6 @@ vim.api.nvim_create_autocmd('FileType', {
end,
})
function _G.set_terminal_keymaps()
local opts = { buffer = 0 }
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
end
-- if you only want these mappings for toggle term use term://*toggleterm#* instead
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
-- go to last loc when opening a buffer
vim.api.nvim_create_autocmd("BufReadPost", {
callback = function(event)
@ -75,8 +96,8 @@ vim.cmd [[
]]
-- Fixes Autocomment
vim.api.nvim_create_autocmd({ 'BufWinEnter' }, {
callback = function()
vim.cmd 'set formatoptions-=cro'
end,
})
-- vim.api.nvim_create_autocmd({ 'BufWinEnter' }, {
-- callback = function()
-- vim.cmd 'set formatoptions-=cro'
-- end,
-- })

View File

@ -23,51 +23,13 @@ vnoremap M :m '>+1<CR>gv=gv
vnoremap L :m '<-2<CR>gv=gv
imap <c-s> <Esc>[s1z=`]a
]])
keymap('n', 'Y', '"+y', opt)
keymap('v', 'Y', '"+y', opt)
keymap('n', '<c-p>', '"+p', opt)
keymap('v', '<c-p>', '"+p', opt)
-- }}}
-- open/close folds with enter key {{{
keymap('n', '<cr>', "@=(foldlevel('.')?'za':\"<Space>\")<CR>", opt)
-- }}}
-- terminal {{{
keymap('n', '<home>', '<cmd>ToggleTerm direction=horizontal<cr>', opt)
keymap('t', '<home>', '<cmd>ToggleTerm direction=horizontal<cr>', opt)
keymap('v', '<home>', '<cmd>ToggleTerm direction=horizontal<cr>', opt)
keymap('i', '<home>', '<cmd>ToggleTerm direction=horizontal<cr>', opt)
keymap('n', '<end>', '<cmd>ToggleTerm direction=float<cr>', opt)
keymap('t', '<end>', '<cmd>ToggleTerm direction=float<cr>', opt)
keymap('v', '<end>', '<cmd>ToggleTerm direction=float<cr>', opt)
keymap('i', '<end>', '<cmd>ToggleTerm direction=float<cr>', opt)
-- }}}
keymap('n', '<BS>', ':', { noremap = true })
keymap('n', ';', ':', { noremap = true })
keymap('n', 'D', '"_d', { noremap = true })
keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opt)
keymap('n', 'gd', '<cmd>TroubleToggle lsp_definitions<CR>', opt)
keymap('n', 'gr', '<cmd>TroubleToggle lsp_references<CR>', opt)
keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.hover()<CR>', opt)
keymap('n', 'gI', '<cmd>TroubleToggle lsp_implementations<CR>', opt)
keymap('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<CR>', opt)
keymap('n', '<leader>lf', '<cmd>lua vim.lsp.buf.format { async = true }<cr>', opt)
keymap('n', '<leader>li', '<cmd>LspInfo<cr>', opt)
keymap('n', '<leader>lI', '<cmd>LspInstallInfo<cr>', opt)
keymap('n', '<leader>la', '<cmd>lua vim.lsp.buf.code_action()<cr>', opt)
keymap('n', '<leader>lj', '<cmd>lua vim.diagnostic.goto_next({buffer=0})<cr>', opt)
keymap('n', '<leader>lk', '<cmd>lua vim.diagnostic.goto_prev({buffer=0})<cr>', opt)
keymap('n', '<leader>lr', '<cmd>lua vim.lsp.buf.rename()<cr>', opt)
keymap('n', '<leader>ls', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opt)
keymap('n', '<leader>lq', '<cmd>lua vim.diagnostic.setloclist()<CR>', opt)
keymap('n', '<leader>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opt)
-- search and replace {{{
keymap('n', '<leader>rs', ':s///gI<Left><Left><Left><Left><Left><Left>', { noremap = true })
keymap('n', '<leader>rr', ':%s///gI<Left><Left><Left><Left>', { noremap = true })
keymap('v', '<leader>r', ':s///gI<Left><Left><Left><Left>', { noremap = true })
-- }}}
function MapDHM()
keymap('n', 'i', 'l', { noremap = true })
@ -109,206 +71,3 @@ end
if file_exists('/tmp/colemak') then
MapDHM()
end
local wk = require 'which-key'
-- which-key {{{
wk.setup {
plugins = {
marks = true, -- shows a list of your marks on ' and `
registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
-- the presets plugin, adds help for a bunch of default keybindings in Neovim
-- No actual key bindings are created
presets = {
operators = true, -- adds help for operators like d, y, ...
motions = true, -- adds help for motions
text_objects = false, -- help for text objects triggered after entering an operator
windows = true, -- default bindings on <c-w>
nav = true, -- misc bindings to work with windows
z = true, -- bindings for folds, spelling and others prefixed with z
g = true, -- bindings for prefixed with g
},
},
icons = {
breadcrumb = '»', -- symbol used in the command line area that shows your active key combo
separator = '', -- symbol used between a key and it's label
group = '+', -- symbol prepended to a group
},
window = {
border = 'none', -- none, single, double, shadow
position = 'bottom', -- bottom, top
margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
padding = { 1, 1, 1, 1 }, -- extra window padding [top, right, bottom, left]
},
layout = {
height = { min = 4, max = 25 }, -- min and max height of the columns
width = { min = 20, max = 50 }, -- min and max width of the columns
spacing = 3, -- spacing between columns
},
hidden = { '<silent>', '<cmd>', '<Cmd>', '<CR>', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate
show_help = true, -- show help message on the command line when the popup is visible
}
local opts = {
mode = 'n', -- NORMAL mode
prefix = '<leader>',
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
silent = true, -- use `silent` when creating keymaps
noremap = true, -- use `noremap` when creating keymaps
nowait = false, -- use `nowait` when creating keymaps
}
--[[ vim.keymap.set('n', 'L', function()
local win = vim.api.nvim_get_current_win()
local qf_winid = vim.fn.getloclist(win, { winid = 0 }).winid
local action = qf_winid > 0 and 'lclose' or 'lopen'
vim.cmd(action)
end, { noremap = true, silent = true })
vim.keymap.set('n', 'X', function()
local qf_winid = vim.fn.getqflist({ winid = 0 }).winid
local action = qf_winid > 0 and 'cclose' or 'copen'
vim.cmd('botright ' .. action)
end, { noremap = true, silent = true }) ]]
-- }}}
-- leader mappings {{{
local mappings = {
['<leader>'] = {
function()
require('buffer_manager.ui').toggle_quick_menu()
end,
'Buffers',
},
['s'] = { '<cmd>ASToggle<cr>', 'Auto Save toggle' },
['D'] = { '<cmd>Dashboard<cr>', 'Dashboard' },
['.'] = { '<cmd>Oil<cr>', 'Oil' },
['f'] = { '<cmd>e ~/.config/nvim/ <cr>', 'Neovim config' },
['rr'] = 'Search and replace all',
['rs'] = 'Search and replace',
['q'] = { '<cmd>lua UnMapDHM()<cr>', 'Qwerty' },
['k'] = { '<cmd>bd<cr>', 'Delete buffer' },
['b'] = {
function()
require('buffer_manager.ui').toggle_quick_menu()
end,
'List buffers',
},
['n'] = {
function()
require('buffer_manager.ui').nav_next()
end,
'Next buffer',
},
['p'] = {
function()
require('buffer_manager.ui').nav_prev()
end,
'Previous buffer',
},
['h'] = { '<cmd>TSBufToggle highlight<cr>', 'Enable TS highlight' },
['1'] = {
function()
require('buffer_manager.ui').nav_file(1)
end,
'Buffer 1',
},
['2'] = {
function()
require('buffer_manager.ui').nav_file(2)
end,
'Buffer 2',
},
['3'] = {
function()
require('buffer_manager.ui').nav_file(3)
end,
'Buffer 3',
},
['4'] = {
function()
require('buffer_manager.ui').nav_file(4)
end,
'Buffer 4',
},
['5'] = {
function()
require('buffer_manager.ui').nav_file(5)
end,
'Buffer 5',
},
['g'] = { '<cmd>Neogit<cr>', 'Neogit' },
d = {
S = { '<cmd>Lazy load nvim-gdb <cr>', 'Load GDB' },
b = { "<cmd>DapToggleBreakpoint<cr>", "Toggle Breakpoint" },
c = { "<cmd>DapContinue<cr>", "Continue" },
n = { "<cmd>DapStepOver<cr>", "Step Over" },
i = { "<cmd>DapStepInto<cr>", "Step Into" },
o = { "<cmd>DapStepOut<cr>", "Step Out" },
d = {
function()
require("dapui").toggle()
end,
"Toggle DAP UI" },
s = {
function()
require("dapui").float_element("scopes", _)
end,
"Scopes"
},
r = {
function()
require("dapui").float_element("repl", _)
end,
"REPL"
},
C = {
function()
require("dapui").float_element("console", _)
end,
"Console"
},
},
l = {
name = 'LSP',
l = { '<cmd>Lazy load none-ls.nvim lsp <bar> LspStart <cr>', 'Start LSP' },
f = { '<cmd>lua vim.lsp.buf.format { async = true }<cr>', 'Format' },
i = 'Lsp Info',
a = 'Code action',
j = 'Next diagnostic',
k = 'Prev diagnostic',
r = 'Rename',
s = 'Signature Help',
q = 'Set LocList',
},
['<TAB>'] = {
name = 'Tab',
n = { '<cmd>tabnew<cr>', 'New' },
p = { '<cmd>tabp<cr>', 'Previous' },
d = { '<cmd>tabclose<cr>', 'Close' },
['<TAB>'] = { '<cmd>tabnext<cr>', 'Next' },
['1'] = { '1gt', 'Go to tab 1' },
['2'] = { '2gt', 'Go to tab 2' },
['3'] = { '3gt', 'Go to tab 3' },
['4'] = { '4gt', 'Go to tab 4' },
['5'] = { '5gt', 'Go to tab 5' },
['6'] = { '6gt', 'Go to tab 6' },
['7'] = { '7gt', 'Go to tab 7' },
['8'] = { '8gt', 'Go to tab 8' },
['9'] = { '9gt', 'Go to tab 9' },
},
w = {
name = 'Window',
v = { '<C-w>v', 'Vertical split' },
h = { '<C-w>s', 'Horizontal split' },
},
x = {
name = 'Trouble',
l = { '<cmd>TroubleToggle loclist<cr>', 'Loclist' },
q = { '<cmd>TroubleToggle quickfix<cr>', 'Quickfix' },
x = { '<cmd>TroubleToggle<cr>', 'Toggle' },
w = { '<cmd>TroubleToggle workspace_diagnostics<cr>', 'Workspace' },
d = { '<cmd>TroubleToggle document_diagnostics<cr>', 'Document' },
},
}
-- }}}
wk.register(mappings, opts)

View File

@ -57,9 +57,14 @@ opt.fillchars = 'eob: '
opt.cmdheight = 1
opt.grepprg = 'rg --vimgrep --no-heading --smart-case --hidden'
opt.grepformat = '%f:%l:%c:%m'
opt.completeopt= 'menu,preview,menuone,noselect'
opt.cursorline = true
opt.cursorlineopt = 'number'
opt.signcolumn = "yes:1"
-- opt.cursorlineopt = 'number'
vim.opt.formatoptions:remove("c")
vim.api.nvim_create_user_command('Cd', 'lcd %:p:h', { nargs = 0 })
vim.api.nvim_create_user_command('Grep', 'silent grep! <args> | TroubleToggle quickfix', { nargs = '+' })
vim.cmd([[
hi NotifyBackground guibg = #000000
]])

View File

@ -1,30 +0,0 @@
return {
'okuuva/auto-save.nvim',
cmd = 'ASToggle',
opts = {
enabled = false, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it)
execution_message = {
enabled = true,
message = function() -- message to print on save
return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S"))
end,
dim = 0.18, -- dim the color of `message`
cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea
},
trigger_events = { -- See :h events
immediate_save = { "BufLeave", "FocusLost" }, -- vim events that trigger an immediate save
defer_save = { "InsertLeave", "TextChanged" }, -- vim events that trigger a deferred save (saves after `debounce_delay`)
cancel_defered_save = { "InsertEnter" }, -- vim events that cancel a pending deferred save
},
-- function that takes the buffer handle and determines whether to save the current buffer or not
-- return true: if buffer is ok to be saved
-- return false: if it's not ok to be saved
-- if set to `nil` then no specific condition is applied
condition = nil,
write_all_buffers = false, -- write all buffers when the current one meets `condition`
noautocmd = false, -- do not execute autocmds when saving
debounce_delay = 100, -- delay after which a pending save is executed
-- log debug messages to 'auto-save.log' file in neovim cache directory, set to `true` to enable
debug = false,
}
}

View File

@ -1,5 +1,10 @@
return {
'j-morano/buffer_manager.nvim',
keys = {
{ '<leader><leader>', "<cmd> lua require('buffer_manager.ui').toggle_quick_menu()<cr>", desc = 'buffers' },
{ 'gn', "<cmd> lua require('buffer_manager.ui').nav_next()<cr>", desc = 'next buffer' },
{ 'gp', "<cmd> lua require('buffer_manager.ui').nav_prev()<cr>", desc = 'next buffer' },
},
opts = {
-- line_keys = '', -- deactivate line keybindings
@ -20,6 +25,6 @@ return {
},
},
width = 0.6,
highlight = "Normal:Normal",
highlight = 'Normal:Normal',
},
}

View File

@ -1,142 +1,108 @@
return {
'hrsh7th/nvim-cmp',
-- lazy = false,
dependencies = {
{ 'honza/vim-snippets' },
{ 'dcampos/nvim-snippy' },
{ 'dcampos/cmp-snippy' },
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-path',
'windwp/nvim-autopairs',
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-calc',
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-nvim-lsp-signature-help',
'saadparwaiz1/cmp_luasnip',
'onsails/lspkind.nvim',
},
event = { 'InsertEnter', 'CmdlineEnter' },
version = false,
config = function()
local cmp = require 'cmp'
local utils = require 'config.utils'
local lspkind = require 'lspkind'
cmp.setup {
-- enabled = function()
-- return vim.api.nvim_buf_get_option(0, 'buftype') ~= 'prompt' or require('cmp_dap').is_dap_buffer()
-- end,
snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body)
end,
},
view = {
entries = {
name = 'custom', -- can be "custom", "wildmenu" or "native"
-- separator = ' | ',
selection_order = 'near_cursor',
},
},
completion = {
-- completion = {
-- autocomplete = { 'TextChanged', 'CmdlineChanged', 'TextChangedP' },
autocomplete = false,
},
snippet = {
expand = function(args)
require('snippy').expand_snippet(args.body)
end,
},
-- -- autocomplete = false,
-- },
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
experimental = {
ghost_text = true,
ghost_text = {
hl_group = { "Comment" },
},
formatting = {
fields = { 'abbr', 'kind', 'menu' },
format = function(_, item)
local ELLIPSIS_CHAR = ''
local MAX_LABEL_WIDTH = 25
item.kind = string.format('%s', item.kind) -- This concatonates the icons with the name of the item kind
local label = item.abbr
local truncated_label = vim.fn.strcharpart(label, 0, MAX_LABEL_WIDTH)
if truncated_label ~= label then
item.abbr = truncated_label .. ELLIPSIS_CHAR
end
return item
end,
},
mapping = {
['<C-k>'] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(),
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
['<C-e>'] = cmp.mapping {
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
},
['<CR>'] = cmp.mapping.confirm { select = true },
mapping = cmp.mapping.preset.insert {
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item { behavior = cmp.SelectBehavior.Select }
elseif require('snippy').can_expand_or_advance() then
require('snippy').expand_or_advance()
elseif utils.has_words_before() then
cmp.complete()
cmp.select_next_item()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item { behavior = cmp.SelectBehavior.Insert }
elseif require('snippy').can_jump(-1) then
require('snippy').previous()
cmp.select_prev_item()
else
fallback()
end
end, { 'i', 's' }),
['<CR>'] = cmp.mapping.confirm { select = false },
},
sources = {
sources = cmp.config.sources({
{ name = 'luasnip' },
{ name = 'nvim_lsp' },
{ name = 'nvim_lsp_signature_help' },
}, {
{ name = 'path' },
{ name = 'snippy' },
{ name = 'calc' },
{ name = 'buffer' },
}),
formatting = {
format = require 'lspkind'.cmp_format({
mode = 'symbol_text', -- show only symbol annotations
maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
-- can also be a function to dynamically calculate max width such as
-- maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
-- The function below will be called before any actual modifications from lspkind
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
before = function(entry, vim_item)
return vim_item
end
})
},
}
cmp.setup.cmdline(':', {
completion = { autocomplete = { 'TextChanged', 'CmdlineChanged', 'TextChanged' } },
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'cmdline' },
{ name = 'buffer' },
},
-- view = {
-- entries = { name = 'wildmenu', separator = ' · ' },
-- },
})
-- cmp.setup.cmdline('/', {
-- sources = {
-- { name = 'buffer' },
-- },
-- view = {
-- entries = { name = 'wildmenu', separator = ' · ' },
-- },
-- })
-- cmp.setup.filetype({ 'dap-repl', 'dapui_watches', 'dapui_hover' }, {
-- sources = {
-- { name = 'dap' },
-- },
-- })
local npairs = require 'nvim-autopairs'
npairs.setup {
check_ts = true, -- treesitter integration
fast_wrap = {
map = '<C-e>',
highlight = 'Search',
highlight_grey = 'Comment',
},
map_c_w = true,
-- disable_filetype = { "TelescopePrompt" },
}
local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done {})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' },
}, {
{ name = 'cmdline' },
}),
})
end,
}

View File

@ -42,8 +42,7 @@ return {
if ctx.ctype == U.ctype.blockwise then
location = require('ts_context_commentstring.utils').get_cursor_location()
elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
location = require('ts_context_commentstring.utils')
.get_visual_start_location()
location = require('ts_context_commentstring.utils').get_visual_start_location()
end
return require('ts_context_commentstring.internal').calculate_commentstring {

View File

@ -1,82 +1,118 @@
return {
{ 'mfussenegger/nvim-dap', },
{
'mfussenegger/nvim-dap',
keys = function()
local function dap(name)
return function()
require('dap')[name]()
end
end
return {
{ '<leader>dc', dap 'continue', desc = 'continue' },
{ '<leader>ds', dap 'step_into', desc = 'step into' },
{ '<leader>dn', dap 'step_over', desc = 'step over (next)' },
{ '<leader>df', dap 'step_out', desc = 'step out (finish)' },
{ '<leader>db', dap 'toggle_breakpoint', desc = 'toggle breakpoint' },
{
'<leader>do',
function()
vim.ui.input({ prompt = 'Condition: ' }, function(input)
if input == nil then
return
end
require('dap').set_breakpoint(input)
end)
end,
desc = 'set conditional breakpoint',
},
{ '<leader>dl', dap 'clear_breakpoints', desc = 'clear breakpoints' },
{ '<leader>dq', dap 'terminate', desc = 'quit' },
}
end,
},
{
'rcarriga/nvim-dap-ui',
opts = {
controls = {
element = "repl",
element = 'repl',
enabled = true,
icons = {
disconnect = "",
pause = "",
play = "",
run_last = "",
step_back = "",
step_into = "",
step_out = "",
step_over = "",
terminate = ""
}
disconnect = '',
pause = '',
play = '',
run_last = '',
step_back = '',
step_into = '',
step_out = '',
step_over = '',
terminate = '',
},
},
element_mappings = {},
expand_lines = true,
floating = {
border = "single",
border = 'single',
mappings = {
close = { "q", "<Esc>" }
}
close = { 'q', '<Esc>' },
},
},
force_buffers = true,
icons = {
collapsed = "",
current_frame = "",
expanded = ""
collapsed = '',
current_frame = '',
expanded = '',
},
layouts = { {
layouts = {
{
elements = {
{
id = "scopes",
size = 0.5
id = 'scopes',
size = 0.5,
},
-- {
-- id = "breakpoints",
-- size = 0.25
-- },
{
id = "stacks",
size = 0.25
id = 'stacks',
size = 0.25,
},
{
id = "watches",
size = 0.25
}
id = 'watches',
size = 0.25,
},
},
position = 'right',
size = 40,
},
{
elements = {
{
id = 'repl',
size = 0.5,
},
{
id = 'console',
size = 0.5,
},
},
position = 'bottom',
size = 10,
},
},
position = "right",
size = 40
}, {
elements = { {
id = "repl",
size = 0.5
}, {
id = "console",
size = 0.5
} },
position = "bottom",
size = 10
} },
mappings = {
edit = "e",
expand = { "<CR>", "<2-LeftMouse>" },
open = "o",
remove = "d",
repl = "r",
toggle = "t"
edit = 'e',
expand = { '<CR>', '<2-LeftMouse>' },
open = 'o',
remove = 'd',
repl = 'r',
toggle = 't',
},
render = {
indent = 1,
max_value_lines = 100
}
max_value_lines = 100,
},
},
},
}

27
lua/plugins/editing.lua Normal file
View File

@ -0,0 +1,27 @@
return {
{ 'mg979/vim-visual-multi', event = 'VeryLazy' },
{
'ecthelionvi/NeoSwap.nvim',
opts = {},
},
{
'windwp/nvim-autopairs',
event = 'InsertEnter',
config = function()
require('nvim-autopairs').setup {
check_ts = true, -- treesitter integration
fast_wrap = {
map = '<C-e>',
highlight = 'Search',
highlight_grey = 'Comment',
},
map_c_w = true,
disable_filetype = { 'TelescopePrompt' },
}
local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
local cmp = require 'cmp'
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done { map_char = { tex = '' } })
end,
},
}

113
lua/plugins/editor.lua Normal file
View File

@ -0,0 +1,113 @@
return {
{
'echasnovski/mini.diff',
version = false,
event = "VeryLazy",
opts = {
-- Options for how hunks are visualized
view = {
-- Visualization style. Possible values are 'sign' and 'number'.
-- Default: 'number' if line numbers are enabled, 'sign' otherwise.
style = 'sign',
-- Signs used for hunks with 'sign' view
signs = { add = '', change = '', delete = '' },
-- Priority of used visualization extmarks
priority = 199,
},
-- Source for how reference text is computed/updated/etc
-- Uses content from Git index by default
source = nil,
-- Delays (in ms) defining asynchronous processes
delay = {
-- How much to wait before update following every text change
text_change = 200,
},
-- Module mappings. Use `''` (empty string) to disable one.
mappings = {
-- Apply hunks inside a visual/operator region
apply = 'gh',
-- Reset hunks inside a visual/operator region
reset = 'gH',
-- Hunk range textobject to be used inside operator
textobject = 'gh',
-- Go to hunk range in corresponding direction
goto_first = '[H',
goto_prev = '[h',
goto_next = ']h',
goto_last = ']H',
},
-- Various options
options = {
-- Diff algorithm. See `:h vim.diff()`.
algorithm = 'histogram',
-- Whether to use "indent heuristic". See `:h vim.diff()`.
indent_heuristic = true,
-- The amount of second-stage diff to align lines (in Neovim>=0.9)
linematch = 60,
-- Whether to wrap around edges during hunk navigation
wrap_goto = false,
},
}
},
{
'nvim-telescope/telescope.nvim',
dependencies = {
{ 'nvim-lua/plenary.nvim' },
{ 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
{ 'nvim-tree/nvim-web-devicons' },
},
cmd = 'Telescope',
keys = function()
local telescope = require('utils').telescope
return {
{ '<leader>ff', telescope 'find_files', desc = 'files' },
{ '<leader>fg', telescope 'git_files', desc = 'git files' },
{ '<leader>fr', telescope 'live_grep', desc = 'grep' },
{ '<leader>fb', telescope 'buffers', desc = 'buffers' },
{ '<leader>fc', telescope 'colorscheme', desc = 'colorscheme' },
{ '<leader>fh', telescope 'oldfiles', desc = 'history' },
}
end,
config = function()
local telescope = require 'telescope'
telescope.setup {
defaults = {
mappings = {
i = {
["<Esc>"] = require('telescope.actions').close
}
},
}
}
telescope.load_extension 'fzf'
end,
},
{
'f-person/git-blame.nvim',
dependencies = {},
keys = {
{ '<leader>bt', '<Cmd>GitBlameToggle<CR>', desc = 'Blame toggle' },
{ '<leader>bo', '<Cmd>GitBlameOpenCommitURL<CR>', desc = 'Open in browser' },
{ '<leader>bc', '<Cmd>GitBlameCopySHA<CR>', desc = 'Copy SHA1' },
},
config = function()
require('gitblame').setup {
enabled = false,
message_template = ' <author> • <date> • <summary>',
}
end,
},
}

View File

@ -1,42 +0,0 @@
return {
'folke/which-key.nvim',
'nvim-lua/plenary.nvim',
'mfussenegger/nvim-jdtls',
'simrat39/rust-tools.nvim',
'sakhnik/nvim-gdb',
{ 'mg979/vim-visual-multi', event = 'VeryLazy' },
{ 'rush-rs/tree-sitter-asm', ft = 'asm' },
{ 'jghauser/mkdir.nvim', lazy = false },
-- {
-- 'jakewvincent/mkdnflow.nvim',
-- dependencies = 'nvim-lua/plenary.nvim',
-- ft = 'markdown',
-- opts = {},
-- },
{
'glepnir/dbsession.nvim',
cmd = { 'SessionSave', 'SessionDelete', 'SessionLoad' },
opts = {},
},
{
"stevearc/dressing.nvim",
lazy = true,
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,
},
{
"ecthelionvi/NeoSwap.nvim",
opts = {}
},
}

View File

@ -1,44 +0,0 @@
return {
'neovim/nvim-lspconfig',
name = 'lsp',
ft = 'java',
dependencies = { 'williamboman/mason.nvim', 'williamboman/mason-lspconfig.nvim' },
opts = {
-- options for vim.diagnostic.config()
diagnostics = {
underline = true,
update_in_insert = false,
signs = false,
virtual_text = {
source = "if_many",
prefix = "",
-- this will set set the prefix to a function that returns the diagnostics icon based on the severity
-- this only works on a recent 0.10.0 build. Will be set to "●" when not supported
-- prefix = "icons",
},
float = {
focusable = false,
-- style = 'minimal',
border = 'rounded',
source = 'always',
header = '',
prefix = '',
},
severity_sort = true,
},
},
config = function(_, opts)
vim.diagnostic.config(vim.deepcopy(opts.diagnostics))
-- vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, {
-- border = 'rounded',
-- })
-- vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, {
-- border = 'rounded',
-- })
local on_references = vim.lsp.handlers['textDocument/references']
vim.lsp.handlers['textDocument/references'] = vim.lsp.with(on_references, {
-- Use location list instead of quickfix list
loclist = true,
})
end
}

View File

@ -1,4 +1,45 @@
return {
{
'neovim/nvim-lspconfig',
event = { 'BufReadPre', 'BufNewFile' },
dependencies = {
{ 'williamboman/mason.nvim' },
{ 'williamboman/mason-lspconfig.nvim' },
{ 'hrsh7th/cmp-nvim-lsp' },
{ 'mfussenegger/nvim-dap' },
{ 'simrat39/rust-tools.nvim' },
{
'j-hui/fidget.nvim',
opts = {
},
},
},
config = function()
require('plugins.lsp.ui').setup()
vim.diagnostic.config {
underline = true,
update_in_insert = true,
signs = false,
virtual_text = {
source = 'if_many',
prefix = '',
spacing = 5,
-- this will set set the prefix to a function that returns the diagnostics icon based on the severity
-- this only works on a recent 0.10.0 build. Will be set to "●" when not supported
-- prefix = "icons",
},
float = {
focusable = true,
-- style = 'minimal',
border = 'rounded',
source = 'always',
header = '',
prefix = '',
},
severity_sort = true,
}
end,
},
{
'williamboman/mason.nvim',
cmd = 'Mason',
@ -18,9 +59,12 @@ return {
},
},
{
"jay-babu/mason-nvim-dap.nvim",
'jay-babu/mason-nvim-dap.nvim',
dependencies = 'nvim-neotest/nvim-nio',
opts = {
ensure_installed = { 'javatest', 'javadbg', 'codelldb' },
ensure_installed = { --[[ 'javatest', 'javadbg', ]]
'codelldb',
},
handlers = {
function(config)
-- all sources with no handler get passed here
@ -40,17 +84,18 @@ return {
-- require('mason-nvim-dap').default_setup(config) -- don't forget this!
-- end,
},
}
},
},
{
'williamboman/mason-lspconfig.nvim',
dependencies = { 'jay-babu/mason-nvim-dap.nvim', 'rcarriga/nvim-dap-ui' },
dependencies = { 'jay-babu/mason-nvim-dap.nvim', 'rcarriga/nvim-dap-ui', 'Issafalcon/lsp-overloads.nvim' },
config = function()
require('mason').setup()
local cmp_nvim_lsp = require 'cmp_nvim_lsp'
local capabilities = cmp_nvim_lsp.default_capabilities()
local lspconfig = require 'lspconfig'
capabilities.textDocument.completion.completionItem = {
documentationFormat = { "markdown", "plaintext" },
documentationFormat = { 'markdown', 'plaintext' },
snippetSupport = true,
preselectSupport = true,
insertReplaceSupport = true,
@ -60,15 +105,27 @@ return {
tagSupport = { valueSet = { 1 } },
resolveSupport = {
properties = {
"documentation",
"detail",
"additionalTextEdits",
'documentation',
'detail',
'additionalTextEdits',
},
},
}
local function on_attach(client, bufnr)
require('plugins.lsp.keymaps').on_attach(bufnr)
require('plugins.lsp.ui').on_attach(client, bufnr)
-- [[ vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') ]]
if client.server_capabilities.signatureHelpProvider then
require('lsp-overloads').setup(client, {
ui = {
max_width = 60,
max_height = 8,
floating_window_above_cur_line = true,
},
display_automatically = true, -- Uses trigger characters to automatically display the signature overloads when typing a method signature
})
end
if client.name == 'jdtls' or client.name == 'jdt.ls' then
-- client.server_capabilities.documentFormattingProvider = false
vim.lsp.codelens.refresh()
@ -80,7 +137,6 @@ return {
end
-- -- util.info(client.name .. " " .. (enable and "yes" or "no"), "format")
client.server_capabilities.documentFormattingProvider = true
-- client.server_capabilities.documentFormattingProvider = true
client.server_capabilities.semanticTokensProvider = nil
end
@ -88,7 +144,7 @@ return {
function(server_name) -- default handler (optional)
lspconfig[server_name].setup {
on_attach = on_attach,
capabilities = capabilities,
capabilities = vim.deepcopy(capabilities),
}
end,
['clangd'] = function()
@ -112,15 +168,15 @@ return {
on_attach = on_attach,
capabilities = capabilities,
arg = {
unpack(clangd_flags)
}
unpack(clangd_flags),
},
}
end,
['html'] = function()
lspconfig.html.setup {
on_attach = on_attach,
capabilities = capabilities,
filetypes = { "html", "jsp" },
filetypes = { 'html', 'jsp' },
}
end,
['lua_ls'] = function()
@ -148,17 +204,58 @@ return {
},
}
end,
['jdtls'] = function()
end,
['jdtls'] = function() end,
['rust_analyzer'] = function()
require('rust-tools').setup {
local rt = require 'rust-tools'
rt.setup {
server = {
on_attach = on_attach,
standalone = false,
on_attach = function(client, bufnr)
require('plugins.lsp.keymaps').on_attach(bufnr)
require('plugins.lsp.ui').on_attach(client, bufnr)
client.server_capabilities.semanticTokensProvider = nil
if client.server_capabilities.signatureHelpProvider then
require('lsp-overloads').setup(client, {
ui = {
max_width = 60,
max_height = 8,
floating_window_above_cur_line = true,
},
display_automatically = true, -- Uses trigger characters to automatically display the signature overloads when typing a method signature
})
end
-- Hover actions
vim.keymap.set('n', '<C-space>',
rt.hover_actions.hover_actions,
{ buffer = bufnr })
-- Code action groups
vim.keymap.set(
'n',
'<Leader>a',
rt.code_action_group.code_action_group,
{ buffer = bufnr }
)
end,
settings = {
['rust-analyzer'] = {
cargo = { features = 'all' },
check = { allTargets = true },
},
procMacro = {
enable = true,
},
},
},
-- debugging stuff
dap = {
adapter = {
type = 'executable',
command = 'lldb-vscode',
name = 'rt_lldb',
},
},
}
end,
}
end
}
end,
},
}

View File

@ -0,0 +1,38 @@
local M = {}
function M.on_attach(bufnr)
local telescope = require('utils').telescope
local function map(key, rhs, desc)
vim.keymap.set('n', key, rhs, {
silent = true,
buffer = bufnr,
desc = desc,
})
end
map('K', vim.lsp.buf.hover, 'hover')
map('<leader>lf', vim.lsp.buf.format, 'format')
map('<leader>lD', vim.lsp.buf.declaration, 'declaration')
map('<leader>ld', telescope 'lsp_definitions', 'definition')
map('<leader>li', telescope 'lsp_implementations', 'implementation')
map('<leader>lt', telescope 'lsp_type_definitions', 'type defintion')
map('<leader>lr', telescope 'lsp_references', 'references')
map('<leader>ly', telescope 'lsp_document_symbols', 'LSP symbols')
map('<leader>ln', vim.lsp.buf.rename, 'rename')
map('<leader>la', vim.lsp.buf.code_action, 'action')
map('<leader>lp', vim.diagnostic.goto_prev, 'previous diagnostic')
map('<leader>ll', vim.diagnostic.goto_next, 'next diagnostic')
map('<leader>lw', telescope 'diagnostics', 'diagnostics list')
map('<leader>ls', function()
vim.diagnostic.open_float { scope = 'cursor' }
end, 'cursor diagnostic')
map('<leader>lS', function()
vim.diagnostic.open_float { scope = 'line' }
end, 'line diagnostics')
end
return M

53
lua/plugins/lsp/ui.lua Normal file
View File

@ -0,0 +1,53 @@
local M = {}
function M.setup()
-- Signs
local signs = { Error = "", Warn = "", Hint = "", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
-- Floating window borders
local border = {
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
{ "", "FloatBorder" },
}
local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
opts = opts or {}
opts.border = opts.border or border
return orig_util_open_floating_preview(contents, syntax, opts, ...)
end
end
function M.on_attach(client, bufnr)
-- Highlight references
if client.server_capabilities.documentHighlightProvider then
vim.api.nvim_create_augroup("lsp_document_highlight", {
clear = false,
})
vim.api.nvim_clear_autocmds({
group = "lsp_document_highlight",
buffer = bufnr,
})
-- vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
-- group = "lsp_document_highlight",
-- buffer = bufnr,
-- callback = vim.lsp.buf.document_highlight,
-- })
-- vim.api.nvim_create_autocmd("CursorMoved", {
-- group = "lsp_document_highlight",
-- buffer = bufnr,
-- callback = vim.lsp.buf.clear_references,
-- })
end
end
return M

8
lua/plugins/misc.lua Normal file
View File

@ -0,0 +1,8 @@
return {
{ 'jghauser/mkdir.nvim', lazy = false },
{
'glepnir/dbsession.nvim',
cmd = { 'SessionSave', 'SessionDelete', 'SessionLoad' },
opts = {},
},
}

View File

@ -1,7 +1,14 @@
return {
'NeogitOrg/neogit',
dependencies = 'sindrets/diffview.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'sindrets/diffview.nvim', -- optional
'ibhagwan/fzf-lua', -- optional
},
cmd = 'Neogit',
keys = {
{ '<leader>g', '<Cmd>Neogit<CR>', desc = 'neogit' },
},
opts = {
disable_signs = false,
disable_hint = false,

View File

@ -2,12 +2,15 @@ return {
'stevearc/oil.nvim',
-- lazy = false,
event = 'VeryLazy',
keys = {
{ '<leader>.', '<cmd>Oil<cr>', desc = 'oil' },
},
opts = {
columns = {
"mtime",
"size",
"permissions",
"icon",
'mtime',
'size',
'permissions',
'icon',
},
-- Buffer-local options to use for oil buffers
buf_options = {
@ -16,9 +19,9 @@ return {
-- Window-local options to use for oil buffers
win_options = {
wrap = false,
signcolumn = "no",
signcolumn = 'no',
cursorcolumn = false,
foldcolumn = "0",
foldcolumn = '0',
spell = false,
list = false,
conceallevel = 3,

View File

@ -0,0 +1,53 @@
return {
"L3MON4D3/LuaSnip",
keys = {
{
"<C-k>",
function()
if require("luasnip").jumpable(1) then
require("luasnip").jump(1)
end
end,
mode = { "i", "s" },
},
{
"<C-l>",
function()
if require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
end
end,
mode = { "i", "s" },
},
{
"<C-;>",
function()
if require("luasnip").choice_active() then
require("luasnip").change_choice(1)
end
end,
mode = { "i", "s" },
},
{
"<C-j>",
function()
if require("luasnip").choice_active() then
require("luasnip").change_choice(-1)
end
end,
mode = { "i", "s" },
},
},
opts = {
history = true,
update_events = { "TextChanged", "TextChangedI" },
},
config = function(_, opts)
local ls = require("luasnip")
ls.setup(opts)
-- for _, lang in pairs({ "c", "make", "markdown", "tiger", "sh", "nix" }) do
-- ls.add_snippets(lang, require("plugins.snippets." .. lang))
-- end
-- ls.add_snippets("cpp", require("plugins.snippets.c"))
end,
}

View File

@ -1,159 +0,0 @@
local l = false
return {
{
-- url = 'https://git.filnar.com/fiplox/neogruber.git',
dir = '~/dev/home/neogruber.nvim/',
lazy = false,
opts = {
transparent = true,
light = l,
}
-- event = 'VeryLazy'
},
-- {
-- "Mofiqul/adwaita.nvim",
-- lazy = false,
-- priority = 1000,
-- -- configure and set on startup
-- config = function()
-- vim.g.adwaita_darker = false -- for darker version
-- vim.g.adwaita_disable_cursorline = false -- to disable cursorline
-- vim.g.adwaita_transparent = true -- makes the background transparent
-- -- vim.cmd('colorscheme adwaita')
-- end
-- },
{
'freddiehaddad/feline.nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
},
config = function()
local feline = require 'feline'
local utils = require 'config.utils'
local c = utils.feline_c
local theme
if l then
theme = utils.feline_theme_light
else
theme = utils.feline_theme_dark
end
local vi_mode_colors = utils.feline_vi_mode_colors
local left = {
c.vim_mode,
-- c.gitBranch,
-- c.gitDiffAdded,
-- c.gitDiffRemoved,
-- c.gitDiffChanged,
c.file_info,
c.right_separator,
c.lsp_client_names,
c.diagnostic_errors,
c.diagnostic_warnings,
c.diagnostic_info,
c.diagnostic_hints,
}
-- local middle = {
-- c.separator,
-- }
local right = {
c.file_type,
c.search_count,
c.macro,
c.file_encoding,
-- c.startup,
c.line_percentage,
c.select_count,
c.position,
}
local components = {
active = {
left,
-- middle,
right,
},
inactive = {
left,
-- middle,
right,
},
}
feline.setup {
components = components,
theme = theme,
vi_mode_colors = vi_mode_colors,
}
end,
},
-- {
-- 'nvim-lualine/lualine.nvim',
-- dependencies = { 'nvim-tree/nvim-web-devicons', 'nvim-lua/lsp-status.nvim' },
-- opts = {
-- options = {
-- theme = "adwaita"
-- },
-- sections = {
-- lualine_a = { 'mode' },
-- lualine_b = { 'branch', 'diff', 'diagnostics' },
-- lualine_c = { 'filename', "require'lsp-status'.status()" },
-- lualine_x = { 'encoding', 'fileformat', 'filetype' },
-- lualine_y = { 'progress' },
-- lualine_z = { 'location' }
-- },
-- inactive_sections = {
-- lualine_a = {},
-- lualine_b = {},
-- lualine_c = { 'filename', "require'lsp-status'.status()" },
-- lualine_x = { 'location' },
-- lualine_y = {},
-- lualine_z = {}
-- },
-- tabline = {},
-- winbar = {},
-- inactive_winbar = {},
-- extensions = {}
-- },
-- },
-- {
-- 'nvimdev/dashboard-nvim',
-- event = 'VimEnter',
-- opts = {
-- -- theme = 'doom',
-- theme = 'hyper',
-- shortcut_type = 'number',
-- config = {
-- shortcut = {
-- -- action can be a function type
-- {
-- desc = "Files",
-- group = '',
-- key = 'f',
-- action = 'edit .'
-- },
-- },
-- packages = { enable = false }, -- show how many plugins neovim loaded
-- -- limit how many projects list, action when you press key or enter it will run this action.
-- -- action can be a functino type, e.g.
-- -- action = func(path) vim.cmd('Telescope find_files cwd=' .. path) end
-- project = {
-- enable = true,
-- limit = 8,
-- -- icon = ' ',
-- label = '',
-- action = 'edit'
-- },
-- mru = {
-- limit = 10,
-- -- icon = 'your icon',
-- label = '',
-- },
-- footer = {}, -- footer
-- }
-- },
-- dependencies = { { 'nvim-tree/nvim-web-devicons' } }
-- },
}

View File

@ -1,6 +1,10 @@
return {
'akinsho/toggleterm.nvim',
cmd = 'ToggleTerm',
keys = {
{ "<home>", '<cmd>ToggleTerm direction=horizontal<cr>', mode = { 'n', 't', 'v', 'i' }, desc = "Toggle Terminal" },
{ "<end>", '<cmd>ToggleTerm direction=float<cr>', mode = { 'n', 't', 'v', 'i' }, desc = "Toggle Terminal floating" },
},
opts = {
-- size can be a number or function which is passed the current terminal
-- size = function(term)

View File

@ -1,13 +1,17 @@
return {
'nvim-treesitter/nvim-treesitter',
-- lazy = false,
-- dependencies = { 'nvim-treesitter/playground' },
dependencies = { 'rush-rs/tree-sitter-asm' },
-- dependencies = 'windwp/nvim-ts-autotag',
event = 'VeryLazy',
init = function(plugin)
require("lazy.core.loader").add_to_rtp(plugin)
require("nvim-treesitter.query_predicates")
end,
keys = {
{ '<leader>s', desc = 'start incremental selection' },
{ '<leader>h', '<cmd>TSBufToggle highlight<cr>', desc = 'toggle TS highlight' },
},
-- init = function(plugin)
-- require('lazy.core.loader').add_to_rtp(plugin)
-- require 'nvim-treesitter.query_predicates'
-- end,
config = function()
require('nvim-treesitter.parsers').get_parser_configs().asm = {
install_info = {
@ -20,14 +24,30 @@ return {
configs.setup {
ignore_install = { 'haskell' },
ensure_installed = { 'c', 'rust', 'lua', 'vim', 'vimdoc', 'cpp', 'go' },
auto_install = true,
highlight = {
enable = true, -- false will disable the whole extension
disable = { 'html' },
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<leader>s',
node_incremental = '<Space>',
scope_incremental = false,
node_decremental = '<S-Space>',
},
},
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
disable = function(_, buf)
local max_filesize = 300 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end,
-- context_commentstring = { enable = true, config = { css = '// %s' } },
-- indent = {enable = true, disable = {"python", "html", "javascript"}},
-- TODO seems to be broken
indent = { enable = true, disable = { 'python', 'css' } },
indent = { enable = true },
-- autotag = { enable = true },
}
end,

152
lua/plugins/ui.lua Normal file
View File

@ -0,0 +1,152 @@
return {
{
'blazkowolf/gruber-darker.nvim',
lazy = false,
opts = {
-- invert = {
-- signs = true,
-- tabline = true,
-- visual = true,
-- },
},
},
{
'freddiehaddad/feline.nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
},
config = function()
local feline = require 'feline'
local utils = require 'config.utils'
local c = utils.feline_c
local theme = utils.feline_theme_dark
-- if l then
-- theme = utils.feline_theme_light
-- else
-- theme = utils.feline_theme_dark
-- end
local vi_mode_colors = utils.feline_vi_mode_colors
local left = {
c.vim_mode,
-- c.gitBranch,
-- c.gitDiffAdded,
-- c.gitDiffRemoved,
-- c.gitDiffChanged,
c.file_info,
c.right_separator,
c.lsp_client_names,
c.diagnostic_errors,
c.diagnostic_warnings,
c.diagnostic_info,
c.diagnostic_hints,
}
-- local middle = {
-- c.separator,
-- }
local right = {
c.file_type,
c.search_count,
c.macro,
c.file_encoding,
-- c.startup,
c.line_percentage,
c.select_count,
c.position,
}
local components = {
active = {
left,
-- middle,
right,
},
inactive = {
left,
-- middle,
right,
},
}
feline.setup {
components = components,
theme = theme,
vi_mode_colors = vi_mode_colors,
}
end,
},
{
'rcarriga/nvim-notify',
lazy = true,
keys = {
{
'<leader>k',
function()
require('notify').dismiss()
end,
desc = 'dismiss notifications',
},
},
init = function()
vim.notify = function(...)
return require 'notify' (...)
end
end,
},
{
'stevearc/dressing.nvim',
lazy = true,
opts = {
input = {
win_options = { winblend = 0 },
},
},
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,
},
{
"lukas-reineke/indent-blankline.nvim",
event = { "BufReadPost", "BufNewFile" },
main = "ibl",
config = function()
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require "ibl.hooks"
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
vim.g.rainbow_delimiters = { highlight = highlight }
require("ibl").setup { scope = { highlight = highlight, show_start = false } }
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
end
}
}

View File

@ -29,8 +29,8 @@ return {
-- 'google',
-- },
-- },
formatting.beautysh,
formatting.latexindent,
-- formatting.beautysh,
-- formatting.latexindent,
formatting.goimports,
formatting.gofumpt,
formatting.sql_formatter,

80
lua/plugins/which-key.lua Normal file
View File

@ -0,0 +1,80 @@
return {
'folke/which-key.nvim',
event = 'VeryLazy',
config = function()
local wk = require 'which-key'
wk.setup {
plugins = {
marks = true, -- shows a list of your marks on ' and `
registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
-- the presets plugin, adds help for a bunch of default keybindings in Neovim
-- No actual key bindings are created
presets = {
operators = true, -- adds help for operators like d, y, ...
motions = true, -- adds help for motions
text_objects = false, -- help for text objects triggered after entering an operator
windows = true, -- default bindings on <c-w>
nav = true, -- misc bindings to work with windows
z = true, -- bindings for folds, spelling and others prefixed with z
g = true, -- bindings for prefixed with g
},
},
icons = {
breadcrumb = '»', -- symbol used in the command line area that shows your active key combo
separator = '', -- symbol used between a key and it's label
group = '+', -- symbol prepended to a group
},
window = {
border = 'none', -- none, single, double, shadow
position = 'bottom', -- bottom, top
margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
padding = { 1, 1, 1, 1 }, -- extra window padding [top, right, bottom, left]
},
layout = {
height = { min = 4, max = 25 }, -- min and max height of the columns
width = { min = 20, max = 50 }, -- min and max width of the columns
spacing = 3, -- spacing between columns
},
hidden = { '<silent>', '<cmd>', '<Cmd>', '<CR>', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate
show_help = true, -- show help message on the command line when the popup is visible
}
local opts = {
mode = 'n', -- NORMAL mode
prefix = '<leader>',
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
silent = true, -- use `silent` when creating keymaps
noremap = true, -- use `noremap` when creating keymaps
nowait = false, -- use `nowait` when creating keymaps
}
local mappings = {
['o'] = { '<cmd>e ~/.config/nvim/ <cr>', 'Neovim config' },
['rr'] = 'Search and replace all',
['rs'] = 'Search and replace',
['q'] = { '<cmd>lua UnMapDHM()<cr>', 'qwerty' },
['c'] = { '<cmd>lua MapDHM()<cr>', 'colemak' },
[';'] = { '<cmd>bd<cr>', 'Delete buffer' },
['<TAB>'] = {
name = 'Tab',
n = { '<cmd>tabnew<cr>', 'New' },
p = { '<cmd>tabp<cr>', 'Previous' },
d = { '<cmd>tabclose<cr>', 'Close' },
['<TAB>'] = { '<cmd>tabnext<cr>', 'Next' },
['1'] = { '1gt', 'Go to tab 1' },
['2'] = { '2gt', 'Go to tab 2' },
['3'] = { '3gt', 'Go to tab 3' },
['4'] = { '4gt', 'Go to tab 4' },
['5'] = { '5gt', 'Go to tab 5' },
['6'] = { '6gt', 'Go to tab 6' },
['7'] = { '7gt', 'Go to tab 7' },
['8'] = { '8gt', 'Go to tab 8' },
['9'] = { '9gt', 'Go to tab 9' },
},
w = {
name = 'Window',
v = { '<C-w>v', 'Vertical split' },
h = { '<C-w>s', 'Horizontal split' },
},
}
wk.register(mappings, opts)
end,
}

View File

@ -1,13 +0,0 @@
return {
'javiorfo/nvim-wildcat',
lazy = true,
cmd = { "WildcatRun" },
dependencies = { 'javiorfo/nvim-popcorn' },
opts = {
tomcat = {
home = "/home/fiplox/Software/apache-tomcat-10.1.13/",
app_base = "webapps",
default = true
}
}
}

17
lua/utils.lua Normal file
View File

@ -0,0 +1,17 @@
local M = {}
function M.telescope(builtin)
return function()
require("telescope.builtin")[builtin]()
end
end
function M.get_or_default(value, default)
if value ~= nil then
return value
else
return default
end
end
return M

BIN
spell/fr.utf-8.spl Normal file

Binary file not shown.

BIN
spell/fr.utf-8.sug Normal file

Binary file not shown.