From 7d4c00d1cf60750668383f2e71a086ecc51ff71a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=95=D0=9C=D0=90?= Date: Tue, 18 Aug 2026 18:58:50 +0300 Subject: [PATCH] AI for Trace --- init.lua | 4 +- lua/config/archive/markview.lua | 199 ++++++++++++++++++++++++++++++++ lua/config/codecompanion.lua | 76 ++++++++++++ lua/config/common-settings.lua | 6 +- lua/config/markview.lua | 75 ++---------- lua/config/nvim-cmp.lua | 25 +++- lua/plugins.lua | 35 +++--- 7 files changed, 332 insertions(+), 88 deletions(-) create mode 100644 lua/config/archive/markview.lua create mode 100644 lua/config/codecompanion.lua diff --git a/init.lua b/init.lua index b861c09..8a3d3ca 100644 --- a/init.lua +++ b/init.lua @@ -28,9 +28,11 @@ require("config.noice") require("config.notify") +require("config.markview") + +require("config.codecompanion") --require('config.cigan') --require("config.render-markdown") ---require("config.markview") vim.api.nvim_set_keymap('n', '', [[lua require('config.cigan').run_script()]], { noremap = true, silent = true }) diff --git a/lua/config/archive/markview.lua b/lua/config/archive/markview.lua new file mode 100644 index 0000000..d6ef080 --- /dev/null +++ b/lua/config/archive/markview.lua @@ -0,0 +1,199 @@ +require('markview').setup({ + markdown = { + debounce = 300, -- Задержка обновления + 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 = false, + conceal_on_checkboxes = true, + + text = "", + hl = "MarkviewListItemPlus" + }, + + marker_star = { + add_padding = false, + conceal_on_checkboxes = true, + + text = "", + hl = "MarkviewListItemStar" + }, + + marker_dot = { + add_padding = false, + conceal_on_checkboxes = true, + }, + + marker_parenthesis = { + add_padding = false, + conceal_on_checkboxes = true, + } + }, + }, + markdown_inline = { + + checkboxes = { + enable = true, + checked = { text = "󰗠 ", hl = "MarkviewCheckboxPending", scope_hl = "MarkviewCheckboxStriked" }, + unchecked = { text = "󰄰 ", hl = "MarkviewCheckboxPending", scope_hl = "" }, + ["-"] = { text = "󰍶 ", hl = "MarkviewCheckboxCancelled", scope_hl = "MarkviewCheckboxStriked" }, + + } + + }, + + + 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 }, -- Рендерить весь остальной текст + 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/codecompanion.lua b/lua/config/codecompanion.lua new file mode 100644 index 0000000..581eebb --- /dev/null +++ b/lua/config/codecompanion.lua @@ -0,0 +1,76 @@ +require("codecompanion").setup({ + interactions = { + chat = { + adapter = "ollama", + opts = { + completion_provider = "cmp", + system_prompt = [[]], + show_model_choices = false, + show_presets = false, + }, + }, + inline = { + adapter = "ollama", + }, + cmd = { + adapter = "ollama", + }, + }, + + adapters = { + http = { -- Добавлена таблица http, так как ollama является HTTP адаптером + ollama = function() + return require("codecompanion.adapters").extend("ollama", { + env = { + url = "http://localhost:11434", + }, + schema = { + model = { + default = "qwen3.5:35b", + }, + think = { + default = false, + }, + temperature = { + default = 1, + }, + num_ctx = { + default = 262144, + }, + repeat_penalty = { + default = 1.5, + }, + top_k = { + default = 20, + }, + top_p = { + default = 0.95, + }, + keep_alive = { + default = -1, + }, + + + }, + }) + end, + }, + }, + + display = { + chat = { + intro_message = "🧠 Connected to Ollama via SSH (qwen3.5:14b)", + }, + }, +}) + + + + +-- Роль: Краткий и профессиональный ИИ-ассистент. +-- +-- Ключевые правила форматирования: +-- Запреты: Никаких заголовков H1/H2 +-- +-- Стиль работы: +-- Отвечать на языке пользователя. diff --git a/lua/config/common-settings.lua b/lua/config/common-settings.lua index 8569a60..d6fd62b 100644 --- a/lua/config/common-settings.lua +++ b/lua/config/common-settings.lua @@ -106,7 +106,9 @@ vim.o.laststatus = 0 -- Отключает строку состояния -vim.cmd("colorscheme retrobox") +vim.cmd("colorscheme tokyonight-night") +--vim.cmd("colorscheme wildcharm") -- темная тема +--vim.cmd("colorscheme retrobox") --vim.cmd("colorscheme gruvbox") --vim.cmd("colorscheme astra") -- Применение темы --vim.cmd("colorscheme kanagawa") -- Основная схема @@ -116,9 +118,7 @@ vim.cmd("colorscheme retrobox") --vim.cmd("colorscheme nightfly") --vim.cmd("colorscheme randomhue") --vim.cmd("colorscheme kanagawa") ---vim.cmd("colorscheme wildcharm") -- темная тема -- vim.cmd("colorscheme zellner") -- светлая тема ---vim.cmd("colorscheme tokyonight-night") diff --git a/lua/config/markview.lua b/lua/config/markview.lua index d6ef080..a0c9a87 100644 --- a/lua/config/markview.lua +++ b/lua/config/markview.lua @@ -41,8 +41,7 @@ require('markview').setup({ border = "▁" } }; - - horizontal_rules = { + horizontal_rules = { enable = true, -- Оставляем предпросмотр горизонтальных линий включенным parts = { @@ -84,7 +83,7 @@ require('markview').setup({ } } }; - list_items = { + list_items = { enable = true, wrap = false, @@ -126,74 +125,20 @@ require('markview').setup({ } }, }, + markdown_inline = { checkboxes = { - enable = true, - checked = { text = "󰗠 ", hl = "MarkviewCheckboxPending", scope_hl = "MarkviewCheckboxStriked" }, - unchecked = { text = "󰄰 ", hl = "MarkviewCheckboxPending", scope_hl = "" }, + enable = true, + checked = { text = "󰗠 ", hl = "MarkviewCheckboxPending", scope_hl = "MarkviewCheckboxStriked" }, + unchecked = { text = "󰄰 ", hl = "MarkviewCheckboxPending", scope_hl = "" }, ["-"] = { text = "󰍶 ", hl = "MarkviewCheckboxCancelled", scope_hl = "MarkviewCheckboxStriked" }, } - }, - 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 }, -- Рендерить весь остальной текст - 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 - } -} -}) - - - - + filetypes = { "markdown", "codecompanion" }, + ignore_buftypes = {}, + }, + }) diff --git a/lua/config/nvim-cmp.lua b/lua/config/nvim-cmp.lua index 0d91a76..1eba723 100644 --- a/lua/config/nvim-cmp.lua +++ b/lua/config/nvim-cmp.lua @@ -15,12 +15,27 @@ cmp.setup({ [''] = cmp.mapping.close(), [''] = cmp.mapping.close(), }, - sources = { - { name = 'nvim_lsp' }, - { name = 'buffer' }, - { name = 'nvim_lsp_signature_help' }, - { name = 'render-markdown' }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'buffer' }, { name = 'path' }, + -- Уберите render-markdown и nvim_lsp_signature_help если они не работают + }, { + { name = 'codecompanion_slash_commands' }, + { name = 'codecompanion_tools' }, + { name = 'codecompanion_editor_context' }, + { name = 'codecompanion_models' }, + { name = 'codecompanion_acp_commands' }, + }), + -- Настройка источников специально для буферов CodeCompanion + filetype = { + codecompanion = { + sources = { + { name = 'codecompanion' }, + { name = 'buffer' }, + { name = 'path' }, + } + } }, }) diff --git a/lua/plugins.lua b/lua/plugins.lua index 5a6e93b..9974ce1 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -91,9 +91,19 @@ return { config = function() require("config.markview") end, - dependencies = { "saghen/blink.cmp" }, + dependencies = { "hrsh7th/cmp-path" }, }, + -- Рендеринг mermaid - блоксхемы + { + "kevalin/mermaid.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter" }, + config = function() + require("mermaid").setup() + -- Install the Tree-sitter parser: + -- :TSInstall mermaid + end, + }, @@ -137,11 +147,6 @@ return { dependencies = { "rafamadriz/friendly-snippets" }, }, - -- Альтернативный движок автодополнения - { - "saghen/blink.cmp", - dependencies = { "saghen/blink.lib" }, - }, @@ -243,12 +248,14 @@ return { -- Улучшения для работы с Markdown { "SidOfc/mkdx" }, - - -- AI ассистент через bash - { - "gsuuon/model.nvim", - config = function() - require("config.model") - end, - }, + -- AI плагин для интеграции Агентов и LLMs + { + "olimorris/codecompanion.nvim", + version = "^19.0.0", + opts = {}, + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", + }, +}, }