Compare commits

..

41 Commits

Author SHA1 Message Date
ba5fd1c33b Update fillchars option to use Lua table syntax 2026-02-02 20:54:29 +00:00
ff14f16bbd Replace deprecated vim.loop API with vim.uv 2026-02-02 20:54:28 +00:00
00b5d44396 Enable experimental Lua loader to improve startup time 2026-02-02 20:54:27 +00:00
9a6765df45 Use Lua API to delete Y keymap 2026-02-02 20:35:44 +00:00
280c00b272 Add keymap to format whole file with gw
Introduces `<leader>gw` to format the entire buffer using the internal
formatting operator gw. It preserves the current window view (cursor
position and scroll) during the operation.
2026-02-02 20:30:45 +00:00
31a03cac7b Add treesitter keymap to reset foldmethod
Seems like treesitter folds get into a confused situation, potentially a
race condition, which is fixed by setting `foldmethod=expr`. This
mapping makes that faster.
2026-01-15 16:40:06 +00:00
f59a288d59 Also don't highlight todo in mojo files 2026-01-05 11:51:13 +00:00
5def28d407 Reformat utilities.lua 2025-12-18 22:54:27 +00:00
2dec8af915 Disable signcolumn in dap-view-term filetype 2025-12-17 21:43:23 +00:00
27c50224f7 Enable dap-view auto toggle 2025-12-17 21:37:25 +00:00
39967dc120 Remove crashy console section from dap-view 2025-12-17 21:37:21 +00:00
bea244a4aa Add nvim-dap-disasm to view disassembly during debug 2025-12-17 21:18:29 +00:00
f08562558b Add DapViewToggle mapping 2025-12-17 21:17:19 +00:00
bc5ddb6dc7 Add restart & run_to_cursor dap mappings 2025-12-17 20:55:54 +00:00
f213c20d23 Update switchbuf for better nvim-dap usage 2025-12-16 19:31:43 +00:00
481c127583 Add console to nvim-dap-view's buffer 2025-12-16 19:19:55 +00:00
e0286197f8 Cleanup debugger plugin config 2025-12-16 19:19:08 +00:00
6fefe27f0e nvim-treesitter has breaking changes use master branch 2025-12-16 19:17:56 +00:00
82143dea23 Update switchbuf to include newtab 2025-12-16 19:14:30 +00:00
144d2b11cf Add nvim-dap & nvim-dap-view
Also don't enter insert mode when launching a debug session.
2025-12-16 18:24:50 +00:00
44199d81b4 Remove config = true from mdx pluing config 2025-12-16 18:24:04 +00:00
6401649361 Remove now default K mapping for LSP hover 2025-12-16 17:08:36 +00:00
ee385eb5da Cleanup completion plugins configuration 2025-12-16 17:08:36 +00:00
95d8c16621 Add pythonTodo to the list of naughty highlight groups 2025-12-04 14:57:16 +00:00
25209c7928 Remove broken mdx LSP 2025-11-21 14:10:03 +00:00
555644bc02 Add MDX LSP, filetype, and syntax highlighting 2025-11-21 12:08:01 +00:00
f51bbe1236 Add Hammerspoon Lua completions 2025-11-11 23:01:08 +00:00
b65d0ef36d Revert to the goated vim-unimpaired 2025-11-06 16:08:28 +00:00
65c394a681 Add vim-rhubarb for GitHub support in :GBrowse 2025-11-06 16:01:46 +00:00
4a03e07c59 Add marksman language server for markdown 2025-11-04 20:47:50 +00:00
3a8fb33ced Disable QuickFiles for now
This command can be invoked with `:Q` at the moment which happens
accidentally way more than I actually use this command.
2025-11-03 12:21:44 +00:00
3d736dca8a Switch to oil.nvim and drop netrw 2025-09-14 20:51:08 +01:00
745f6c408b Disable spell mode highlight groups if harper-ls installed 2025-08-27 11:04:23 +01:00
62f3061f48 Use tmux clipboard provider on Wayland
On Gnome Shell on Wayland `wl-copy` is automatically detected but using
it requires switching focus to the temporary invisible window it creates
as a workaround to the Wayland security feature that only the focused
application can interact with the clipboard. This does not happen when
`nvim` is run outside of `tmux`, so I can only assume that `tmux` is
seen to be the focused application, even though it's running inside
`kitty`, rather than `nvim` when running inside `tmux`.
2025-08-26 20:47:08 +01:00
8653c8b4cd Use same settings for gomod filetype as go 2025-08-26 20:40:28 +01:00
d261a49feb Add tinymist lsp 2025-08-19 23:09:43 +01:00
53ad787167 Ensure vim.lsp.hover has a rounded border 2025-08-19 17:04:05 +01:00
595c45724d Add most commonly used Doxygen comment snippets 2025-08-14 12:21:53 +01:00
4fc07f90d4 Fix typo 2025-08-13 15:06:46 +01:00
53d9b50e0b Reenable broadcast of extended LSP capabilities 2025-08-13 14:54:33 +01:00
4f38790589 Fix some lint in completsions.lua 2025-08-13 14:54:15 +01:00
18 changed files with 302 additions and 171 deletions

