Tip
🇬🇧 English version: API.md
Утилиты и модули lazyvimx, которые можно использовать в своей конфигурации.
Модуль: lazyvimx (lua/lazyvimx/init.lua)
Слить пользовательские опции с настройками по умолчанию.
require("lazyvimx").setup({
colorscheme = "tokyonight",
bufferline_groups = {
["React"] = "%.tsx$",
},
})Схема опций и значения по умолчанию — в
Настройка. Обычно вызывать setup() вручную не
нужно: опции из спека плагина "aimuzov/lazyvimx" попадают сюда сами (в boot.lua у спека
стоит config = true).
Текущая конфигурация (после слияния).
local config = require("lazyvimx").config
print(config.colorscheme) -- "catppuccin"Модуль: lazyvimx.util.general (lua/lazyvimx/util/general.lua)
Смешать два hex-цвета в заданной пропорции.
function M.color_blend(color_first: string, color_second: string, percentage: number): stringcolor_first,color_second— цвета вида"#RRGGBB"percentage— доля второго цвета, 0–100
local util = require("lazyvimx.util.general")
util.color_blend("#FF0000", "#0000FF", 50) -- "#7F007F"
util.color_blend("#FF0000", "#FFFFFF", 25) -- чуть светлее красногоОсновной инструмент кастомизации хайлайтов — активно используется в оверрайдах тем.
Выполнить shell-команду и вернуть вывод одной строкой (без хвостовых пробелов и переводов строк). При ошибке — пустая строка.
function M.popen_get_result(cmd: string): stringutil.popen_get_result("echo hello") -- "hello"Тёмная ли тема у системы.
function M.theme_is_dark(): boolean- macOS:
defaults read -g AppleInterfaceStyle - Linux:
gsettings get org.gnome.desktop.interface gtk-theme, при недоступности —color-scheme
Вариант цветовой схемы под текущую тему системы.
function M.get_flavor(colorscheme_household_last?: string): stringcolorscheme_household_last— имя семейства; по умолчаниюconfig.colorscheme
Логика:
theme_is_dark()выбирает список:[1]— тёмные,[2]— светлые- Если установлен
last-color.nvim(экстраperf.restore-last-colorscheme) и последний использованный вариант есть в этом списке — возвращается он - Иначе — первый вариант списка
-- В тёмном режиме с настройками по умолчанию:
util.get_flavor("catppuccin") -- "catppuccin-macchiato"Значение переменной окружения DOTFILES_SRC_PATH или пустая строка. Утилита для
пользовательских конфигов; сам lazyvimx её сейчас не использует.
function M.get_dotfiles_path(): stringВключена ли экстра lazyvimx.
function M.has_extra(extra: string): booleanextra— имя без префикса:"ui.winbar","git.gitlab"
Проверяет и загруженные модули lazy.nvim, и список экстр в lazyvim.json.
if util.has_extra("ui.winbar") then
-- настроить интеграцию
endДля экстр самого LazyVim есть аналог — LazyVim.has_extra("ui.edgy").
Фабрика коллбэка: показать предупреждение, если экстра не включена. Используется в экстрах с
зависимостями (например, git.gitlab предупреждает про ui.diff-view).
function M.warn_missing_extra(extra_name: string): function{
"folke/snacks.nvim",
opts = require("lazyvimx.util.general").warn_missing_extra("ui.diff-view"),
}Модуль: lazyvimx.util.layout (lua/lazyvimx/util/layout.lua)
Единые размеры сайдбаров и панелей: edgy, diffview и другие плагины берут размеры отсюда, поэтому панели согласованы, а ресайз одной запоминается для всех.
Внутреннее состояние:
local size = {
left = 40,
right = 80,
top = 10,
bottom = 10,
}
M.step = 3 -- шаг ресайзаТекущий размер позиции.
function M.get_size(pos: "left"|"right"|"top"|"bottom"): numberlocal layout = require("lazyvimx.util.layout")
layout.get_size("left") -- 40
layout.get_size("bottom") -- 10То же, но возвращает функцию — для плагинов, которые принимают размер-коллбэк (edgy):
{
"folke/edgy.nvim",
opts = {
left = { size = layout.get_size_create("left") },
},
}Фабрики функций ресайза edgy-окна на M.step с запоминанием нового размера.
function M.increase_create(dir: "width"|"height"): function
function M.decrease_create(dir: "width"|"height"): functionТак устроены кеймапы <C-Up> / <C-Down> / <C-Left> / <C-Right> в core.keys:
opts.keys = {
["<c-Up>"] = layout.increase_create("height"),
["<c-Down>"] = layout.decrease_create("height"),
["<c-Left>"] = layout.decrease_create("width"),
["<c-Right>"] = layout.increase_create("width"),
}Модуль: lazyvimx.boot (lua/lazyvimx/boot.lua)
Точка входа: { "aimuzov/lazyvimx", import = "lazyvimx.boot" }. Внутренние функции, напрямую
не вызываются:
| Функция | Что делает |
|---|---|
set_global() |
vim.g.lazyvim_check_order = false, vim.g.xtras_prios = {}, vim.g.lazyvim_explorer = "neo-tree" |
vimopts_create_autocmd() |
подписка на LazyVimOptionsDefaults для установки опций Vim |
update_root_lsp_ignore() |
добавляет eslint в vim.g.root_lsp_ignore |
insert_extras() |
регистрирует источник экстр lazyvimx (иконка ) в UI :LazyExtras |
set_colorscheme() |
ставит цветовую схему через get_flavor() |
has_plugins_dir() |
подключает lua/plugins/*.lua пользователя, если они есть |
Порядок спеков в boot.lua и bootstrap-процесс описаны в
Архитектура.
| Модуль | Функции | Назначение |
|---|---|---|
lazyvimx |
setup(), config |
Конфигурация |
util.general |
color_blend(), popen_get_result(), theme_is_dark(), get_flavor(), get_dotfiles_path(), has_extra(), warn_missing_extra() |
Общие утилиты |
util.layout |
get_size(), get_size_create(), increase_create(), decrease_create(), step |
Размеры панелей |
- Настройка — настройка
- Архитектура — устройство
- Экстры — справочник экстр