From a0a00abfc524ad07210399bf250c297c3cf509f8 Mon Sep 17 00:00:00 2001 From: pika <67532734+pik4li@users.noreply.github.com> Date: Sun, 12 Jan 2025 01:33:36 +0100 Subject: [PATCH] addet a important keympap and also addet ai cmp (but idk if it works..) --- lua/pika/core/keymaps.lua | 1 + lua/pika/plugins/nvim-cmp.lua | 204 ++++++++++++++++++++++------------ 2 files changed, 133 insertions(+), 72 deletions(-) diff --git a/lua/pika/core/keymaps.lua b/lua/pika/core/keymaps.lua index 6761c35..633eb1c 100644 --- a/lua/pika/core/keymaps.lua +++ b/lua/pika/core/keymaps.lua @@ -53,6 +53,7 @@ map("n", "k", "", { desc = "Move focus to the upper window" }) -- map("n", "p", vim.cmd.Ex) map("n", "q", vim.cmd.q) map("n", "s", vim.cmd.w) +map("n", "", vim.cmd.w) -- ─< rename word under cursor >─────────────────────────────────────────────────────────── map("n", "R", [[:%s/\<\>//gI]]) diff --git a/lua/pika/plugins/nvim-cmp.lua b/lua/pika/plugins/nvim-cmp.lua index 42fb51e..7e2c404 100644 --- a/lua/pika/plugins/nvim-cmp.lua +++ b/lua/pika/plugins/nvim-cmp.lua @@ -1,79 +1,139 @@ return { - "hrsh7th/nvim-cmp", - event = "InsertEnter", - dependencies = { - "hrsh7th/cmp-buffer", -- source for text in buffer - "hrsh7th/cmp-path", -- source for file system paths - { - "L3MON4D3/LuaSnip", - version = "v2.*", -- latest release of LuaSnip - build = "make install_jsregexp", -- optional regex support for LuaSnip + { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + "hrsh7th/cmp-buffer", -- source for text in buffer + "hrsh7th/cmp-path", -- source for file system paths + { + "L3MON4D3/LuaSnip", + version = "v2.*", -- latest release of LuaSnip + build = "make install_jsregexp", -- optional regex support for LuaSnip + }, + "saadparwaiz1/cmp_luasnip", -- for autocompletion + "rafamadriz/friendly-snippets", -- useful snippets + "onsails/lspkind.nvim", -- vs-code like pictograms }, - "saadparwaiz1/cmp_luasnip", -- for autocompletion - "rafamadriz/friendly-snippets", -- useful snippets - "onsails/lspkind.nvim", -- vs-code like pictograms - }, - config = function() - local cmp = require("cmp") - local luasnip = require("luasnip") - local lspkind = require("lspkind") + config = function() + local cmp = require("cmp") + local luasnip = require("luasnip") + local lspkind = require("lspkind") - -- Load snippets from friendly-snippets and custom directory - require("luasnip.loaders.from_vscode").lazy_load() - require("luasnip.loaders.from_vscode").lazy_load({ paths = { "~/.config/nvim/snippets" } }) + -- Load snippets from friendly-snippets and custom directory + require("luasnip.loaders.from_vscode").lazy_load() + require("luasnip.loaders.from_vscode").lazy_load({ paths = { "~/.config/nvim/snippets" } }) - cmp.setup({ - completion = { - completeopt = "menu,menuone,preview,noselect", - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.select_prev_item(), -- previous suggestion - [""] = cmp.mapping.select_next_item(), -- next suggestion - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), -- show completion suggestions - [""] = cmp.mapping.abort(), -- close completion window - [""] = cmp.mapping.confirm({ select = false }), + cmp.setup({ + completion = { + completeopt = "menu,menuone,preview,noselect", + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + -- [""] = cmp.mapping({ + -- cmp.mapping.complete({ + -- config = { + -- sources = cmp.config.sources({ + -- { name = "cmp_ai" }, + -- }), + -- }, + -- }), + -- { "i" }, + -- }), - -- Tab to complete - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.confirm({ select = true }) -- confirm selection - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { "i", "s" }), - }), - -- sources for autocompletion - sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, -- snippets - { name = "buffer" }, -- text within current buffer - { name = "path" }, -- file system paths - }), - -- configure lspkind for vs-code like pictograms in completion menu - formatting = { - format = lspkind.cmp_format({ - mode = "symbol_text", -- show symbol text with icons - maxwidth = 130, - ellipsis_char = "...", + [""] = cmp.mapping.select_prev_item(), -- previous suggestion + [""] = cmp.mapping.select_next_item(), -- next suggestion + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), -- show completion suggestions + [""] = cmp.mapping.abort(), -- close completion window + [""] = cmp.mapping.confirm({ select = false }), + + -- Tab to complete + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.confirm({ select = true }) -- confirm selection + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), }), - }, - -- Enable rounded borders - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, - experimental = { - ghost_text = true, -- This enables the inline ghost text - }, - }) - end, + -- sources for autocompletion + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, -- snippets + { name = "buffer" }, -- text within current buffer + { name = "path" }, -- file system paths + { name = "cmp_ai" }, -- AI completion + }), + -- configure lspkind for vs-code like pictograms in completion menu + formatting = { + format = lspkind.cmp_format({ + mode = "symbol_text", -- show symbol text with icons + maxwidth = 130, + ellipsis_char = "...", + }), + }, + -- Enable rounded borders + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + experimental = { + ghost_text = true, -- This enables the inline ghost text + }, + }) + end, + }, + + { + -- ─< for ai use >────────────────────────────────────────────────────────────────────── + "tzachar/cmp-ai", + dependencies = { + "hrsh7th/nvim-cmp", + "tzachar/cmp-ai", + }, + + config = function() + local cmp = require("cmp") + local cmp_ai = require("cmp_ai.config") + + -- Setup cmp-ai configuration + cmp_ai:setup({ + max_lines = 100, + provider = "Ollama", + -- provider_options = { + -- model = "codellama:7b-code", + -- auto_unload = false, + -- raw_response_cb = function(response) + -- vim.notify(vim.inspect(response)) + -- vim.g.ai_raw_response = response + -- end, + -- }, + provider_options = { + model = "qwen2.5-coder:7b-base-q6_K", + prompt = function(lines_before, lines_after) + return "<|fim_prefix|>" .. lines_before .. "<|fim_suffix|>" .. lines_after .. "<|fim_middle|>" + end, + raw_response_cb = function(response) + vim.notify(vim.inspect(response)) + vim.g.ai_raw_response = response + end, + }, + notify = true, + notify_callback = function(msg) + vim.notify(msg) + end, + run_on_every_keystroke = true, + ignored_file_types = { + txt = true, + }, + }) + end, + }, }