72 lines
1.8 KiB
Lua
72 lines
1.8 KiB
Lua
-- helper functions that can come in handy
|
|
local function run(cmd)
|
|
local x = io.popen(cmd)
|
|
local y = x:read("*a")
|
|
x:close()
|
|
return y
|
|
end
|
|
|
|
-- custom menu for simpler neovim managment -----------------------------------
|
|
local function genmenu()
|
|
local list = {}
|
|
local function add(name, plug)
|
|
if not plug then
|
|
table.insert(list, name)
|
|
return
|
|
end
|
|
if package.loaded[plug] then
|
|
table.insert(list, name)
|
|
end
|
|
end
|
|
|
|
add('edit config', nil)
|
|
add('update plugins', 'dep')
|
|
add('update config', nil)
|
|
add('show keybinds', 'telescope')
|
|
add('change colorscheme', 'telescope')
|
|
add('new plugins', 'telescope')
|
|
|
|
return list
|
|
end
|
|
|
|
local function configmenu()
|
|
local list = genmenu()
|
|
|
|
vim.ui.select(list, { vpt = 'Config Menu' },
|
|
function(choice)
|
|
if choice == 'edit config' then
|
|
vim.cmd('e $XDG_CONFIG_HOME/nvim/init.lua')
|
|
end
|
|
if choice == 'update plugins' then
|
|
require('dep').sync()
|
|
if package.loaded['nvim-treesitter'] then
|
|
vim.cmd('TSUpdate')
|
|
end
|
|
if package.loaded['mason'] then
|
|
require('mason.api.command').MasonUpdate()
|
|
end
|
|
end
|
|
if choice == 'update config' then
|
|
require('mngr.updates')
|
|
end
|
|
if choice == 'show keybinds' then
|
|
require('telescope.builtin').keymaps()
|
|
end
|
|
if choice == 'change colorscheme' then
|
|
require('telescope.builtin').colorscheme()
|
|
end
|
|
-- search though plugins (powered by nvim.sh)
|
|
if choice == 'new plugins' then
|
|
local result = run("curl -s https://nvim.sh/s")
|
|
local array = {}
|
|
for s in string.gmatch(result, "[^\r\n]+") do
|
|
table.insert(array, s)
|
|
end
|
|
local header = table.remove(array, 1)
|
|
vim.ui.select(array, { vpt = header}, function() end)
|
|
end
|
|
end)
|
|
end
|
|
|
|
vim.keymap.set('n', '<leader>m', configmenu, {})
|