forked from nvim-telescope/telescope.nvim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththemes.lua
134 lines (111 loc) · 3.28 KB
/
themes.lua
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
-- Prototype Theme System (WIP)
-- Currently certain designs need a number of parameters.
--
-- local opts = themes.get_dropdown { winblend = 3 }
---@tag telescope.themes
---@brief [[
--- Themes are ways to combine several elements of styling together.
---
--- They are helpful for managing the several differnt UI aspects for telescope and provide
--- a simple interface for users to get a particular "style" of picker.
---@brief ]]
local themes = {}
--- Dropdown style theme.
--- <pre>
---
--- Usage:
---
--- `local builtin = require('telescope.builtin')`
--- `local themes = require('telescope.themes')`
--- `builtin.find_files(themes.get_dropdown())`
--- </pre>
function themes.get_dropdown(opts)
opts = opts or {}
local theme_opts = {
theme = "dropdown",
results_title = false,
preview_title = "Preview",
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 - 3, 80)
end,
height = function(_, _, max_lines)
return math.min(max_lines - 4, 15)
end,
},
border = true,
borderchars = {
{ "─", "│", "─", "│", "╭", "╮", "╯", "╰"},
prompt = {"─", "│", " ", "│", "╭", "╮", "│", "│"},
results = {"─", "│", "─", "│", "├", "┤", "╯", "╰"},
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰"},
},
}
return vim.tbl_deep_extend("force", theme_opts, opts)
end
--- Cursor style theme.
--- <pre>
---
--- Usage:
---
--- `local builtin = require('telescope.builtin')`
--- `local themes = require('telescope.themes')`
--- `builtin.lsp_code_actions(themes.get_cursor())`
--- </pre>
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 = function(_, _, _)
return 80
end,
height = function(_, _, _)
return 6
end,
},
borderchars = {
{ '─', '│', '─', '│', '╭', '╮', '╯', '╰'},
prompt = {'─', '│', ' ', '│', '╭', '╮', '│', '│'},
results = {'─', '│', '─', '│', '├', '┤', '╯', '╰'},
preview = { '─', '│', '─', '│', '╭', '╮', '╯', '╰'},
},
}
return vim.tbl_deep_extend('force', theme_opts, opts)
end
--- Ivy style theme.
--- <pre>
---
--- Usage:
---
--- `local builtin = require('telescope.builtin')`
--- `local themes = require('telescope.themes')`
--- `builtin.find_files(themes.get_ivy())`
--- </pre>
function themes.get_ivy(opts)
opts = opts or {}
return vim.tbl_deep_extend("force", {
theme = "ivy",
sorting_strategy = "ascending",
preview_title = "",
layout_strategy = "bottom_pane",
layout_config = {
height = 25,
},
border = true,
borderchars = {
"z",
prompt = { "─", " ", " ", " ", "─", "─", " ", " " },
results = { " " },
-- results = { "a", "b", "c", "d", "e", "f", "g", "h" },
preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰"},
},
}, opts)
end
return themes