dotfiles/config/nvim/lua/util/init.lua

34 lines
1 KiB
Lua

local M = {}
---Check whether file/directory exists.
---@param path string: file or directory path.
---@return string|boolean: type if path exists, false otherwise.
M.exists = function(path)
---@diagnostic disable-next-line: undefined-field
local stat = vim.uv.fs_stat(path)
return (stat and stat.type) or false
end
---Preserve register contents over function call.
---@param reg string: register to save, must be a valid register name.
---@param func function: function that may freely clobber the register.
---@return any: return value of calling `func`.
M.preserve_register = function(reg, func)
local saved = vim.fn.getreg(reg)
local result = func()
vim.fn.setreg(reg, saved)
return result
end
---Get selected text.
---@return string: selected text, or word under cursor if not in visual mode.
M.get_selected_text = function()
if vim.fn.mode() ~= "v" then return vim.fn.expand("<cword>") end
return M.preserve_register("v", function()
vim.cmd([[noautocmd sil norm "vy]])
return vim.fn.getreg("v")
end)
end
return M