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" -- Упрощенная подсветка без градиента
				}
			}
		};
		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,
			}
		},
	},


	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
    }
}
})