feat!: new config
inspired by https://github.com/BijanVeyssi/nvim-config
This commit is contained in:
		
							parent
							
								
									d50d533dd9
								
							
						
					
					
						commit
						d79e2d5ecb
					
				
							
								
								
									
										10
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								init.lua
									
									
									
									
									
								
							@ -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,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
-- })
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
]])
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -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',
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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 {
 | 
			
		||||
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										27
									
								
								lua/plugins/editing.lua
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										113
									
								
								lua/plugins/editor.lua
									
									
									
									
									
										Normal 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,
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
@ -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 = {}
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
@ -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
 | 
			
		||||
}
 | 
			
		||||
@ -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,
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								lua/plugins/lsp/keymaps.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								lua/plugins/lsp/keymaps.lua
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										53
									
								
								lua/plugins/lsp/ui.lua
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										8
									
								
								lua/plugins/misc.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
return {
 | 
			
		||||
	{ 'jghauser/mkdir.nvim', lazy = false },
 | 
			
		||||
	{
 | 
			
		||||
		'glepnir/dbsession.nvim',
 | 
			
		||||
		cmd = { 'SessionSave', 'SessionDelete', 'SessionLoad' },
 | 
			
		||||
		opts = {},
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								lua/plugins/snippets/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								lua/plugins/snippets/init.lua
									
									
									
									
									
										Normal 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,
 | 
			
		||||
}
 | 
			
		||||
@ -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' } }
 | 
			
		||||
	-- },
 | 
			
		||||
}
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										152
									
								
								lua/plugins/ui.lua
									
									
									
									
									
										Normal 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
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										80
									
								
								lua/plugins/which-key.lua
									
									
									
									
									
										Normal 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,
 | 
			
		||||
}
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										17
									
								
								lua/utils.lua
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								spell/fr.utf-8.spl
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								spell/fr.utf-8.sug
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								spell/fr.utf-8.sug
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user