aboutsummaryrefslogtreecommitdiff
path: root/data/core/commands/statusbar.lua
blob: ac8837ed83388fed3eeee7f1f16a462a3db9e5c6 (plain)
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
local core = require "core"
local command = require "core.command"
local common = require "core.common"
local style = require "core.style"
local StatusView = require "core.statusview"

local function status_view_item_names()
  local items = core.status_view:get_items_list()
  local names = {}
  for _, item in ipairs(items) do
    table.insert(names, item.name)
  end
  return names
end

local function status_view_items_data(names)
  local data = {}
  for _, name in ipairs(names) do
    local item = core.status_view:get_item(name)
    table.insert(data, {
      text = command.prettify_name(item.name),
      info = item.alignment == StatusView.Item.LEFT and "Left" or "Right",
      name = item.name
    })
  end
  return data
end

local function status_view_get_items(text)
  local names = status_view_item_names()
  local results = common.fuzzy_match(names, text)
  results = status_view_items_data(results)
  return results
end

command.add(nil, {
  ["status-bar:toggle"] = function()
    core.status_view:toggle()
  end,
  ["status-bar:show"] = function()
    core.status_view:show()
  end,
  ["status-bar:hide"] = function()
    core.status_view:hide()
  end,
  ["status-bar:disable-messages"] = function()
    core.status_view:display_messages(false)
  end,
  ["status-bar:enable-messages"] = function()
    core.status_view:display_messages(true)
  end,
  ["status-bar:hide-item"] = function()
    core.command_view:enter("Status bar item to hide",
      function(text, item)
        core.status_view:hide_items(item.name)
      end,
      status_view_get_items
    )
  end,
  ["status-bar:show-item"] = function()
    core.command_view:enter("Status bar item to show",
      function(text, item)
        core.status_view:show_items(item.name)
      end,
      status_view_get_items
    )
  end,
  ["status-bar:reset-items"] = function()
    core.status_view:show_items()
  end,
})