summaryrefslogtreecommitdiffstats
path: root/lua/cfgmenu.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/cfgmenu.lua')
-rw-r--r--lua/cfgmenu.lua71
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, {})