diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 1fc1e14..906c791 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -29,7 +29,7 @@ $menu = wofi --show drun exec-once = $terminal exec-once = nm-applet & exec-once = mako & hypridle & waybar & hyprpaper & firefox - +exec-once = snx-rs-gui & ############################# ### ENVIRONMENT VARIABLES ### diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore deleted file mode 100644 index 67dcbc2..0000000 --- a/config/nvim/.gitignore +++ /dev/null @@ -1 +0,0 @@ -codecompanion.lua diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index a464922..f17796d 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,7 +1,8 @@ { - "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "LuaSnip": { "branch": "master", "commit": "fb525166ccc30296fb3457441eb979113de46b00" }, + "apidocs.nvim": { "branch": "main", "commit": "d6a5c8436d183ab85d8cf8e365ebc79920caf506" }, "auto-save.nvim": { "branch": "main", "commit": "37c82fd548e3f5ffc2d9d020a65dac1044584f44" }, - "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "blink.cmp": { "branch": "main", "commit": "9bcb14b43852a6f2bfd5ac9ef29cb5cf09b1b39b" }, "codecompanion.nvim": { "branch": "main", "commit": "9edf22cb71711cd7fab7671a25ed5424011a379d" }, "conform.nvim": { "branch": "master", "commit": "8132ec733eed3bf415b97b76797ca41b59f51d7d" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, @@ -21,7 +22,7 @@ "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" }, "nvim-lspconfig": { "branch": "master", "commit": "7ad4a11cc5742774877c529fcfb2702f7caf75e4" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-tree.lua": { "branch": "master", "commit": "6b5b36659688767fb9f133bb83024ab1466fe5cd" }, + "nvim-tree.lua": { "branch": "master", "commit": "d87b41ca537e2131622d48a6c25ccf2fbe0e5d62" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-context": { "branch": "master", "commit": "1a1a7c5d6d75cb49bf64049dafab15ebe294a79f" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "89ebe73cd2836db80a22d9748999ace0241917a5" }, 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", + }, +} diff --git a/config/nvim/snippets/json.json b/config/nvim/snippets/json.json new file mode 100644 index 0000000..1564108 --- /dev/null +++ b/config/nvim/snippets/json.json @@ -0,0 +1,16 @@ +{ + "launch config": { + "body": [ + "{", + "\t\"name\": \"Launch ${1}\",", + "\t\"type\": \"go\",", + "\t\"request\": \"launch\",", + "\t\"program\": \"cmd/${1}\",", + "\t\"args\": [${2}],", + "\t\"outputMode\": \"remote\"", + "}" + ], + "description": "package header", + "prefix": "launch" + } +} diff --git a/config/nvim/snippets/package.json b/config/nvim/snippets/package.json index 7c7e94a..dc7f70a 100644 --- a/config/nvim/snippets/package.json +++ b/config/nvim/snippets/package.json @@ -5,6 +5,10 @@ { "language": "go", "path": "./go.json" + }, + { + "language": "json", + "path": "./json.json" } ] }