From 26341d565ac365904ecd6c98479903a2b0e11bdd Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Thu, 19 Jun 2025 02:57:51 +0300 Subject: =?UTF-8?q?=D0=A7=D1=82=2019=20=D0=B8=D1=8E=D0=BD=202025=2002:57:5?= =?UTF-8?q?1=20MSK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/nvim/lua/lsp.lua | 14 +++++- config/nvim/lua/plugins.lua | 6 ++- config/nvim/lua/plugins/apidocs.lua | 16 ++++++ config/nvim/lua/plugins/cmp.lua | 30 +++++++---- config/nvim/lua/plugins/codecompanion.lua | 82 +++++++++++++++++++++++++++++++ 5 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 config/nvim/lua/plugins/apidocs.lua create mode 100644 config/nvim/lua/plugins/codecompanion.lua (limited to 'config/nvim/lua') diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua index f12ecae..3ffa507 100644 --- a/config/nvim/lua/lsp.lua +++ b/config/nvim/lua/lsp.lua @@ -3,8 +3,20 @@ local lspconfig = require("lspconfig") local util = require("lspconfig/util") local function config(_config) + local capabilities = vim.lsp.protocol.make_client_capabilities() + + capabilities = vim.tbl_deep_extend("force", capabilities, require("blink.cmp").get_lsp_capabilities({}, false)) + + capabilities = vim.tbl_deep_extend("force", capabilities, { + textDocument = { + foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true, + }, + }, + }) return vim.tbl_deep_extend("force", { - -- capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), + capabilities = capabilities, }, _config or {}) end -- иницализация gopls LSP для Go diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index 26bc1e8..482d9a9 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -5,8 +5,12 @@ require("lazy").setup({ "ray-x/guihua.lua", build = "cd lua/fzy && make", }, - { "neovim/nvim-lspconfig" }, + { + "neovim/nvim-lspconfig", + dependencies = { "saghen/blink.cmp" }, + }, { "Snyssfx/goerr-nvim" }, + require("plugins.apidocs"), require("plugins.todo"), require("plugins.codecompanion"), require("plugins.resize"), diff --git a/config/nvim/lua/plugins/apidocs.lua b/config/nvim/lua/plugins/apidocs.lua new file mode 100644 index 0000000..9bc35da --- /dev/null +++ b/config/nvim/lua/plugins/apidocs.lua @@ -0,0 +1,16 @@ +return { + "emmanueltouzery/apidocs.nvim", + dependencies = { + "nvim-telescope/telescope.nvim", -- or, 'folke/snacks.nvim' + }, + cmd = { "ApidocsSearch", "ApidocsInstall", "ApidocsOpen", "ApidocsSelect", "ApidocsUninstall" }, + config = function() + require("apidocs").setup() + -- Picker will be auto-detected. To select a picker of your choice explicitly you can set picker by the configuration option 'picker': + -- require('apidocs').setup({picker = "snacks"}) + -- Possible options are 'ui_select', 'telescope', and 'snacks' + end, + keys = { + { "sad", "ApidocsOpen", desc = "Search Api Doc" }, + }, +} diff --git a/config/nvim/lua/plugins/cmp.lua b/config/nvim/lua/plugins/cmp.lua index 718d8cb..d113fd5 100644 --- a/config/nvim/lua/plugins/cmp.lua +++ b/config/nvim/lua/plugins/cmp.lua @@ -1,10 +1,3 @@ -local source_mapping = { - buffer = "[Buffer]", - nvim_lsp = "[LSP]", - nvim_lua = "[Lua]", - luasnip = "[Snip]", - path = "[Path]", -} return { "saghen/blink.cmp", lazy = false, @@ -16,8 +9,26 @@ return { build = "make install_jsregexp", dependencies = { "rafamadriz/friendly-snippets" }, config = function() + local ls = require("luasnip") + local s = ls.snippet + local sn = ls.snippet_node + local t = ls.text_node + local i = ls.insert_node + local f = ls.function_node + local c = ls.choice_node + local d = ls.dynamic_node + local r = ls.restore_node + local fmt = require("luasnip.extras.fmt").fmt + local rep = require("luasnip.extras").rep + + ls.config.setup({ + history = true, + update_events = "TextChanged,TextChangedI", + }) require("luasnip.loaders.from_vscode").lazy_load() - require("luasnip.loaders.from_vscode").lazy_load("./snippets") + require("luasnip.loaders.from_vscode").lazy_load({ + paths = { vim.fn.stdpath("config") .. "/snippets" }, + }) end, }, }, @@ -39,7 +50,7 @@ return { cmdline = { keymap = { preset = "inherit", - [''] = { 'show', 'accept' }, + [""] = { "show", "accept" }, }, completion = { menu = { auto_show = false }, @@ -47,6 +58,7 @@ return { }, sources = { "cmdline" }, }, + signature = { enabled = true }, snippets = { preset = "luasnip" }, sources = { default = { "lsp", "path", "snippets", "buffer", "codecompanion" }, diff --git a/config/nvim/lua/plugins/codecompanion.lua b/config/nvim/lua/plugins/codecompanion.lua new file mode 100644 index 0000000..c4ad892 --- /dev/null +++ b/config/nvim/lua/plugins/codecompanion.lua @@ -0,0 +1,82 @@ +return { + "olimorris/codecompanion.nvim", + version = "v15.8.0", + opts = function() + return { + strategies = { + chat = { + adapter = "scbt", + }, + inline = { + adapter = "scbt", + }, + cmd = { + adapter = "scbt", + }, + }, + adapters = { + scbt = function() + return require("codecompanion.adapters").extend("openai_compatible", { + env = { + url = "https://code-generator.sovcombank.group/api", + api_key = "cmd:cat ~/.codetoken", + chat_url = "/v1/chat/completions", + models_endpoint = "/v1/models", + }, + schema = { + model = { + default = "Qwen/Qwen2.5-Coder-14B-Instruct", + }, + }, + }) + end, + ollama = function() + return require("codecompanion.adapters").extend("ollama", { + name = "ollama", + schema = { + model = { + default = "kodify_nano_q8", + }, + }, + parameters = { + sync = true, + }, + }) + end, + }, + opts = { + log_level = "ERROR", + language = "Russian", + allow_insecure = true, + cache_models_for = 1800, + proxy = nil, + show_defaults = false, + show_model_choices = true, + system_prompt = function(opts) + return [[Ты — продвинутый помощник разработчика, встроенный в редактор кода. Твоя цель — помогать пользователям писать код быстрее и эффективнее, предлагая подсказки, исправления ошибок, оптимизацию производительности и комментарии к коду. Ты хорошо знаком с языками программирования, такими как Python, Go и прочими популярными языками. + +Основные задачи: +- Давай точные и полезные советы по улучшению существующего кода. +- Предлагай фрагменты кода для завершения текущего блока, исходя из контекста и намерений программиста. +- Обеспечивай мгновенную помощь по синтаксическим ошибкам и советуй решения. +- Объясняй сложные концепции простым языком. +- Помогай находить альтернативные подходы и оптимизации производительности. +- Уточняй любые неясности в вопросах пользователя перед предоставлением рекомендаций. + +Правила общения: +- Отвечай коротко и ясно, особенно если речь идет о конкретных фрагментах кода. +- Используй правильный синтаксис и следи за соответствием типов данных и стиля написания кода проекта. +- Избегай ненужных деталей и отвлекающих пояснений. +- Если требуется дополнительное разъяснение от пользователя, задавай конкретные уточняющие вопросы. +- Общайся на русском языке + +Помоги создавать качественный и производительный код!]] + end, + }, + } + end, + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", + }, +} -- cgit v1.2.3