-- AI ghost-text completion via NeoCodeium (Windsurf/Codeium). Replaces -- supermaven. Suggestions render as virtual text only; blink.cmp keeps its -- own menu (ghost_text stays disabled in AstroNvim's blink spec). -- -- Disabled in python buffers and under the LeetCode work directory. Both are -- evaluated by neocodeium on InsertEnter, and `:NeoCodeium enable_buffer` -- still overrides them per buffer. local leetcode_dir = vim.fn.expand "~/Developer/github.com/prdlk/leetcode/work/" local function is_leetcode_buffer(bufnr) local name = vim.api.nvim_buf_get_name(bufnr) return name:sub(1, #leetcode_dir) == leetcode_dir end -- Insert-mode keys that act on a visible suggestion and otherwise keep their -- native meaning ( backspace, delete word). local function when_visible(action, fallback) return function() local neocodeium = require "neocodeium" if neocodeium.visible() then neocodeium[action]() return "" end return fallback end end return { "monkoose/neocodeium", event = "VeryLazy", cmd = "NeoCodeium", opts = { log_level = "warn", filetypes = { python = false }, filter = function(bufnr) return not is_leetcode_buffer(bufnr) end, }, keys = { { "", when_visible("accept", ""), mode = "i", expr = true, desc = "Accept AI suggestion" }, { "", when_visible("accept_word", ""), mode = "i", expr = true, desc = "Accept AI suggestion word" }, { "", when_visible("clear", ""), mode = "i", expr = true, desc = "Clear AI suggestion" }, }, }