summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-08-16 23:58:40 +0300
committerPaul Buetow <paul@buetow.org>2025-08-16 23:58:40 +0300
commit6a1d48036105e92193aef11a15a77a569eeb1562 (patch)
tree96bae3cf3e46ab96d6285a18739f3da82b0da7f6 /internal
parent37d0049e7a7b55d40af6da1a884810a543fead22 (diff)
lsp: refactor NewServer to use options struct
- Introduce ServerOptions to reduce constructor parameter count - Update main.go call site; preserve defaults and behavior - Build and run tests
Diffstat (limited to 'internal')
-rw-r--r--internal/lsp/server.go51
1 files changed, 29 insertions, 22 deletions
diff --git a/internal/lsp/server.go b/internal/lsp/server.go
index c6c3812..81cb661 100644
--- a/internal/lsp/server.go
+++ b/internal/lsp/server.go
@@ -35,28 +35,35 @@ type Server struct {
startTime time.Time
}
-func NewServer(r io.Reader, w io.Writer, logger *log.Logger, logContext bool, maxTokens int, contextMode string, windowLines int, maxContextTokens int, noDiskIO bool, client llm.Client) *Server {
- s := &Server{in: bufio.NewReader(r), out: w, logger: logger, docs: make(map[string]*document), logContext: logContext}
- if maxTokens <= 0 {
- maxTokens = 500
- }
- s.maxTokens = maxTokens
- if contextMode == "" {
- contextMode = "file-on-new-func"
- }
- if windowLines <= 0 {
- windowLines = 120
- }
- if maxContextTokens <= 0 {
- maxContextTokens = 2000
- }
- s.contextMode = contextMode
- s.windowLines = windowLines
- s.maxContextTokens = maxContextTokens
- s.noDiskIO = noDiskIO
- s.startTime = time.Now()
- s.llmClient = client
- return s
+// ServerOptions collects configuration for NewServer to avoid long parameter lists.
+type ServerOptions struct {
+ LogContext bool
+ MaxTokens int
+ ContextMode string
+ WindowLines int
+ MaxContextTokens int
+ NoDiskIO bool
+ Client llm.Client
+}
+
+func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server {
+ s := &Server{in: bufio.NewReader(r), out: w, logger: logger, docs: make(map[string]*document), logContext: opts.LogContext}
+ maxTokens := opts.MaxTokens
+ if maxTokens <= 0 { maxTokens = 500 }
+ s.maxTokens = maxTokens
+ contextMode := opts.ContextMode
+ if contextMode == "" { contextMode = "file-on-new-func" }
+ windowLines := opts.WindowLines
+ if windowLines <= 0 { windowLines = 120 }
+ maxContextTokens := opts.MaxContextTokens
+ if maxContextTokens <= 0 { maxContextTokens = 2000 }
+ s.contextMode = contextMode
+ s.windowLines = windowLines
+ s.maxContextTokens = maxContextTokens
+ s.noDiskIO = opts.NoDiskIO
+ s.startTime = time.Now()
+ s.llmClient = opts.Client
+ return s
}
func (s *Server) Run() error {