summary refs log tree commit diff
path: root/.vim/lua/utils.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.vim/lua/utils.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/.vim/lua/utils.lua b/.vim/lua/utils.lua
new file mode 100644
index 0000000..ab7793f
--- /dev/null
+++ b/.vim/lua/utils.lua
@@ -0,0 +1,35 @@
+-- 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