-- helper functions that can come in handy ------------------------------------ local function run(cmd) local x = io.popen(cmd) if not x then return 1 end 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('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 == 'show keybinds' then require('telescope.builtin').keymaps() end if choice == 'change colorscheme' then vim.cmd("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(choice) end) end end) end vim.keymap.set('n', 'm', configmenu, { desc = "Neovim config manager menu", }) vim.api.nvim_create_user_command("ConfigMenu", configmenu, {})