aboutsummaryrefslogtreecommitdiff
path: root/lua/user/utils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/user/utils.lua')
-rw-r--r--lua/user/utils.lua66
1 files changed, 66 insertions, 0 deletions
diff --git a/lua/user/utils.lua b/lua/user/utils.lua
new file mode 100644
index 0000000..ab1473f
--- /dev/null
+++ b/lua/user/utils.lua
@@ -0,0 +1,66 @@
+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