aboutsummaryrefslogtreecommitdiff
path: root/lua/user/utils.lua
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2022-12-16 23:42:45 +0200
committersrdusr <trevorgray@srdusr.com>2022-12-16 23:42:45 +0200
commit18e3249ba8bfea656b02308225684e893d0273fa (patch)
treed8c35c98bafe2404c22ae2f186b79bddd673b683 /lua/user/utils.lua
downloaddotfiles-18e3249ba8bfea656b02308225684e893d0273fa.tar.gz
dotfiles-18e3249ba8bfea656b02308225684e893d0273fa.zip
Squashed '.config/nvim/' content from commit f63391e
git-subtree-dir: .config/nvim git-subtree-split: f63391eac31d51b5bab84456b6900fdb3b46a285
Diffstat (limited to 'lua/user/utils.lua')
-rw-r--r--lua/user/utils.lua85
1 files changed, 85 insertions, 0 deletions
diff --git a/lua/user/utils.lua b/lua/user/utils.lua
new file mode 100644
index 0000000..bfb5faa
--- /dev/null
+++ b/lua/user/utils.lua
@@ -0,0 +1,85 @@
+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
+
+M['unload_lua_namespace'] = function(prefix)
+ local prefix_with_dot = prefix .. '.'
+ for key, value in pairs(package.loaded) do
+ if key == prefix or key:sub(1, #prefix_with_dot) == prefix_with_dot then
+ package.loaded[key] = nil
+ end
+ end
+end
+
+-- toggle cmp completion
+vim.g.cmp_toggle_flag = false -- initialize
+local normal_buftype = function()
+ return vim.api.nvim_buf_get_option(0, "buftype") ~= "prompt"
+end
+M.toggle_completion = function()
+ local ok, cmp = pcall(require, "cmp")
+ if ok then
+ local next_cmp_toggle_flag = not vim.g.cmp_toggle_flag
+ if next_cmp_toggle_flag then
+ print("completion on")
+ else
+ print("completion off")
+ end
+ cmp.setup({
+ enabled = function()
+ vim.g.cmp_toggle_flag = next_cmp_toggle_flag
+ if next_cmp_toggle_flag then
+ return normal_buftype
+ else
+ return next_cmp_toggle_flag
+ end
+ end,
+ })
+ else
+ print("completion not available")
+ 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
+
+function M.add_pack(name)
+ local status, error = pcall(vim.cmd, "packadd " .. name)
+
+ return status
+end
+
+return M