-- utils.lua local M = {} -- crutch until https://github.com/neovim/neovim/pull/13479 M.opt = function(scope, key, val) local scopes = {o = vim.o, b = vim.bo, w = vim.wo} if not ( scope and key and val ) then return end scopes[scope][key] = val if scope ~= 'o' then scopes['o'][key] = val end end M.map = function(mode, lhs, rhs, opts) if not ( mode and lhs and rhs ) then return end local o = {noremap = true, silent = true} if opts then o = vim.tbl_extend('force', o, opts) end vim.api.nvim_set_keymap(mode, lhs, rhs, o) end M.augroup = function(name, autocmds) if not ( name and autocmds ) then return end vim.cmd('augroup ' .. name) vim.cmd('autocmd!') for _, au in ipairs(autocmds) do vim.cmd('autocmd ' .. table.concat(au, ' ')) end vim.cmd('augroup END') end M.def = function(name, cmd, ...) local opts = table.concat((... or {}), ' ') vim.cmd('command! ' .. opts .. ' ' .. name .. ' ' .. cmd) end return M