-- 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', 'm', configmenu, {})