diff options
author | Squibid <me@zacharyscheiman.com> | 2023-10-22 18:08:38 -0400 |
---|---|---|
committer | Squibid <me@zacharyscheiman.com> | 2023-10-22 18:08:38 -0400 |
commit | b6807d63cd284a73969f81da7c4b5213880c8bc5 (patch) | |
tree | 8b3f93a06cf6b59fc8d00ab0c8d3e0ad1f7af5db /lua/cfgmenu.lua | |
parent | a7929fa1c04758a0da28a58d3da195c7b218679b (diff) | |
download | nvim-b6807d63cd284a73969f81da7c4b5213880c8bc5.tar.gz nvim-b6807d63cd284a73969f81da7c4b5213880c8bc5.tar.bz2 nvim-b6807d63cd284a73969f81da7c4b5213880c8bc5.zip |
move config menu
Diffstat (limited to 'lua/cfgmenu.lua')
-rw-r--r-- | lua/cfgmenu.lua | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lua/cfgmenu.lua b/lua/cfgmenu.lua new file mode 100644 index 0000000..7335079 --- /dev/null +++ b/lua/cfgmenu.lua @@ -0,0 +1,71 @@ +-- 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', '<leader>m', configmenu, { + desc = "Neovim config manager menu", +}) +vim.api.nvim_create_user_command("ConfigMenu", configmenu, {}) |