Add :PreProcIfWrap command and C/C++ mappings

Quickly wrap a line or range in `#if 0`/`#endif` to quickly disable
compilation of sections of code.
This commit is contained in:
Kenneth Benzie 2024-05-25 10:24:07 +01:00
parent 0602390a2d
commit 1996e631a3
3 changed files with 17 additions and 0 deletions

3
after/ftplugin/c.lua Normal file
View File

@ -0,0 +1,3 @@
local opts = { buffer = true, remap = false, silent = true }
vim.keymap.set('n', '0', ':PreProcIfWrap<CR>', opts)
vim.keymap.set('v', '0', ':PreProcIfWrap<CR>', opts)

View File

@ -1,2 +1,6 @@
vim.opt.commentstring = '//%s' vim.opt.commentstring = '//%s'
vim.opt.matchpairs:append('<:>') vim.opt.matchpairs:append('<:>')
local opts = { buffer = true, remap = false, silent = true }
vim.keymap.set('n', '0', ':PreProcIfWrap<CR>', opts)
vim.keymap.set('v', '0', ':PreProcIfWrap<CR>', opts)

View File

@ -126,3 +126,13 @@ vim.api.nvim_create_user_command('Rg', function(opts)
end end
require('telescope.builtin').grep_string(grep_opts) require('telescope.builtin').grep_string(grep_opts)
end, { bang = true, nargs = '*' }) end, { bang = true, nargs = '*' })
vim.api.nvim_create_user_command('PreProcIfWrap', function(opts)
local buffer = vim.api.nvim_get_current_buf()
vim.api.nvim_buf_set_lines(
buffer, opts.line2, opts.line2, true, { '#endif' })
vim.api.nvim_buf_set_lines(
buffer, opts.line1 - 1, opts.line1 - 1, true, { '#if 0' })
local window = vim.api.nvim_get_current_win()
vim.api.nvim_win_set_cursor(window, { opts.line1, 5 })
end, { range = true })