AI for Trace

This commit is contained in:
2026-08-18 18:58:50 +03:00
parent 5ec108097b
commit 7d4c00d1cf
7 changed files with 332 additions and 88 deletions

View File

@ -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', '<leader><CR>', [[<cmd>lua require('config.cigan').run_script()<CR>]], { noremap = true, silent = true })

View File

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

View File

@ -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
--
-- Стиль работы:
-- Отвечать на языке пользователя.

View File

@ -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")

View File

@ -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 = {},
},
})

View File

@ -15,12 +15,27 @@ cmp.setup({
['<C-j>'] = cmp.mapping.close(),
['<C-e>'] = 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' },
}
}
},
})

View File

@ -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",
},
},
}