diff --git a/.config/nvim/lua/plugins/nvim-cmp.lua b/.config/nvim/lua/plugins/nvim-cmp.lua index f6096794..2402e5d7 100644 --- a/.config/nvim/lua/plugins/nvim-cmp.lua +++ b/.config/nvim/lua/plugins/nvim-cmp.lua @@ -1,14 +1,45 @@ return { - { - "hrsh7th/nvim-cmp", - -- dependencies = { - -- "jesseleite/nvim-noirbuddy", - -- }, - -- config = function() - -- require("cmp").setup({ - -- window = require("noirbuddy.plugins.cmp").window, - -- }) - -- end, - -- }, - }, + "hrsh7th/nvim-cmp", + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + local has_words_before = function() + unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + end + + local cmp = require("cmp") + + opts.mapping = vim.tbl_extend("force", opts.mapping, { + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + -- You could replace select_next_item() with confirm({ select = true }) to get VS Code autocompletion behavior + -- cmp.select_next_item() + cmp.confirm({ select = true }) + elseif vim.snippet.active({ direction = 1 }) then + vim.schedule(function() + vim.snippet.jump(1) + end) + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif vim.snippet.active({ direction = -1 }) then + vim.schedule(function() + vim.snippet.jump(-1) + end) + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + fallback() + end, { "i", "s" }), + }) + end, } diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add index 7c3f3523..972bccf8 100644 --- a/.config/nvim/spell/en.utf-8.add +++ b/.config/nvim/spell/en.utf-8.add @@ -28,3 +28,6 @@ config Hyprland Rofi Dunst +Mindmap +linters +PRs diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl index 60385967..051f8a2a 100644 Binary files a/.config/nvim/spell/en.utf-8.add.spl and b/.config/nvim/spell/en.utf-8.add.spl differ