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