summaryrefslogtreecommitdiffstats
path: root/lua/cfgmenu.lua
blob: 733507998decd70d706b073df75067ca7c372ba5 (plain) (blame)
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, {})