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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
-- Prototype Theme System (WIP)
-- Currently certain designs need a number of parameters.
--
-- local opts = themes.get_dropdown { winblend = 3 }
---@tag telescope.themes
---@config { ["module"] = "telescope.themes" }
---@brief [[
--- Themes are ways to combine several elements of styling together.
---
--- They are helpful for managing the several different UI aspects for telescope and provide
--- a simple interface for users to get a particular "style" of picker.
---@brief ]]
local themes = {}
--- Dropdown style theme.
---
--- Usage:
--- <code>
--- local opts = {...} -- picker options
--- local builtin = require('telescope.builtin')
--- local themes = require('telescope.themes')
--- builtin.find_files(themes.get_dropdown(opts))
--- </code>
function themes.get_dropdown(opts)
opts = opts or {}
local theme_opts = {
theme = "dropdown",
results_title = false,
sorting_strategy = "ascending",
layout_strategy = "center",
layout_config = {
preview_cutoff = 1, -- Preview should always show (unless previewer = false)
width = function(_, max_columns, _)
return math.min(max_columns, 80)
end,
height = function(_, _, max_lines)
return math.min(max_lines, 15)
end,
},
border = true,
borderchars = {
prompt = { "─", "│", " ", "│", "╭", "╮", "│", "│" },
results = { "─", "│", "─", "│", "├", "┤", "╯", "╰" },
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
},
}
if opts.layout_config and opts.layout_config.prompt_position == "bottom" then
theme_opts.borderchars = {
prompt = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
results = { "─", "│", "─", "│", "╭", "╮", "┤", "├" },
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
}
end
return vim.tbl_deep_extend("force", theme_opts, opts)
end
--- Cursor style theme.
---
--- Usage:
--- <code>
--- local opts = {...} -- picker options
--- local builtin = require('telescope.builtin')
--- local themes = require('telescope.themes')
--- builtin.find_files(themes.get_cursor(opts))
--- </code>
function themes.get_cursor(opts)
opts = opts or {}
local theme_opts = {
theme = "cursor",
sorting_strategy = "ascending",
results_title = false,
layout_strategy = "cursor",
layout_config = {
width = 80,
height = 9,
},
borderchars = {
prompt = { "─", "│", " ", "│", "╭", "╮", "│", "│" },
results = { "─", "│", "─", "│", "├", "┤", "╯", "╰" },
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
},
}
return vim.tbl_deep_extend("force", theme_opts, opts)
end
--- Ivy style theme.
---
--- Usage:
--- <code>
--- local opts = {...} -- picker options
--- local builtin = require('telescope.builtin')
--- local themes = require('telescope.themes')
--- builtin.find_files(themes.get_ivy(opts))
--- </code>
function themes.get_ivy(opts)
opts = opts or {}
local theme_opts = {
theme = "ivy",
sorting_strategy = "ascending",
layout_strategy = "bottom_pane",
layout_config = {
height = 25,
},
border = true,
borderchars = {
prompt = { "─", " ", " ", " ", "─", "─", " ", " " },
results = { " " },
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
},
}
if opts.layout_config and opts.layout_config.prompt_position == "bottom" then
theme_opts.borderchars = {
prompt = { " ", " ", "─", " ", " ", " ", "─", "─" },
results = { "─", " ", " ", " ", "─", "─", " ", " " },
preview = { "─", " ", "─", "│", "┬", "─", "─", "╰" },
}
end
return vim.tbl_deep_extend("force", theme_opts, opts)
end
return themes
|