View File

@@ -0,0 +1 @@
vim.o.signcolumn = 'no'

6
after/ftplugin/gomod.lua Normal file
View File

@@ -0,0 +1,6 @@
vim.opt.expandtab = false
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.wo.listchars = 'extends:»,nbsp:⦸,precedes:«,tab: ,trail:·'
vim.bo.formatprg = 'gofmt'

View File

@@ -1,3 +1,5 @@
vim.loader.enable()
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
@@ -11,7 +13,7 @@ end
pcall(function() require('local') end)
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
if not vim.uv.fs_stat(lazypath) then
vim.fn.system({ 'git', 'clone', '--filter=blob:none',
'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath })
end

View File

@@ -36,7 +36,9 @@ local kanagawa = {
-- Don't lighlight TODO specially in comments
for _, todo_group in pairs({
'confTodo',
'mojoTodo',
'ps1CommentTodo',
'pythonTodo',
'zshTodo',
}) do
vim.cmd.highlight('link ' .. todo_group .. ' Comment')

View File

@@ -1,52 +1,3 @@
-- Language servers
local ensure_installed = {
'clangd', -- C/C++
'lua_ls', -- Lua
'opencl_ls', -- OpenCL
'harper_ls', -- Spelling & grammar
}
if vim.fn.executable('npm') == 1 then
local ensure_install_from_npm = {
'ansiblels', -- Ansible
'bashls', -- Bash
'docker_compose_language_service', -- Docker Compose
'dockerls', -- Dockerfile
'html', -- HTML
'jsonls', -- JSON
'pyright', -- Python
'vimls', -- VimScript
'yamlls', -- YAML
}
for _, package in ipairs(ensure_install_from_npm) do
table.insert(ensure_installed, package)
end
end
if vim.fn.executable('pip') == 1 then
local ensure_install_from_pip = {
'cmake', -- CMake
'esbonio', -- Sphinx
'ruff', -- Python
}
for _, package in ipairs(ensure_install_from_pip) do
table.insert(ensure_installed, package)
end
end
if vim.fn.executable('go') == 1 then
local ensure_installed_from_go = {
'gopls', -- Go
}
for _, package in ipairs(ensure_installed_from_go) do
table.insert(ensure_installed, package)
end
end
if vim.fn.has('win32') == 1 then
table.insert(ensure_installed, 'powershell_es')
end
return {
'neovim/nvim-lspconfig',
dependencies = {
@@ -82,44 +33,95 @@ return {
},
config = function()
local lspconfig_default_opts = {
-- Broadcast full client capabilities to language servers
capabilities = vim.tbl_deep_extend(
'force', vim.lsp.protocol.make_client_capabilities(),
require('cmp_nvim_lsp').default_capabilities()),
}
local capabilities = vim.tbl_deep_extend(
'force', vim.lsp.protocol.make_client_capabilities(),
require('cmp_nvim_lsp').default_capabilities())
require('mason').setup()
require('mason-lspconfig').setup({
automatic_installation = false,
ensure_installed = ensure_installed,
})
local server_opts = {
clangd = {
cmd = { 'clangd', '--completion-style=detailed' },
},
vim.lsp.config('clangd', {
cmd = { 'clangd', '--completion-style=detailed' },
})
vim.lsp.config('lua_ls', {
settings = {
Lua = {
diagnostics = {
disable = { 'missing-fields', },
globals = { 'vim', },
lua_ls = {
settings = {
Lua = {
diagnostics = {
disable = { 'missing-fields', },
globals = { 'vim', },
},
workspace = {
library = {
vim.fn.expand('~/.hammerspoon/Spoons'),
vim.fn.expand('~/.hammerspoon/Spoons/EmmyLua.spoon/annotations/'),
}
}
},
},
},
})
vim.lsp.config('pyright', {
settings = {
pyright = {
disableOrganizeImports = true,
pyright = {
settings = {
pyright = {
disableOrganizeImports = true,
},
},
},
})
vim.lsp.config('harper_ls', {
filetypes = {}, -- Disable for all filetypes
harper_ls = {
filetypes = {}, -- Disable for all filetypes
},
}
for server, opts in pairs(server_opts) do
-- Broadcast full client capabilities to language servers
opts.capabilities = vim.tbl_deep_extend(
'force', {}, capabilities, opts.capabilities or {})
vim.lsp.config(server, opts)
end
require('mason').setup()
local language_servers = {
'clangd', -- C/C++
'lua_ls', -- Lua
'opencl_ls', -- OpenCL
'harper_ls', -- Spelling & grammar
'marksman', -- Markdown
'tinymist', -- Typst
}
if vim.fn.executable('npm') == 1 then
for _, package in ipairs({
'ansiblels', -- Ansible
'bashls', -- Bash
'docker_compose_language_service', -- Docker Compose
'dockerls', -- Dockerfile
'html', -- HTML
'jsonls', -- JSON
'pyright', -- Python
'vimls', -- VimScript
'yamlls', -- YAML
}) do table.insert(language_servers, package) end
end
if vim.fn.executable('pip') == 1 then
for _, package in ipairs({
'cmake', -- CMake
'esbonio', -- Sphinx
'ruff', -- Python
}) do table.insert(language_servers, package) end
end
if vim.fn.executable('go') == 1 then
table.insert(language_servers, 'gopls') -- Go
end
if vim.fn.has('win32') == 1 then
table.insert(language_servers, 'powershell_es') -- PowerShell
end
require('mason-lspconfig').setup({
ensure_installed = language_servers,
})
-- (Dis|en)able harper-ls when spell mode is (dis|en)enabled.
@@ -173,7 +175,7 @@ return {
},
formatting = {
format = function(entry, vim_item)
format = function(_, vim_item)
-- Set a limit to how wide the completion menu can be
local winwidth = vim.fn.winwidth(vim.api.nvim_get_current_win())
local menuwidth = math.min(winwidth / 2, 70)
@@ -191,7 +193,7 @@ return {
documentation = cmp.config.window.bordered(),
},
preselect = 'none', -- Don't preselect completions suggested by source
preselect = 'None', -- Don't preselect completions suggested by source
})
require("cmp_git").setup({})
@@ -222,16 +224,10 @@ return {
-- Refactoring mappings
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
-- Help mappings
-- TODO: v0.10.0 |vim.lsp.start()| now maps |K| to use
-- |vim.lsp.buf.hover()| if the server supports it, unless
-- |'keywordprg'| was customized before calling |vim.lsp.start()|.
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
-- Format whole buffer mapping
vim.keymap.set('n', '<leader>gq', vim.lsp.buf.format, opts)
-- Swtich file using clangd extension
-- Switch file using clangd extension
-- TODO: limit this to only filetypes supported by clangd
vim.keymap.set('n', '<leader>sf',
':ClangdSwitchSourceHeader<CR>', { silent = true })
@@ -247,5 +243,15 @@ return {
toggle_key_flip_floatwin_setting = true,
select_signature_key = '<C-l>',
})
-- When harper-ls is installed
local mason_registry = require('mason-registry')
if mason_registry.is_installed('harper-ls') then
-- Disable builtin spell mode highlighting
vim.cmd.highlight('SpellBad', 'NONE')
vim.cmd.highlight('SpellCap', 'NONE')
vim.cmd.highlight('SpellLocal', 'NONE')
vim.cmd.highlight('SpellRare', 'NONE')
end
end
}

64
lua/plugins/debugger.lua Normal file
View File

@@ -0,0 +1,64 @@
return {
'mfussenegger/nvim-dap',
dependencies = {
'igorlfs/nvim-dap-view',
'kbenzie/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
'theHamsta/nvim-dap-virtual-text',
'Jorenar/nvim-dap-disasm',
},
config = function()
local dap = require('dap')
-- Installation
local debug_adapters = {
'codelldb', -- C/C++/Rust/Zig
}
if vim.fn.executable('pip') == 1 then
table.insert(debug_adapters, 'python') -- Python
end
if vim.fn.executable('go') == 1 then
table.insert(debug_adapters, 'delve') -- Go
end
require("mason-nvim-dap").setup({
ensure_installed = debug_adapters,
handlers = {},
})
-- UI plugins
require('dap-view').setup({
auto_toggle = true,
})
require('nvim-dap-virtual-text').setup({})
require('dap-disasm').setup({
dapview_register = true,
})
vim.api.nvim_create_autocmd({ "FileType" }, {
pattern = {
'dap-float',
},
callback = function(args)
vim.keymap.set("n", "q", "<C-w>q", { buffer = args.buf })
end,
})
local widgets = require('dap.ui.widgets')
-- Mappings
vim.keymap.set('n', '<leader>D', vim.cmd.DapViewToggle)
vim.keymap.set('n', '<F5>', dap.continue)
vim.keymap.set('n', '<F17>', dap.terminate) -- Shift-F5
vim.keymap.set('n', '<F9>', dap.toggle_breakpoint)
vim.keymap.set('n', '<F21>', vim.cmd.DapViewWatch) -- Shift-F9
vim.keymap.set('n', '<F41>', dap.restart) -- Ctrl-Shift-F5
vim.keymap.set('n', '<F34>', dap.run_to_cursor) -- Ctrl-F10
vim.keymap.set('n', '<F11>', dap.step_into)
vim.keymap.set('n', '<F23>', dap.step_out) -- Shift-F11
vim.keymap.set('n', '<F10>', dap.step_over)
vim.keymap.set('n', '<leader>K', widgets.hover)
end,
}

View File

@@ -1,5 +1,6 @@
return {
{ 'tpope/vim-fugitive', lazy = false },
{ 'tpope/vim-rhubarb', lazy = false },
{
'lewis6991/gitsigns.nvim',
config = function()

6
lua/plugins/mdx.lua Normal file
View File

@@ -0,0 +1,6 @@
return {
'davidmh/mdx.nvim',
dependencies = {
'nvim-treesitter/nvim-treesitter',
},
}

29
lua/plugins/oil.lua Normal file
View File

@@ -0,0 +1,29 @@
return {
'stevearc/oil.nvim',
dependencies = {
"nvim-tree/nvim-web-devicons",
},
lazy = false,
config = function()
require('oil').setup({
keymaps = {
["g?"] = { "actions.show_help", mode = "n" },
["<CR>"] = "actions.select",
["<leader>l"] = "actions.refresh",
["-"] = { "actions.parent", mode = "n" },
["_"] = { "actions.open_cwd", mode = "n" },
["`"] = { "actions.cd", mode = "n" },
["~"] = { "actions.cd", opts = { scope = "tab" }, mode = "n" },
["gs"] = { "actions.change_sort", mode = "n" },
["gx"] = "actions.open_external",
["g."] = { "actions.toggle_hidden", mode = "n" },
["g\\"] = { "actions.toggle_trash", mode = "n" },
},
use_default_keymaps = false,
})
vim.keymap.set("n", "-", function()
local dir = vim.fn.expand("%:h")
vim.cmd.Oil(dir ~= "" and dir or ".")
end, {})
end
}

View File

@@ -1,5 +1,6 @@
return {
'nvim-treesitter/nvim-treesitter',
branch = 'master',
dependencies = {
'nvim-treesitter/nvim-treesitter-textobjects',
{ 'nvim-treesitter/nvim-treesitter-context', opts = {} },
@@ -97,5 +98,10 @@ return {
},
},
})
-- Keymaps
vim.keymap.set('n', '<leader>fm', function()
vim.o.foldmethod = 'expr'
end, {})
end
}

View File

@@ -33,13 +33,18 @@ local noice = {
return {
-- noice,
{ 'echasnovski/mini.comment', opts = { options = { ignore_blank_line = true } } },
{
'idanarye/nvim-impairative',
config = function()
require('impairative').setup({})
require('impairative.replicate-unimpaired')()
end},
'echasnovski/mini.comment',
opts = {
options = {
ignore_blank_line = true,
}
},
},
{
'tpope/vim-unimpaired',
lazy = false,
},
{ 'stevearc/dressing.nvim' },
{ 'kevinhwang91/nvim-bqf' },
}

View File

@@ -25,10 +25,17 @@ vim.api.nvim_create_autocmd('BufRead', {
-- Start terminals in insert mode
vim.api.nvim_create_autocmd('TermOpen', {
group = group, pattern = 'term://*',
callback = function()
group = group,
pattern = 'term://*',
callback = function(args)
-- nvim-dap/nvim-dap-view uses terminal buffers in the background which are
-- not visible, don't start insert mode if the dap-type variable exists.
local success, dap_type = pcall(vim.api.nvim_buf_get_var, args.buf, 'dap-type')
if success and dap_type then
return
end
vim.cmd.startinsert()
end
end,
})
-- Automatically press enter when the terminal process exit successfully

View File

@@ -52,7 +52,7 @@ vim.api.nvim_create_user_command('Remove', function(opts)
end
end
-- Actually remove the file using the selected callback.
vim.loop.fs_unlink(path, callback)
vim.uv.fs_unlink(path, callback)
end, { bang = true })
-- :Move the file associated with the current buffer
@@ -62,7 +62,7 @@ vim.api.nvim_create_user_command('Move', function(opts)
if vim.fn.isdirectory(dest) ~= 0 then
dest = vim.fn.resolve(dest .. '/' .. vim.fn.expand('%:t'))
end
vim.loop.fs_rename(source, dest, function(err, success)
vim.uv.fs_rename(source, dest, function(err, success)
if success then
vim.schedule(function()
vim.cmd.edit(dest)
@@ -87,7 +87,7 @@ vim.api.nvim_create_user_command('Rename', function(opts)
dest = vim.fn.resolve(dir .. '/' .. opts.args)
end
local buffer = vim.api.nvim_get_current_buf()
vim.loop.fs_rename(source, dest, function(err, success)
vim.uv.fs_rename(source, dest, function(err, success)
if not success then
error(err)
else
@@ -206,34 +206,34 @@ vim.api.nvim_create_user_command('DiagnosticToggle', function(_)
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
end, {})
-- :QuickFiles creates a floating window for the user to input a list of files
-- then populates and opens the quickfix list.
vim.api.nvim_create_user_command('QuickFiles', function()
-- Create scratch buffer & set options
local buffer = vim.api.nvim_create_buf(false, true)
vim.bo[buffer].errorformat = "%f"
-- -- :QuickFiles creates a floating window for the user to input a list of files
-- -- then populates and opens the quickfix list.
-- vim.api.nvim_create_user_command('QuickFiles', function()
-- -- Create scratch buffer & set options
-- local buffer = vim.api.nvim_create_buf(false, true)
-- vim.bo[buffer].errorformat = "%f"
-- Calculate floating window dimensions
local ui = vim.api.nvim_list_uis()[1]
local width = math.floor(ui.width * 0.6)
local height = math.floor(ui.height * 0.4)
-- -- Calculate floating window dimensions
-- local ui = vim.api.nvim_list_uis()[1]
-- local width = math.floor(ui.width * 0.6)
-- local height = math.floor(ui.height * 0.4)
-- Create the floating window
local window = vim.api.nvim_open_win(buffer, true, {
relative = 'editor',
width = width,
height = height,
row = math.floor((ui.height - height) / 2),
col = math.floor((ui.width - width) / 2),
style = 'minimal',
border = 'rounded',
title = 'QuickFiles',
title_pos = "center",
})
-- -- Create the floating window
-- local window = vim.api.nvim_open_win(buffer, true, {
-- relative = 'editor',
-- width = width,
-- height = height,
-- row = math.floor((ui.height - height) / 2),
-- col = math.floor((ui.width - width) / 2),
-- style = 'minimal',
-- border = 'rounded',
-- title = 'QuickFiles',
-- title_pos = "center",
-- })
vim.keymap.set('n', 'q', function()
vim.cmd.cbuffer()
vim.api.nvim_win_close(window, true)
vim.cmd.cwindow()
end, { buffer = buffer, nowait = true, silent = true })
end, {})
-- vim.keymap.set('n', 'q', function()
-- vim.cmd.cbuffer()
-- vim.api.nvim_win_close(window, true)
-- vim.cmd.cwindow()
-- end, { buffer = buffer, nowait = true, silent = true })
-- end, {})

View File

@@ -29,7 +29,7 @@ vim.keymap.set('', '<leader>p', '"+p', opts)
vim.keymap.set('', '<leader>P', '"+P', opts)
-- Undo neovim's default mapping of Y to y$
vim.cmd.unmap('Y')
vim.keymap.del('n', 'Y')
-- Make nvim :terminal more like vim :terminal
vim.keymap.set('t', '<C-w>N', '<C-\\><C-n>', opts)
@@ -50,3 +50,10 @@ vim.keymap.set('v', '<leader>rg', ":'<,'>Rg<CR>", opts)
-- Mapping to toggle checkboxes
vim.keymap.set('n', '<leader><CR>', ':CheckboxToggle<CR>', opts)
-- Format whole file using internal algorithm
vim.keymap.set('n', '<leader>gw', function()
local view = vim.fn.winsaveview()
vim.cmd('normal! gggwG')
vim.fn.winrestview(view)
end, { desc = 'Format whole file with gw' })

View File

@@ -1,40 +0,0 @@
-- Disable banner
vim.g.netrw_banner = 0
-- Fix gx when running inside WSL
if vim.env.WSLENV then
vim.g.netrw_browsex_viewer = 'cmd.exe /C start'
end
-- Sort files in a sensible sequence
vim.g.netrw_sort_sequence = '[\\/]$,*'
-- Map - key to open netrw in current files parent directory
vim.keymap.set('n', '-', function()
-- Get the filename before invoking netrw
local filename = vim.fn.expand('%:t')
local directory = vim.fn.expand('%:hp')
if directory == '' then
directory = vim.fn.getcwd()
end
-- Invoke netrw on the directory containing the current file
vim.fn.execute(string.format("edit %s", directory))
if filename ~= '' then
-- In the netrw buffer, move the cursor to the first character of filename
vim.fn.search('\\<' .. filename .. '\\>')
end
end)
-- Unmap <C-l> in netrw buffers so it can be used for natigation
vim.api.nvim_create_autocmd('FileType', {
pattern = 'netrw',
group = vim.api.nvim_create_augroup('netrw_unmap', {}),
callback = function()
local buffer = vim.api.nvim_get_current_buf()
if vim.fn.hasmapto('<Plug>NetrwRefresh') == 1 then
vim.keymap.del('n', '<C-l>', { buffer = buffer })
end
end
})

View File

@@ -3,6 +3,12 @@ vim.g.loaded_node_provider = 0
vim.g.loaded_perl_provider = 0
vim.g.loaded_ruby_provider = 0
if vim.env.TMUX ~= nil and vim.env.WAYLAND_DISPLAY ~= nil then
-- Use tmux instead of wl-clipboard on Wayland to avoid annoying notification
-- popups when copying/pasting from the system clipboard.
vim.g.clipboard = "tmux"
end
-- Keep cursor from buffer edges
vim.opt.sidescrolloff = 5
@@ -40,6 +46,9 @@ vim.opt.completeopt = 'menu'
-- Set window title to titlestring
vim.opt.title = true
-- Use rounded borders for floating windows
vim.o.winborder = 'rounded'
-- Don't show mode in command line
vim.opt.showmode = false
@@ -69,7 +78,7 @@ vim.opt.splitbelow = true
vim.opt.splitright = true
-- Use existing windows and tabs when jumping to errors
vim.opt.switchbuf = 'usetab'
vim.opt.switchbuf = 'usetab,uselast'
-- Automatically write changes to files
vim.opt.autowrite = true
@@ -82,7 +91,7 @@ vim.opt.foldlevel = 20
vim.opt.foldmethod = 'expr'
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
vim.opt.foldtext = ''
vim.opt.fillchars = 'fold: '
vim.opt.fillchars = { fold = ' ' }
-- Enable all mouse features
vim.opt.mouse = 'a'

View File

@@ -45,6 +45,16 @@ local snippets = {
end, key('guard')),
}, {}),
-- Doxygen
snippet('p', {
text('@param'),
choice(1, { text('[in]'), text('[out]'), text('[in,out]'), text('') }),
text(' '),
insert(2, 'name'),
text(' '),
insert(0, 'desc'),
}),
}
return snippets

View File

@@ -4,3 +4,13 @@ snippet main
int main(${1:int argc, const char **argv}) {
$0
}
# Doxygen
snippet b
@brief ${0:desc}
snippet r
@return ${0:desc}
snippet rv
@retval ${1:val} ${0:desc}