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.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 })
|
||||
|
||||
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 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")
|
||||
|
||||
|
||||
|
||||
|
||||
@ -41,7 +41,6 @@ require('markview').setup({
|
||||
border = "▁"
|
||||
}
|
||||
};
|
||||
|
||||
horizontal_rules = {
|
||||
enable = true, -- Оставляем предпросмотр горизонтальных линий включенным
|
||||
|
||||
@ -126,6 +125,7 @@ require('markview').setup({
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
markdown_inline = {
|
||||
|
||||
checkboxes = {
|
||||
@ -135,65 +135,10 @@ require('markview').setup({
|
||||
["-"] = { 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 = {},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -15,12 +15,27 @@ cmp.setup({
|
||||
['<C-j>'] = cmp.mapping.close(),
|
||||
['<C-e>'] = cmp.mapping.close(),
|
||||
},
|
||||
sources = {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'buffer' },
|
||||
{ name = 'nvim_lsp_signature_help' },
|
||||
{ name = 'render-markdown' },
|
||||
{ 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()
|
||||
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
|
||||
-- AI плагин для интеграции Агентов и LLMs
|
||||
{
|
||||
"gsuuon/model.nvim",
|
||||
config = function()
|
||||
require("config.model")
|
||||
end,
|
||||
"olimorris/codecompanion.nvim",
|
||||
version = "^19.0.0",
|
||||
opts = {},
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user