summaryrefslogtreecommitdiff
path: root/config/nvim/lua
diff options
context:
space:
mode:
author2025-06-19 02:57:51 +0300
committer2025-06-19 02:57:51 +0300
commit26341d565ac365904ecd6c98479903a2b0e11bdd (patch)
treede221153df73486f9c2937185a25ac3cedabde7f /config/nvim/lua
parentВс 15 июн 2025 16:45:49 MSK (diff)
downloaddotfiles-26341d565ac365904ecd6c98479903a2b0e11bdd.tar.gz
dotfiles-26341d565ac365904ecd6c98479903a2b0e11bdd.tar.bz2
dotfiles-26341d565ac365904ecd6c98479903a2b0e11bdd.tar.xz
dotfiles-26341d565ac365904ecd6c98479903a2b0e11bdd.zip
Чт 19 июн 2025 02:57:51 MSK
Diffstat (limited to 'config/nvim/lua')
-rw-r--r--config/nvim/lua/lsp.lua14
-rw-r--r--config/nvim/lua/plugins.lua6
-rw-r--r--config/nvim/lua/plugins/apidocs.lua16
-rw-r--r--config/nvim/lua/plugins/cmp.lua30
-rw-r--r--config/nvim/lua/plugins/codecompanion.lua82
5 files changed, 137 insertions, 11 deletions
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 = {
+ { "<leader>sad", "<cmd>ApidocsOpen<cr>", 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",
- ['<Tab>'] = { 'show', 'accept' },
+ ["<Tab>"] = { "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",
+ },
+}