diff --git a/init.lua b/init.lua index ed68403..62b3d14 100644 --- a/init.lua +++ b/init.lua @@ -9,11 +9,12 @@ require("config.nvim-treesitter") require("config.lualine") require("config.nvim-cmp") require("config.nvim-lspconfig") -require("config.render-markdown") +--require("config.render-markdown") +require("config.markview") require("config.indent-blankline") require("config.fzf") require("config.mkdx") ---require("config.mutton") +require("config.mutton") require("config.cigan") diff --git a/lua/config/cigan.lua b/lua/config/cigan.lua index 5919f51..e8ac0ee 100644 --- a/lua/config/cigan.lua +++ b/lua/config/cigan.lua @@ -13,30 +13,34 @@ function SaveAndRunScript() -- Сохраняем изменения в текущем файле vim.cmd("write") + vim.notify("Файл сохранен.", vim.log.levels.INFO) -- Запускаем скрипт ~/cigan/interface.py асинхронно local script_path = vim.fn.expand("~/dev/cigan/interface.py") + vim.notify("Запуск скрипта: " .. script_path, vim.log.levels.INFO) + vim.fn.jobstart("bash " .. script_path, { + on_stdout = function(_, data) + vim.notify("STDOUT: " .. table.concat(data, "\n"), vim.log.levels.INFO) + end, + on_stderr = function(_, data) + vim.notify("STDERR: " .. table.concat(data, "\n"), vim.log.levels.ERROR) + end, on_exit = function(_, exit_code) if exit_code ~= 0 then - vim.notify("Ошибка при выполнении скрипта", vim.log.levels.ERROR) + vim.notify("Ошибка при выполнении скрипта. Код выхода: " .. exit_code, vim.log.levels.ERROR) return end -- Обновляем буфер ~/cigan/ui.md и переходим в конец файла vim.cmd("edit") - vim.cmd('echo "Сгенерировано!"') - --vim.cmd("normal! G") -- Переход в конец файла - - -- Добавляем нажатие 20 и Ctrl+e - --vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("2", true, false, true), "n", true) + vim.cmd('echo "Сгенерировано!"') end, }) end - vim.api.nvim_set_keymap('n', 'y', ':lua CheckBufferAndRun()', { noremap = true, silent = false }) function CheckBufferAndRun() diff --git a/lua/config/common-settings.lua b/lua/config/common-settings.lua index cb306b0..aa43442 100644 --- a/lua/config/common-settings.lua +++ b/lua/config/common-settings.lua @@ -119,8 +119,8 @@ vim.o.laststatus = 0 -- Отключает строку состояния ---vim.cmd("colorscheme tokyonight-night") ---vim.cmd("colorscheme gruvbox") +--vim.cmd("colorscheme retrobox") +--vim.cmd("colorscheme retrobox") --vim.cmd("colorscheme astra") -- Применение темы --vim.cmd("colorscheme kanagawa") -- Основная схема --vim.cmd("colorscheme kanagawa-wave") -- Более светлая версия @@ -129,7 +129,7 @@ vim.o.laststatus = 0 -- Отключает строку состояния --vim.cmd("colorscheme nightfly") --vim.cmd("colorscheme randomhue") --vim.cmd("colorscheme kanagawa") -vim.cmd("colorscheme tokyonight-night") +vim.cmd("colorscheme habamax") @@ -203,3 +203,5 @@ vim.opt.termguicolors = true vim.opt.linebreak = true +vim.opt.number = true +vim.opt.relativenumber = true diff --git a/lua/config/markview.lua b/lua/config/markview.lua new file mode 100644 index 0000000..925c505 --- /dev/null +++ b/lua/config/markview.lua @@ -0,0 +1,145 @@ +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" -- Упрощенная подсветка без градиента + } + } + }; + }, + 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 + } +} +}) + + + + diff --git a/lua/config/mutton.lua b/lua/config/mutton.lua index 7c4cacc..bb00cf6 100644 --- a/lua/config/mutton.lua +++ b/lua/config/mutton.lua @@ -1,4 +1,4 @@ - +vim.g.mutton_min_center_width = 95 -- Для Mutton local normal_bg = vim.fn.synIDattr(vim.fn.hlID("Normal"), "bg") vim.api.nvim_set_hl(0, "EndOfBuffer", { fg = normal_bg} ) -- overrides `~` character at the end of buffer diff --git a/lua/plugins.lua b/lua/plugins.lua index ec86669..57432dc 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -31,14 +31,14 @@ return { "nvim-tree/nvim-web-devicons", -- Провайдер иконок для других плагинов }, - -- Интерфейс и UI - { - "MeanderingProgrammer/render-markdown.nvim", -- Рендеринг Markdown - dependencies = { "echasnovski/mini.nvim", opt = true }, - config = function() - require("config.render-markdown") - end, - }, +-- Интерфейс и UI + -- { + -- "MeanderingProgrammer/render-markdown.nvim", -- Рендеринг Markdown + -- dependencies = { "echasnovski/mini.nvim", opt = true }, + -- config = function() + -- require("config.render-markdown") + -- end, + -- }, { "nvim-lualine/lualine.nvim", -- Статусная строка dependencies = { "kyazdani42/nvim-web-devicons", optional = true }, @@ -130,11 +130,22 @@ return { { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", + dependencies = { "OXY2DEV/markview.nvim" }, config = function() require("config.nvim-treesitter") end, }, - { + { + "OXY2DEV/markview.nvim", + lazy = false, + config = function() + require("config.markview") + end, + dependencies = { + "saghen/blink.cmp" + }, + }, + { 'gsuuon/model.nvim', config = function() local bash_provider = {