summaryrefslogtreecommitdiff
path: root/lua/telescope/actions/state.lua
blob: 8470f2d443c0fd629aa4d5db92cb62fd45ac8445 (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
---@tag telescope.actions.state

---@brief [[
--- Functions to be used to determine the current state of telescope.
---
--- Generally used from within other |telescope.actions|
---@brief ]]

local global_state = require('telescope.state')
local conf = require('telescope.config').values

local action_state = {}

--- Get the current entry
function action_state.get_selected_entry()
  return global_state.get_global_key('selected_entry')
end

--- Gets the current line
function action_state.get_current_line()
  return global_state.get_global_key('current_line')
end

--- Gets the current picker
---@param prompt_bufnr number: The prompt bufnr
function action_state.get_current_picker(prompt_bufnr)
  return global_state.get_status(prompt_bufnr).picker
end

local select_to_edit_map = {
  default = "edit",
  horizontal = "new",
  vertical = "vnew",
  tab = "tabedit",
}
function action_state.select_key_to_edit_key(type)
  return select_to_edit_map[type]
end

function action_state.get_current_history()
  local history = global_state.get_global_key("history")
  if not history then
    if not conf.history or type(conf.history) ~= "table" then
      history = require('telescope.actions.history').get_simple_history()
      global_state.set_global_key("history", history)
    else
      history = conf.history.handler()
      global_state.set_global_key("history", history)
    end
  end

  return history
end

return action_state