AI for Trace
This commit is contained in:
4
init.lua
4
init.lua
@ -28,9 +28,11 @@ require("config.noice")
|
|||||||
|
|
||||||
require("config.notify")
|
require("config.notify")
|
||||||
|
|
||||||
|
require("config.markview")
|
||||||
|
|
||||||
|
require("config.codecompanion")
|
||||||
|
|
||||||
--require('config.cigan')
|
--require('config.cigan')
|
||||||
--require("config.render-markdown")
|
--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 })
|
vim.api.nvim_set_keymap('n', '<leader><CR>', [[<cmd>lua require('config.cigan').run_script()<CR>]], { noremap = true, silent = true })
|
||||||
|
|||||||
199
lua/config/archive/markview.lua
Normal file
199
lua/config/archive/markview.lua
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
76
lua/config/codecompanion.lua
Normal file
76
lua/config/codecompanion.lua
Normal 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
|
||||||
|
--
|
||||||
|
-- Стиль работы:
|
||||||
|
-- Отвечать на языке пользователя.
|
||||||
@ -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 gruvbox")
|
||||||
--vim.cmd("colorscheme astra") -- Применение темы
|
--vim.cmd("colorscheme astra") -- Применение темы
|
||||||
--vim.cmd("colorscheme kanagawa") -- Основная схема
|
--vim.cmd("colorscheme kanagawa") -- Основная схема
|
||||||
@ -116,9 +118,7 @@ vim.cmd("colorscheme retrobox")
|
|||||||
--vim.cmd("colorscheme nightfly")
|
--vim.cmd("colorscheme nightfly")
|
||||||
--vim.cmd("colorscheme randomhue")
|
--vim.cmd("colorscheme randomhue")
|
||||||
--vim.cmd("colorscheme kanagawa")
|
--vim.cmd("colorscheme kanagawa")
|
||||||
--vim.cmd("colorscheme wildcharm") -- темная тема
|
|
||||||
-- vim.cmd("colorscheme zellner") -- светлая тема
|
-- vim.cmd("colorscheme zellner") -- светлая тема
|
||||||
--vim.cmd("colorscheme tokyonight-night")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -41,8 +41,7 @@ require('markview').setup({
|
|||||||
border = "▁"
|
border = "▁"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
horizontal_rules = {
|
||||||
horizontal_rules = {
|
|
||||||
enable = true, -- Оставляем предпросмотр горизонтальных линий включенным
|
enable = true, -- Оставляем предпросмотр горизонтальных линий включенным
|
||||||
|
|
||||||
parts = {
|
parts = {
|
||||||
@ -84,7 +83,7 @@ require('markview').setup({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
list_items = {
|
list_items = {
|
||||||
enable = true,
|
enable = true,
|
||||||
wrap = false,
|
wrap = false,
|
||||||
|
|
||||||
@ -126,74 +125,20 @@ require('markview').setup({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
markdown_inline = {
|
markdown_inline = {
|
||||||
|
|
||||||
checkboxes = {
|
checkboxes = {
|
||||||
enable = true,
|
enable = true,
|
||||||
checked = { text = " ", hl = "MarkviewCheckboxPending", scope_hl = "MarkviewCheckboxStriked" },
|
checked = { text = " ", hl = "MarkviewCheckboxPending", scope_hl = "MarkviewCheckboxStriked" },
|
||||||
unchecked = { text = " ", hl = "MarkviewCheckboxPending", scope_hl = "" },
|
unchecked = { text = " ", hl = "MarkviewCheckboxPending", scope_hl = "" },
|
||||||
["-"] = { text = " ", hl = "MarkviewCheckboxCancelled", scope_hl = "MarkviewCheckboxStriked" },
|
["-"] = { text = " ", hl = "MarkviewCheckboxCancelled", scope_hl = "MarkviewCheckboxStriked" },
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
preview = {
|
preview = {
|
||||||
enable = true,
|
filetypes = { "markdown", "codecompanion" },
|
||||||
enable_hybrid_mode = true,
|
ignore_buftypes = {},
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,12 +15,27 @@ cmp.setup({
|
|||||||
['<C-j>'] = cmp.mapping.close(),
|
['<C-j>'] = cmp.mapping.close(),
|
||||||
['<C-e>'] = cmp.mapping.close(),
|
['<C-e>'] = cmp.mapping.close(),
|
||||||
},
|
},
|
||||||
sources = {
|
sources = cmp.config.sources({
|
||||||
{ name = 'nvim_lsp' },
|
{ name = 'nvim_lsp' },
|
||||||
{ name = 'buffer' },
|
{ name = 'buffer' },
|
||||||
{ name = 'nvim_lsp_signature_help' },
|
|
||||||
{ name = 'render-markdown' },
|
|
||||||
{ name = 'path' },
|
{ 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' },
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -91,9 +91,19 @@ return {
|
|||||||
config = function()
|
config = function()
|
||||||
require("config.markview")
|
require("config.markview")
|
||||||
end,
|
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" },
|
dependencies = { "rafamadriz/friendly-snippets" },
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Альтернативный движок автодополнения
|
|
||||||
{
|
|
||||||
"saghen/blink.cmp",
|
|
||||||
dependencies = { "saghen/blink.lib" },
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -243,12 +248,14 @@ return {
|
|||||||
|
|
||||||
-- Улучшения для работы с Markdown
|
-- Улучшения для работы с Markdown
|
||||||
{ "SidOfc/mkdx" },
|
{ "SidOfc/mkdx" },
|
||||||
|
-- AI плагин для интеграции Агентов и LLMs
|
||||||
-- AI ассистент через bash
|
{
|
||||||
{
|
"olimorris/codecompanion.nvim",
|
||||||
"gsuuon/model.nvim",
|
version = "^19.0.0",
|
||||||
config = function()
|
opts = {},
|
||||||
require("config.model")
|
dependencies = {
|
||||||
end,
|
"nvim-lua/plenary.nvim",
|
||||||
},
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user