1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
-- 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, {})
|