From f671fb679b303e9f4de270414c008ad7129e6c25 Mon Sep 17 00:00:00 2001 From: Igor Soarez Date: Mon, 21 Sep 2026 14:57:57 +0300 Subject: supermaven off unless asked for; a blocked cask no longer ends install.sh Supermaven was running everywhere. Its `condition` option reads the other way round from what the code assumed -- `true` stops it -- so `return false` meant "never stop", and the plugin loaded on InsertEnter, started its agent and offered inline suggestions on every machine. Only blink's source for it was off, which is what made it look disabled. It sends buffer context to a third party, so it is now opt-in: DOT_SUPERMAVEN=1, in ~/.localenv where it is wanted. Off, lazy keeps both plugins off disk entirely. install.sh no longer stops at brew bundle either. A managed machine can refuse a cask outright -- "disabled because it does not pass the macOS Gatekeeper check" -- and brew bundle fails the whole run for one such entry, which left the checkouts, nvim plugins and colour files undone. It warns and carries on; brew has already named the entry. --- config/nvim/lua/plugins/completion.lua | 19 +++++++++++++++---- install.sh | 14 +++++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/config/nvim/lua/plugins/completion.lua b/config/nvim/lua/plugins/completion.lua index fa037cd..2489fa2 100644 --- a/config/nvim/lua/plugins/completion.lua +++ b/config/nvim/lua/plugins/completion.lua @@ -1,3 +1,11 @@ +-- Supermaven sends buffer context to a third party, so no machine gets it +-- unless it asks: export DOT_SUPERMAVEN=1, in ~/.localenv on the machines that +-- want it. Off, `enabled = false` keeps the plugins off disk entirely, which +-- matters because the `condition` option below is supermaven-nvim's own and +-- reads the other way round -- `true` STOPS it, so the `return false` there +-- left it running on every machine, agent and inline suggestions included. +local supermaven_enabled = vim.env.DOT_SUPERMAVEN == "1" + local plugins = { -- Autocompletion and Snippets { @@ -11,9 +19,10 @@ local plugins = { }, sources = { -- Enable completion from lazydev, LSP, filesystem paths, snippets, buffer - -- (and optionally supermaven) - -- default = { "lazydev", "lsp", "path", "snippets", "buffer", "supermaven" }, - default = { "lazydev", "lsp", "path", "snippets", "buffer" }, + -- (and supermaven, where that machine opted in -- see the top) + default = supermaven_enabled + and { "lazydev", "lsp", "path", "snippets", "buffer", "supermaven" } + or { "lazydev", "lsp", "path", "snippets", "buffer" }, providers = { -- Neovim Lua API / plugin spec completions (folke/lazydev.nvim) lazydev = { @@ -28,7 +37,7 @@ local plugins = { }, -- lsp = { fallbacks = {} }, -- always show the buffer source supermaven = { - enabled = false, + enabled = supermaven_enabled, name = "supermaven", module = "blink-cmp-supermaven", async = true, @@ -101,6 +110,7 @@ local plugins = { -- Supermaven was acquired (and killed) by Cursor { "supermaven-inc/supermaven-nvim", + enabled = supermaven_enabled, event = "InsertEnter", opts = { keymaps = { @@ -132,6 +142,7 @@ local plugins = { }, { "huijiro/blink-cmp-supermaven", + enabled = supermaven_enabled, }, -- Lua LSP completion + types for the Neovim API and lazy plugin specs. diff --git a/install.sh b/install.sh index bdaba8f..a9b1f7a 100755 --- a/install.sh +++ b/install.sh @@ -53,7 +53,19 @@ if [[ "$(uname)" == "Darwin" ]]; then fi # --no-upgrade: install what is missing and leave what is there alone. Plain # `brew bundle` also upgrades every listed package that is out of date. - brew bundle --no-upgrade --file="${dotfiles_dir}/Brewfile" + # + # Not fatal: brew bundle fails the whole run if a single entry will not + # install, and on a managed machine that is routine -- a cask can be blocked + # by policy ("has been disabled because it does not pass the macOS Gatekeeper + # check"). One unavailable app is no reason to leave the checkouts, nvim + # plugins and colours undone, so this warns and carries on. brew has already + # said which entry failed, right above. + if ! brew bundle --no-upgrade --file="${dotfiles_dir}/Brewfile"; then + >&2 echo + >&2 echo "WARNING: some Brewfile entries did not install (see brew's output" + >&2 echo "above). Continuing with the rest of the setup." + >&2 echo + fi fi # 2. Checkouts the config reads: the pure prompt (config/zshrc falls back to a -- cgit v1.2.3