summaryrefslogtreecommitdiff
path: root/internal/lsp/server.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-27 02:19:22 +0300
committerPaul Buetow <paul@buetow.org>2025-09-27 02:19:22 +0300
commit51b2621d58633aa5c0f5cc7b64616d70d41acc91 (patch)
tree0c413061a5ab8061ddeab9c3f421228737613ecb /internal/lsp/server.go
parent1731126b52e406a300270c8fc8ac1061a4422b27 (diff)
Support multi-provider fan-out across CLI and completions
Diffstat (limited to 'internal/lsp/server.go')
-rw-r--r--internal/lsp/server.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/internal/lsp/server.go b/internal/lsp/server.go
index 28f3218..1fbb0cc 100644
--- a/internal/lsp/server.go
+++ b/internal/lsp/server.go
@@ -257,6 +257,28 @@ func (s *Server) clientFor(spec requestSpec) llm.Client {
if store != nil {
cfg = store.Snapshot()
}
+ cfg.Provider = provider
+ modelOverride := strings.TrimSpace(spec.entry.Model)
+ switch provider {
+ case "openai":
+ if modelOverride != "" {
+ cfg.OpenAIModel = modelOverride
+ } else if spec.fallbackModel != "" {
+ cfg.OpenAIModel = spec.fallbackModel
+ }
+ case "copilot":
+ if modelOverride != "" {
+ cfg.CopilotModel = modelOverride
+ } else if spec.fallbackModel != "" {
+ cfg.CopilotModel = spec.fallbackModel
+ }
+ case "ollama":
+ if modelOverride != "" {
+ cfg.OllamaModel = modelOverride
+ } else if spec.fallbackModel != "" {
+ cfg.OllamaModel = spec.fallbackModel
+ }
+ }
client, err := newClientForProvider(cfg, provider)
if err != nil {
logging.Logf("lsp ", "failed to build client for provider=%s: %v", provider, err)