MCPcopy Create free account
hub / github.com/diillson/chatcli / ExecuteWithStream

Method ExecuteWithStream

cli/plugins/builtin_lsp.go:148–200  ·  view source on GitHub ↗

ExecuteWithStream mirrors Execute — this plugin produces no incremental output, so the stream callback is ignored.

(_ context.Context, args []string, _ func(string))

Source from the content-addressed store, hash-verified

146// ExecuteWithStream mirrors Execute — this plugin produces no incremental
147// output, so the stream callback is ignored.
148func (p *BuiltinLSPPlugin) ExecuteWithStream(_ context.Context, args []string, _ func(string)) (string, error) {
149 adapter := currentLSPAdapter()
150 if adapter == nil {
151 return "", errors.New("@lsp: no LSP adapter wired in this session")
152 }
153 if len(args) == 0 {
154 return "", errors.New(`@lsp: empty args. Example: <tool_call name="@lsp" args='{"cmd":"diagnostics","args":{"file":"main.go"}}' />`)
155 }
156
157 cmd, inner, err := parseLSPInvocation(args)
158 if err != nil {
159 return "", fmt.Errorf("@lsp: %w", err)
160 }
161
162 switch cmd {
163 case "diagnostics":
164 in, err := decodeLSPArgs(inner, false)
165 if err != nil {
166 return "", err
167 }
168 return adapter.Diagnostics(in.File)
169 case "definition":
170 in, err := decodeLSPArgs(inner, true)
171 if err != nil {
172 return "", err
173 }
174 return adapter.Definition(in.File, in.Line, in.Column)
175 case "references":
176 in, err := decodeLSPArgs(inner, true)
177 if err != nil {
178 return "", err
179 }
180 includeDecl := true
181 if in.IncludeDeclaration != nil {
182 includeDecl = *in.IncludeDeclaration
183 }
184 return adapter.References(in.File, in.Line, in.Column, includeDecl, in.Limit)
185 case "symbols":
186 in, err := decodeLSPArgs(inner, false)
187 if err != nil {
188 return "", err
189 }
190 return adapter.Symbols(in.File)
191 case "hover":
192 in, err := decodeLSPArgs(inner, true)
193 if err != nil {
194 return "", err
195 }
196 return adapter.Hover(in.File, in.Line, in.Column)
197 default:
198 return "", fmt.Errorf("@lsp: unknown cmd %q (valid: diagnostics|definition|references|symbols|hover)", cmd)
199 }
200}
201
202// lspArgs is the shared argument shape across subcommands.
203type lspArgs struct {

Callers 1

ExecuteMethod · 0.95

Calls 9

currentLSPAdapterFunction · 0.85
parseLSPInvocationFunction · 0.85
decodeLSPArgsFunction · 0.85
ErrorfMethod · 0.80
DiagnosticsMethod · 0.65
DefinitionMethod · 0.65
ReferencesMethod · 0.65
SymbolsMethod · 0.65
HoverMethod · 0.65

Tested by

no test coverage detected