You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
67 lines
1.4 KiB
local fn = vim.fn |
|
|
|
local M = {} |
|
|
|
function M.executable(name) |
|
if fn.executable(name) > 0 then |
|
return true |
|
end |
|
return false |
|
end |
|
|
|
--- check whether a feature exists in Nvim |
|
--- @feat: string |
|
--- the feature name, like `nvim-0.7` or `unix`. |
|
--- return: bool |
|
M.has = function(feat) |
|
if fn.has(feat) == 1 then |
|
return true |
|
end |
|
|
|
|
|
return false |
|
end |
|
|
|
--- Create a dir if it does not exist |
|
function M.may_create_dir(dir) |
|
local res = fn.isdirectory(dir) |
|
|
|
if res == 0 then |
|
fn.mkdir(dir, "p") |
|
end |
|
end |
|
|
|
function M.get_nvim_version() |
|
local actual_ver = vim.version() |
|
|
|
local nvim_ver_str = string.format("%d.%d.%d", actual_ver.major, actual_ver.minor, actual_ver.patch) |
|
return nvim_ver_str |
|
end |
|
|
|
--- Generate random integers in the range [Low, High], inclusive, |
|
--- adapted from https://stackoverflow.com/a/12739441/6064933 |
|
--- @low: the lower value for this range |
|
--- @high: the upper value for this range |
|
function M.rand_int(low, high) |
|
-- Use lua to generate random int, see also: https://stackoverflow.com/a/20157671/6064933 |
|
math.randomseed(os.time()) |
|
|
|
return math.random(low, high) |
|
end |
|
|
|
--- Select a random element from a sequence/list. |
|
--- @seq: the sequence to choose an element |
|
function M.rand_element(seq) |
|
local idx = M.rand_int(1, #seq) |
|
|
|
return seq[idx] |
|
end |
|
|
|
function M.add_pack(name) |
|
local status, error = pcall(vim.cmd, "packadd " .. name) |
|
|
|
return status |
|
end |
|
|
|
return M |
|
|
|
|