mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 05:20:04 +08:00
138 lines
3.7 KiB
Lua
Vendored
138 lines
3.7 KiB
Lua
Vendored
-- 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 builtin = require('telescope.builtin')`
|
|
--- `local themes = require('telescope.themes')`
|
|
--- `builtin.find_files(themes.get_dropdown())`
|
|
--- </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 builtin = require('telescope.builtin')`
|
|
--- `local themes = require('telescope.themes')`
|
|
--- `builtin.lsp_references(themes.get_cursor())`
|
|
--- </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 builtin = require('telescope.builtin')`
|
|
--- `local themes = require('telescope.themes')`
|
|
--- `builtin.find_files(themes.get_ivy())`
|
|
--- </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
|