From 4d983532a13f11e7a497e9d305af677037ffa453 Mon Sep 17 00:00:00 2001 From: yetone Date: Fri, 7 Mar 2025 20:27:11 +0800 Subject: [PATCH] fix: more readable value name (#1521) --- lua/avante/api.lua | 2 +- lua/avante/config.lua | 30 +++++++++++++++--------------- lua/avante/health.lua | 2 +- lua/avante/model_selector.lua | 20 ++++++++++++-------- lua/avante/providers/init.lua | 18 +++++++++--------- plugin/avante.lua | 2 +- 6 files changed, 39 insertions(+), 35 deletions(-) diff --git a/lua/avante/api.lua b/lua/avante/api.lua index 77ec2a6..beea54a 100644 --- a/lua/avante/api.lua +++ b/lua/avante/api.lua @@ -20,7 +20,7 @@ function M.switch_file_selector_provider(target_provider) }) end ----@param target Provider +---@param target ProviderName function M.switch_provider(target) require("avante.providers").refresh(target) end ---@param path string diff --git a/lua/avante/config.lua b/lua/avante/config.lua index 25093b8..a1f8c26 100644 --- a/lua/avante/config.lua +++ b/lua/avante/config.lua @@ -20,7 +20,7 @@ local M = {} ---@field custom_tools AvanteLLMToolPublic[] M._defaults = { debug = false, - ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "vertex" | "cohere" | "copilot" | string + ---@alias ProviderName "claude" | "openai" | "azure" | "gemini" | "vertex" | "cohere" | "copilot" | string provider = "claude", -- WARNING: Since auto-suggestions are a high-frequency operation and therefore expensive, -- currently designating it as `copilot` provider is dangerous because: https://github.com/yetone/avante.nvim/issues/1048 @@ -452,8 +452,8 @@ M._defaults = { ---@diagnostic disable-next-line: missing-fields M._options = {} ----@type Provider[] -M.providers = {} +---@type ProviderName[] +M.provider_names = {} ---@param opts? avante.Config function M.setup(opts) @@ -472,7 +472,7 @@ function M.setup(opts) ) M._options = merged - M.providers = vim + M.provider_names = vim .iter(M._defaults) :filter(function(_, value) return type(value) == "table" and value.endpoint ~= nil end) :fold({}, function(acc, k) @@ -488,7 +488,7 @@ function M.setup(opts) M._options.vendors[k] = type(v) == "function" and v() or v end vim.validate({ vendors = { M._options.vendors, "table", true } }) - M.providers = vim.list_extend(M.providers, vim.tbl_keys(M._options.vendors)) + M.provider_names = vim.list_extend(M.provider_names, vim.tbl_keys(M._options.vendors)) end end @@ -501,7 +501,7 @@ function M.override(opts) if next(M._options.vendors) ~= nil then for k, v in pairs(M._options.vendors) do M._options.vendors[k] = type(v) == "function" and v() or v - if not vim.tbl_contains(M.providers, k) then M.providers = vim.list_extend(M.providers, { k }) end + if not vim.tbl_contains(M.provider_names, k) then M.provider_names = vim.list_extend(M.provider_names, { k }) end end vim.validate({ vendors = { M._options.vendors, "table", true } }) end @@ -517,20 +517,20 @@ function M.support_paste_image() return Utils.has("img-clip.nvim") or Utils.has( function M.get_window_width() return math.ceil(vim.o.columns * (M.windows.width / 100)) end ----@param provider Provider +---@param provider_name ProviderName ---@return boolean -function M.has_provider(provider) return M._options[provider] ~= nil or M.vendors[provider] ~= nil end +function M.has_provider(provider_name) return M._options[provider_name] ~= nil or M.vendors[provider_name] ~= nil end ---get supported providers ----@param provider Provider +---@param provider_name ProviderName ---@return AvanteProviderFunctor -function M.get_provider(provider) - if M._options[provider] ~= nil then - return vim.deepcopy(M._options[provider], true) - elseif M.vendors and M.vendors[provider] ~= nil then - return vim.deepcopy(M.vendors[provider], true) +function M.get_provider(provider_name) + if M._options[provider_name] ~= nil then + return vim.deepcopy(M._options[provider_name], true) + elseif M.vendors and M.vendors[provider_name] ~= nil then + return vim.deepcopy(M.vendors[provider_name], true) else - error("Failed to find provider: " .. provider, 2) + error("Failed to find provider: " .. provider_name, 2) end end diff --git a/lua/avante/health.lua b/lua/avante/health.lua index f1f883f..334dc7f 100644 --- a/lua/avante/health.lua +++ b/lua/avante/health.lua @@ -42,7 +42,7 @@ function M.check() end -- Check Copilot if configured - if Config.providers and Config.providers == "copilot" then + if Config.provider and Config.provider == "copilot" then if Utils.has("copilot.lua") or Utils.has("copilot.vim") or Utils.has("copilot") then H.ok("Found Copilot plugin") else diff --git a/lua/avante/model_selector.lua b/lua/avante/model_selector.lua index 7afc4f0..dad319d 100644 --- a/lua/avante/model_selector.lua +++ b/lua/avante/model_selector.lua @@ -4,14 +4,14 @@ local Config = require("avante.config") ---@class avante.ModelSelector local M = {} ----@param provider string +---@param provider_name string ---@param cfg table ---@return table? -local function create_model_entry(provider, cfg) +local function create_model_entry(provider_name, cfg) return cfg.model and { - name = cfg.display_name or (provider .. "/" .. cfg.model), - provider = provider, + name = cfg.display_name or (provider_name .. "/" .. cfg.model), + provider_name = provider_name, model = cfg.model, } end @@ -20,8 +20,8 @@ function M.open() local models = {} -- Collect models from main providers and vendors - for _, provider in ipairs(Config.providers) do - local entry = create_model_entry(provider, Config.get_provider(provider)) + for _, provider_name in ipairs(Config.provider_names) do + local entry = create_model_entry(provider_name, Config.get_provider(provider_name)) if entry then table.insert(models, entry) end end @@ -37,11 +37,15 @@ function M.open() if not choice then return end -- Switch provider if needed - if choice.provider ~= Config.provider then require("avante.providers").refresh(choice.provider) end + if choice.provider_name ~= Config.provider then require("avante.providers").refresh(choice.provider_name) end -- Update config with new model Config.override({ - [choice.provider] = vim.tbl_deep_extend("force", Config.get_provider(choice.provider), { model = choice.model }), + [choice.provider_name] = vim.tbl_deep_extend( + "force", + Config.get_provider(choice.provider_name), + { model = choice.model } + ), }) Utils.info("Switched to model: " .. choice.name) diff --git a/lua/avante/providers/init.lua b/lua/avante/providers/init.lua index 26692f4..21d6494 100644 --- a/lua/avante/providers/init.lua +++ b/lua/avante/providers/init.lua @@ -196,7 +196,7 @@ M.env = E M = setmetatable(M, { ---@param t avante.Providers - ---@param k Provider + ---@param k ProviderName __index = function(t, k) ---@type AvanteProviderFunctor | AvanteBedrockProviderFunctor local Opts = M.get_config(k) @@ -270,14 +270,14 @@ function M.setup() end end ----@param provider Provider -function M.refresh(provider) - require("avante.config").override({ provider = provider }) +---@param provider_name ProviderName +function M.refresh(provider_name) + require("avante.config").override({ provider = provider_name }) ---@type AvanteProviderFunctor | AvanteBedrockProviderFunctor local p = M[Config.provider] E.setup({ provider = p, refresh = true }) - Utils.info("Switch to provider: " .. provider, { once = true, title = "Avante" }) + Utils.info("Switch to provider: " .. provider_name, { once = true, title = "Avante" }) end ---@param opts AvanteProvider | AvanteSupportedProvider | AvanteProviderFunctor | AvanteBedrockProviderFunctor @@ -309,11 +309,11 @@ function M.parse_config(opts) end ---@private ----@param provider Provider +---@param provider_name ProviderName ---@return AvanteProviderFunctor | AvanteBedrockProviderFunctor -function M.get_config(provider) - provider = provider or Config.provider - local cur = Config.get_provider(provider) +function M.get_config(provider_name) + provider_name = provider_name or Config.provider + local cur = Config.get_provider(provider_name) return type(cur) == "function" and cur() or cur end diff --git a/plugin/avante.lua b/plugin/avante.lua index 3ce746e..bf24d6c 100644 --- a/plugin/avante.lua +++ b/plugin/avante.lua @@ -113,7 +113,7 @@ cmd("SwitchProvider", function(opts) require("avante.api").switch_provider(vim.t complete = function(_, line, _) local prefix = line:match("AvanteSwitchProvider%s*(.*)$") or "" ---@param key string - return vim.tbl_filter(function(key) return key:find(prefix, 1, true) == 1 end, Config.providers) + return vim.tbl_filter(function(key) return key:find(prefix, 1, true) == 1 end, Config.provider_names) end, }) cmd(