Files
keycodex/lua/lib/util.lua
T
2024-08-13 02:48:13 +05:45

67 lines
1.8 KiB
Lua

local util = {}
util.get_user_config = function(key, default)
local status_ok, user = pcall(require, 'user')
if not status_ok then
return default
end
local user_config = user[key]
if user_config == nil then
return default
end
return user_config
end
util.get_root_dir = function()
local bufname = vim.fn.expand('%:p')
if vim.fn.filereadable(bufname) == 0 then
return
end
local parent = vim.fn.fnamemodify(bufname, ':h')
local git_root = vim.fn.systemlist('git -C ' .. parent .. ' rev-parse --show-toplevel')
if #git_root > 0 and git_root[1] ~= '' then
return git_root[1]
else
return parent
end
end
util.get_file_type_cmd = function(extension)
local root = util.get_root_dir()
if extension == 'arb' and root then
local gemfile_exists = vim.fn.filereadable(root .. '/Gemfile') == 1
local pubspec_exists = vim.fn.filereadable(root .. '/pubspec.yaml') == 1
if gemfile_exists then
return 'setfiletype ruby'
end
if pubspec_exists then
return 'setfiletype json'
end
end
return ''
end
util.is_present = function(bin)
return vim.fn.executable(bin) == 1
end
util.telescope_select = function(options, options_desc, select_prompt)
require('telescope.pickers')
.new({}, {
prompt_title = select_prompt,
results_title = options_desc,
finder = require('telescope.finders').new_table({
results = options,
entry_maker = require('telescope.make_entry').gen_from_file(),
}),
sorter = require('telescope.sorters').get_fzy_sorter(),
previewer = require('telescope.previewers').vim_buffer_cat.new({}),
})
:find()
end
return util