diff options
| author | Paul Buetow <paul@buetow.org> | 2025-08-17 00:06:00 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-08-17 00:06:00 +0300 |
| commit | dc383b4faef881f3bb22816f42c53a79236a4152 (patch) | |
| tree | 7c6a48487fc1d51fed72ea5d15618d133132cdaa /cmd | |
| parent | 6a1d48036105e92193aef11a15a77a569eeb1562 (diff) | |
lsp/config: make completion trigger characters configurable
- Add trigger_characters to JSON config and ServerOptions
- Store on server and advertise in initialize
- Update README and example config
- Preserve previous defaults when unset
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/hexai/main.go | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/cmd/hexai/main.go b/cmd/hexai/main.go index 8e446a3..941460e 100644 --- a/cmd/hexai/main.go +++ b/cmd/hexai/main.go @@ -64,13 +64,14 @@ func main() { } server := lsp.NewServer(os.Stdin, os.Stdout, logger, lsp.ServerOptions{ - LogContext: *logPath != "", - MaxTokens: cfg.MaxTokens, - ContextMode: cfg.ContextMode, - WindowLines: cfg.ContextWindowLines, - MaxContextTokens: cfg.MaxContextTokens, - NoDiskIO: cfg.NoDiskIO, - Client: client, + LogContext: *logPath != "", + MaxTokens: cfg.MaxTokens, + ContextMode: cfg.ContextMode, + WindowLines: cfg.ContextWindowLines, + MaxContextTokens: cfg.MaxContextTokens, + NoDiskIO: cfg.NoDiskIO, + Client: client, + TriggerCharacters: cfg.TriggerCharacters, }) if err := server.Run(); err != nil { logger.Fatalf("server error: %v", err) @@ -79,13 +80,14 @@ func main() { // appConfig holds user-configurable settings. type appConfig struct { - MaxTokens int `json:"max_tokens"` - ContextMode string `json:"context_mode"` - ContextWindowLines int `json:"context_window_lines"` - MaxContextTokens int `json:"max_context_tokens"` - LogPreviewLimit int `json:"log_preview_limit"` - NoDiskIO bool `json:"no_disk_io"` - Provider string `json:"provider"` + MaxTokens int `json:"max_tokens"` + ContextMode string `json:"context_mode"` + ContextWindowLines int `json:"context_window_lines"` + MaxContextTokens int `json:"max_context_tokens"` + LogPreviewLimit int `json:"log_preview_limit"` + NoDiskIO bool `json:"no_disk_io"` + TriggerCharacters []string `json:"trigger_characters"` + Provider string `json:"provider"` // Provider-specific options OpenAIBaseURL string `json:"openai_base_url"` OpenAIModel string `json:"openai_model"` @@ -136,6 +138,9 @@ func loadConfig(logger *log.Logger) appConfig { cfg.LogPreviewLimit = fileCfg.LogPreviewLimit } cfg.NoDiskIO = fileCfg.NoDiskIO + if len(fileCfg.TriggerCharacters) > 0 { + cfg.TriggerCharacters = append([]string{}, fileCfg.TriggerCharacters...) + } if strings.TrimSpace(fileCfg.Provider) != "" { cfg.Provider = fileCfg.Provider } |
