SexNvim/lua/config/markview.lua

189 lines
4.7 KiB
Lua
Raw Permalink Normal View History

2025-04-15 20:44:47 +03:00
require('markview').setup({
markdown = {
headings = {
enable = true,
org_shift_char = " ",
shift_width = 0,
org_indent = false,
org_indent_wrap = false,
heading_1 = {
style = "label",
sign = "",
},
heading_2 = {
style = "label",
sign = "",
},
heading_3 = {
style = "label",
},
heading_4 = {
style = "label",
},
heading_5 = {
style = "label",
},
heading_6 = {
style = "label",
},
setext_1 = {
style = "decorated",
sign = "", sign_hl = "MarkviewHeading1Sign",
icon = "", hl = "MarkviewHeading1",
border = ""
},
setext_2 = {
style = "decorated",
sign = "", sign_hl = "MarkviewHeading2Sign",
icon = "", hl = "MarkviewHeading2",
border = ""
}
};
horizontal_rules = {
enable = true, -- Оставляем предпросмотр горизонтальных линий включенным
parts = {
{
type = "repeating",
repeat_amount = function (buffer)
local utils = require("markview.utils");
local window = utils.buf_getwin(buffer)
local width = vim.api.nvim_win_get_width(window)
local textoff = vim.fn.getwininfo(window)[1].textoff;
return math.floor((width - textoff - 3) / 2);
end,
text = "", -- Символ для повторения
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
},
{
type = "text",
text = " $ ", -- Центральный символ изменен на "$"
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
},
{
type = "repeating",
repeat_amount = function (buffer)
local utils = require("markview.utils");
local window = utils.buf_getwin(buffer)
local width = vim.api.nvim_win_get_width(window)
local textoff = vim.fn.getwininfo(window)[1].textoff;
return math.ceil((width - textoff - 3) / 2);
end,
direction = "right",
text = "", -- Символ для повторения
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
}
}
};
2025-04-15 21:10:09 +03:00
list_items = {
enable = true,
wrap = false,
indent_size = 2,
shift_width = 4,
marker_minus = {
add_padding = false,
conceal_on_checkboxes = true,
text = "",
hl = "MarkviewListItemMinus"
},
marker_plus = {
add_padding = true,
conceal_on_checkboxes = true,
text = "",
hl = "MarkviewListItemPlus"
},
marker_star = {
add_padding = true,
conceal_on_checkboxes = true,
text = "",
hl = "MarkviewListItemStar"
},
marker_dot = {
add_padding = true,
conceal_on_checkboxes = true,
},
marker_parenthesis = {
add_padding = true,
conceal_on_checkboxes = true,
}
},
2025-04-15 20:44:47 +03:00
},
2025-04-15 21:10:09 +03:00
2025-04-15 20:44:47 +03:00
preview = {
enable = true,
enable_hybrid_mode = true,
modes = { "n", "i", "v", "c" }, -- Работает во всех основных режимах
hybrid_modes = { "n", "v", "c" }, -- Hybrid mode во всех режимах
linewise_hybrid_mode = true, -- Линейный режим hybrid
edit_range = { 0, 0 }, -- Диапазон для input mode (-1, 1)
draw_range = { vim.o.lines, vim.o.lines }, -- Рендерить весь остальной текст
debounce = 200, -- Задержка обновления
filetypes = { "markdown", "rmd", "quarto", "typst" }, -- Поддерживаемые форматы
ignore_buftypes = { "nofile" },
callbacks = {
on_attach = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 3
end
end,
on_detach = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 0
end
end,
on_enable = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 3
end
end,
on_disable = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 0
end
end,
on_hybrid_enable = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 3
end
end,
on_hybrid_disable = function(_, wins)
for _, win in ipairs(wins) do
vim.wo[win].conceallevel = 0
end
end,
on_mode_change = function(_, wins, current_mode)
local preview_modes = { "n", "i", "v", "c" }
for _, win in ipairs(wins) do
if vim.tbl_contains(preview_modes, current_mode) then
vim.wo[win].conceallevel = 3
else
vim.wo[win].conceallevel = 0
end
end
end
}
}
})