diff options
36 files changed, 4758 insertions, 3932 deletions
@@ -18,7 +18,7 @@ ## Coding Style & Naming Conventions -- Aim for at least 80% unit test coverage of all source code. +- Aim for at least 85% unit test coverage of all source code. - Ensure that all unit tests pass before merging any changes. - If possible, construct individual methods so that they can be unit tested. But only if it doesn't add too much boilerplate to the code base. - There should be no source code file larger than 1000 lines. If so, split it up into multiple. diff --git a/Magefile.go b/Magefile.go index bf8de52..6acc882 100644 --- a/Magefile.go +++ b/Magefile.go @@ -90,6 +90,8 @@ func Install() error { // printCoverage prints a warning if an existing coverage profile shows total < coverateThreshold. func printCoverage() { + // Ensure the top-level coverage profile is refreshed at least once per day. + ensureDailyCoverage(24 * time.Hour) select { case coveragePrinted <- struct{}{}: default: @@ -117,6 +119,23 @@ func printCoverage() { } } +// ensureDailyCoverage regenerates the main coverage profile when it's missing +// or older than maxAge. It writes to docs/coverage.out via the Coverage target. +func ensureDailyCoverage(maxAge time.Duration) { + const prof = "docs/coverage.out" + st, err := os.Stat(prof) + if err == nil { + age := time.Since(st.ModTime()) + if age <= maxAge { + return // fresh enough + } + } + // Missing or stale; attempt to refresh. Do not hard-fail builds if coverage fails. + if err := Coverage(); err != nil { + fmt.Println("[coverage] refresh skipped due to error:", err) + } +} + // totalCoveragePercent returns the parsed total percentage from a coverage profile using `go tool cover -func`. func totalCoveragePercent(profile string) (float64, bool) { out, err := sh.Output("go", "tool", "cover", "-func="+profile) @@ -196,16 +215,9 @@ func DevInstall() error { } // CoverCheck enforces minimum per-package coverage. -// Default threshold is 80.0; override with HEXAI_COVER_THRESH. // Exceptions: any package whose import path contains "/cmd/" and any substring // provided via HEXAI_COVER_EXCEPT (comma-separated). func CoverCheck() error { - threshold := 80.0 - if v := strings.TrimSpace(os.Getenv("HEXAI_COVER_THRESH")); v != "" { - if f, err := strconv.ParseFloat(v, 64); err == nil { - threshold = f - } - } except := []string{"/cmd/"} if v := strings.TrimSpace(os.Getenv("HEXAI_COVER_EXCEPT")); v != "" { parts := strings.Split(v, ",") @@ -256,12 +268,12 @@ func CoverCheck() error { total = 0 } all = append(all, res{pkg, total}) - if total < threshold { + if total < coverageThreshold { bad = append(bad, res{pkg, total}) } time.Sleep(10 * time.Millisecond) } - fmt.Printf("Per-package coverage (threshold %.1f%%)\n", threshold) + fmt.Printf("Per-package coverage (threshold %.1f%%)\n", coverageThreshold) for _, r := range all { fmt.Printf("- %s: %.1f%%\n", r.pkg, r.total) } @@ -270,7 +282,7 @@ func CoverCheck() error { for _, r := range bad { fmt.Printf("- %s: %.1f%%\n", r.pkg, r.total) } - return fmt.Errorf("coverage check failed (%d package(s) < %.1f%%)", len(bad), threshold) + return fmt.Errorf("coverage check failed (%d package(s) < %.1f%%)", len(bad), coverageThreshold) } fmt.Println("All packages meet coverage threshold.") return nil diff --git a/PROJECTSTATUS.md b/PROJECTSTATUS.md index b9d815f..02ed875 100644 --- a/PROJECTSTATUS.md +++ b/PROJECTSTATUS.md @@ -2,7 +2,7 @@ ## Code quality -* [/] TODO's in the code to be addressed +* [X] TODO's in the code to be addressed * [/] No more than 1000 LOC per source file * [/] No more than 50 LOC per function * [/] Each struct type in his own file @@ -13,7 +13,7 @@ ### Improvements -* [ ] Modify the LLM triggers to be more consistenc. E.g. use >>text here> or >text here> instead of semicolons? +* [X] Modify the LLM triggers to be more consistenc. E.g. use >>text here> or >text here> instead of semicolons? * [X] Include unit test coverage reports * [ ] Change inline triggers to include > to be more consistent with other triggers * [ ] Use are more stricter linter for auto-generated code (gofumpt i think is such a linter) @@ -13,12 +13,10 @@ It has got improved capabilities for Go code understanding (for example, create * Stand-alone command line tool for LLM interaction * Support for OpenAI, GitHub Copilot, and Ollama -AI coded it under human orchestration and supervision following best practices with manual code reviews. - ## Documentation * [Configuration guide](docs/configuration.md) -* [Usage examples](docs/usage-examples.md) +* [Usage examples](docs/usage.md) * [Source structure](docs/source-structure.md) ## Build and tasks @@ -29,6 +27,9 @@ Hexai uses Mage for developer tasks. Install Mage, then run targets like build, - Build binaries: `mage build` (produces `hexai` and `hexai-lsp`) - Dev build (+ tests, vet, lint): `mage dev` - Run tests: `mage test` +- Run tests with coverage: `go test ./... -cover` +- In restricted sandboxes/CI (no sockets), skip network-based tests: + - `HEXAI_TEST_SKIP_NET=1 go test ./... -cover` - Install binaries to `GOPATH/bin`: `mage install` Note: `mage lint` uses `golangci-lint`. Install via `mage devinstall` if needed. diff --git a/config.json.example b/config.json.example index d0e6ed7..7a4298c 100644 --- a/config.json.example +++ b/config.json.example @@ -8,6 +8,10 @@ "completion_throttle_ms": 0, "no_disk_io": true, "trigger_characters": [".", ":", "/", "_", " "], + "inline_open": ">", + "inline_close": ">", + "chat_suffix": ">", + "chat_prefixes": ["?", "!", ":", ";"], "coding_temperature": 0.2, "provider": "openai", diff --git a/docs/configuration.md b/docs/configuration.md index e5e7dfa..3b862af 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -21,6 +21,10 @@ The config file is optional. "completion_throttle_ms": 0, "no_disk_io": true, "trigger_characters": [".", ":", "/", "_", " " ], + "inline_open": ">", + "inline_close": ">", + "chat_suffix": ">", + "chat_prefixes": ["?", "!", ":", ";"], "coding_temperature": 0.2, "provider": "ollama", "copilot_model": "gpt-4o-mini", @@ -47,9 +51,29 @@ Key fields: - manual_invoke_min_prefix: minimum typed identifier chars required for manual invoke to proceed without structural triggers (0 allows always). - no_disk_io: avoid reading files from disk when building context. - trigger_characters: LSP completion trigger characters. +- inline_open / inline_close: characters that bracket inline prompts (default `>`/`>`). Inline prompts support `>text>` and a double-open variant `>>text>`. Single-character markers are required. +- chat_suffix / chat_prefixes: in-editor chat triggers (default suffix `>` and prefixes `["?","!",":",";"]`). A line ending with one of these prefixes immediately followed by the suffix triggers a chat reply (e.g., `What?>`). Prefixes must be single characters. - coding_temperature: optional override for LSP calls. - provider: `openai` | `copilot` | `ollama`. +### Trigger customization + +Defaults use `>` for inline prompts and chat suffix. You can change them, e.g.: + +```json +{ + "inline_open": "<", + "inline_close": ">", + "chat_suffix": "/", + "chat_prefixes": ["?", "!"], + "trigger_characters": [".", ":", "/", "_", " "] +} +``` + +Notes: +- `inline_open`/`inline_close` must be single characters; `>>text>` is the double‑open variant. +- `chat_prefixes` items must be single characters. + ## Environment overrides - All config-file options can be overridden by environment variables prefixed with `HEXAI_`. @@ -59,6 +83,8 @@ Key fields: - `HEXAI_CODING_TEMPERATURE` - `HEXAI_COMPLETION_DEBOUNCE_MS`, `HEXAI_COMPLETION_THROTTLE_MS` - `HEXAI_TRIGGER_CHARACTERS` (comma-separated, e.g., `".,:,_ , "`) + - `HEXAI_INLINE_OPEN`, `HEXAI_INLINE_CLOSE` + - `HEXAI_CHAT_SUFFIX`, `HEXAI_CHAT_PREFIXES` (comma-separated) - `HEXAI_OPENAI_MODEL`, `HEXAI_OPENAI_BASE_URL`, `HEXAI_OPENAI_TEMPERATURE` - `HEXAI_COPILOT_MODEL`, `HEXAI_COPILOT_BASE_URL`, `HEXAI_COPILOT_TEMPERATURE` - `HEXAI_OLLAMA_MODEL`, `HEXAI_OLLAMA_BASE_URL`, `HEXAI_OLLAMA_TEMPERATURE` diff --git a/docs/coverage.html b/docs/coverage.html index df02a90..d940029 100644 --- a/docs/coverage.html +++ b/docs/coverage.html @@ -59,7 +59,7 @@ <option value="file1">codeberg.org/snonux/hexai/cmd/hexai/main.go (0.0%)</option> - <option value="file2">codeberg.org/snonux/hexai/internal/appconfig/config.go (94.6%)</option> + <option value="file2">codeberg.org/snonux/hexai/internal/appconfig/config.go (86.9%)</option> <option value="file3">codeberg.org/snonux/hexai/internal/hexaicli/run.go (91.4%)</option> @@ -83,21 +83,21 @@ <option value="file13">codeberg.org/snonux/hexai/internal/lsp/document.go (90.1%)</option> - <option value="file14">codeberg.org/snonux/hexai/internal/lsp/handlers.go (91.3%)</option> + <option value="file14">codeberg.org/snonux/hexai/internal/lsp/handlers.go (90.5%)</option> <option value="file15">codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go (81.2%)</option> - <option value="file16">codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go (85.1%)</option> + <option value="file16">codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go (86.1%)</option> - <option value="file17">codeberg.org/snonux/hexai/internal/lsp/handlers_document.go (88.9%)</option> + <option value="file17">codeberg.org/snonux/hexai/internal/lsp/handlers_document.go (87.4%)</option> <option value="file18">codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go (75.0%)</option> <option value="file19">codeberg.org/snonux/hexai/internal/lsp/handlers_init.go (55.6%)</option> - <option value="file20">codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go (88.1%)</option> + <option value="file20">codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go (88.2%)</option> - <option value="file21">codeberg.org/snonux/hexai/internal/lsp/server.go (68.8%)</option> + <option value="file21">codeberg.org/snonux/hexai/internal/lsp/server.go (77.9%)</option> <option value="file22">codeberg.org/snonux/hexai/internal/lsp/transport.go (71.4%)</option> @@ -216,6 +216,13 @@ type App struct { TriggerCharacters []string `json:"trigger_characters"` Provider string `json:"provider"` + // Inline prompt trigger characters (default: >text> and >>text>) + InlineOpen string `json:"inline_open"` + InlineClose string `json:"inline_close"` + // In-editor chat triggers (default: suffix ">" after one of [?, !, :, ;]) + ChatSuffix string `json:"chat_suffix"` + ChatPrefixes []string `json:"chat_prefixes"` + // Provider-specific options OpenAIBaseURL string `json:"openai_base_url"` OpenAIModel string `json:"openai_model"` @@ -249,12 +256,17 @@ func newDefaultConfig() App <span class="cov5" title="9">{ ManualInvokeMinPrefix: 0, CompletionDebounceMs: 200, CompletionThrottleMs: 0, + // Inline/chat trigger defaults + InlineOpen: ">", + InlineClose: ">", + ChatSuffix: ">", + ChatPrefixes: []string{"?", "!", ":", ";"}, } }</span> // Load reads configuration from a file and merges with defaults. // It respects the XDG Base Directory Specification. -func Load(logger *log.Logger) App <span class="cov5" title="8">{ +func Load(logger *log.Logger) App <span class="cov4" title="8">{ cfg := newDefaultConfig() if logger == nil </span><span class="cov3" title="3">{ return cfg // Return defaults if no logger is provided (e.g. in tests) @@ -331,12 +343,24 @@ func (a *App) mergeBasics(other *App) <span class="cov3" title="4">{ }</span> <span class="cov3" title="4">if other.CompletionDebounceMs > 0 </span><span class="cov3" title="3">{ a.CompletionDebounceMs = other.CompletionDebounceMs }</span> <span class="cov3" title="4">if other.CompletionThrottleMs > 0 </span><span class="cov3" title="3">{ a.CompletionThrottleMs = other.CompletionThrottleMs }</span> - <span class="cov3" title="4">if len(other.TriggerCharacters) > 0 </span><span class="cov3" title="3">{ - a.TriggerCharacters = slices.Clone(other.TriggerCharacters) - }</span> - <span class="cov3" title="4">if s := strings.TrimSpace(other.Provider); s != "" </span><span class="cov3" title="4">{ - a.Provider = s - }</span> + <span class="cov3" title="4">if len(other.TriggerCharacters) > 0 </span><span class="cov3" title="3">{ + a.TriggerCharacters = slices.Clone(other.TriggerCharacters) + }</span> + <span class="cov3" title="4">if s := strings.TrimSpace(other.InlineOpen); s != "" </span><span class="cov0" title="0">{ + a.InlineOpen = s + }</span> + <span class="cov3" title="4">if s := strings.TrimSpace(other.InlineClose); s != "" </span><span class="cov0" title="0">{ + a.InlineClose = s + }</span> + <span class="cov3" title="4">if s := strings.TrimSpace(other.ChatSuffix); s != "" </span><span class="cov0" title="0">{ + a.ChatSuffix = s + }</span> + <span class="cov3" title="4">if len(other.ChatPrefixes) > 0 </span><span class="cov0" title="0">{ + a.ChatPrefixes = slices.Clone(other.ChatPrefixes) + }</span> + <span class="cov3" title="4">if s := strings.TrimSpace(other.Provider); s != "" </span><span class="cov3" title="4">{ + a.Provider = s + }</span> } // mergeProviderFields merges per-provider configuration. @@ -393,7 +417,7 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="5">{ var any bool // helpers - getenv := func(k string) string </span><span class="cov10" title="100">{ return strings.TrimSpace(os.Getenv(k)) }</span> + getenv := func(k string) string </span><span class="cov10" title="120">{ return strings.TrimSpace(os.Getenv(k)) }</span> <span class="cov4" title="5">parseInt := func(k string) (int, bool) </span><span class="cov7" title="35">{ v := getenv(k) if v == "" </span><span class="cov7" title="28">{ return 0, false }</span> @@ -449,6 +473,19 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="5">{ } <span class="cov1" title="1">any = true</span> } + <span class="cov4" title="5">if s := getenv("HEXAI_INLINE_OPEN"); s != "" </span><span class="cov0" title="0">{ out.InlineOpen = s; any = true }</span> + <span class="cov4" title="5">if s := getenv("HEXAI_INLINE_CLOSE"); s != "" </span><span class="cov0" title="0">{ out.InlineClose = s; any = true }</span> + <span class="cov4" title="5">if s := getenv("HEXAI_CHAT_SUFFIX"); s != "" </span><span class="cov0" title="0">{ out.ChatSuffix = s; any = true }</span> + <span class="cov4" title="5">if s := getenv("HEXAI_CHAT_PREFIXES"); s != "" </span><span class="cov0" title="0">{ + parts := strings.Split(s, ",") + out.ChatPrefixes = nil + for _, p := range parts </span><span class="cov0" title="0">{ + if t := strings.TrimSpace(p); t != "" </span><span class="cov0" title="0">{ + out.ChatPrefixes = append(out.ChatPrefixes, t) + }</span> + } + <span class="cov0" title="0">any = true</span> + } <span class="cov4" title="5">if s := getenv("HEXAI_PROVIDER"); s != "" </span><span class="cov1" title="1">{ out.Provider = s; any = true }</span> @@ -737,6 +774,10 @@ func makeServerOptions(cfg appconfig.App, logContext bool, client llm.Client) ls ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, CompletionDebounceMs: cfg.CompletionDebounceMs, CompletionThrottleMs: cfg.CompletionThrottleMs, + InlineOpen: cfg.InlineOpen, + InlineClose: cfg.InlineClose, + ChatSuffix: cfg.ChatSuffix, + ChatPrefixes: cfg.ChatPrefixes, } }</span> </pre> @@ -2088,9 +2129,9 @@ func (s *Server) handle(req Request) <span class="cov2" title="2">{ // Preference order on each line: strict ;text; marker (no inner spaces), then // a line comment (//, #, --). Returns the instruction string and the selection // text cleaned of the matched instruction marker or comment. -func instructionFromSelection(sel string) (string, string) <span class="cov4" title="3">{ +func instructionFromSelection(sel string) (string, string) <span class="cov3" title="3">{ lines := splitLines(sel) - for idx, line := range lines </span><span class="cov4" title="3">{ + for idx, line := range lines </span><span class="cov3" title="3">{ if instr, cleaned, ok := findFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" </span><span class="cov1" title="1">{ lines[idx] = cleaned return instr, strings.Join(lines, "\n") @@ -2108,7 +2149,7 @@ func instructionFromSelection(sel string) (string, string) <span class="cov4" ti // - // text // - # text // - -- text -func findFirstInstructionInLine(line string) (instr string, cleaned string, ok bool) <span class="cov9" title="22">{ +func findFirstInstructionInLine(line string) (instr string, cleaned string, ok bool) <span class="cov8" title="22">{ type cand struct { start, end int text string @@ -2117,7 +2158,7 @@ func findFirstInstructionInLine(line string) (instr string, cleaned string, ok b if t, l, r, ok := findStrictSemicolonTag(line); ok </span><span class="cov5" title="6">{ cands = append(cands, cand{start: l, end: r, text: t}) }</span> - <span class="cov9" title="22">if i := strings.Index(line, "/*"); i >= 0 </span><span class="cov2" title="2">{ + <span class="cov8" title="22">if i := strings.Index(line, "/*"); i >= 0 </span><span class="cov2" title="2">{ if j := strings.Index(line[i+2:], "*/"); j >= 0 </span><span class="cov2" title="2">{ start := i end := i + 2 + j + 2 @@ -2125,7 +2166,7 @@ func findFirstInstructionInLine(line string) (instr string, cleaned string, ok b cands = append(cands, cand{start: start, end: end, text: text}) }</span> } - <span class="cov9" title="22">if i := strings.Index(line, "<!--"); i >= 0 </span><span class="cov2" title="2">{ + <span class="cov8" title="22">if i := strings.Index(line, "<!--"); i >= 0 </span><span class="cov2" title="2">{ if j := strings.Index(line[i+4:], "-->"); j >= 0 </span><span class="cov2" title="2">{ start := i end := i + 4 + j + 3 @@ -2133,16 +2174,16 @@ func findFirstInstructionInLine(line string) (instr string, cleaned string, ok b cands = append(cands, cand{start: start, end: end, text: text}) }</span> } - <span class="cov9" title="22">if i := strings.Index(line, "//"); i >= 0 </span><span class="cov4" title="4">{ + <span class="cov8" title="22">if i := strings.Index(line, "//"); i >= 0 </span><span class="cov4" title="4">{ cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) }</span> - <span class="cov9" title="22">if i := strings.Index(line, "#"); i >= 0 </span><span class="cov2" title="2">{ + <span class="cov8" title="22">if i := strings.Index(line, "#"); i >= 0 </span><span class="cov2" title="2">{ cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) }</span> - <span class="cov9" title="22">if i := strings.Index(line, "--"); i >= 0 </span><span class="cov4" title="4">{ + <span class="cov8" title="22">if i := strings.Index(line, "--"); i >= 0 </span><span class="cov4" title="4">{ cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) }</span> - <span class="cov9" title="22">if len(cands) == 0 </span><span class="cov5" title="6">{ + <span class="cov8" title="22">if len(cands) == 0 </span><span class="cov5" title="6">{ return "", line, false }</span> // pick earliest start index @@ -2251,33 +2292,33 @@ func (s *Server) reply(id json.RawMessage, result any, err *RespError) <span cla // --- small completion cache (last ~10 entries) --- -func (s *Server) completionCacheKey(p CompletionParams, above, current, below, funcCtx string, inParams bool, hasExtra bool, extraText string) string <span class="cov7" title="11">{ +func (s *Server) completionCacheKey(p CompletionParams, above, current, below, funcCtx string, inParams bool, hasExtra bool, extraText string) string <span class="cov7" title="12">{ // Normalize left-of-cursor by trimming trailing spaces/tabs idx := p.Position.Character if idx > len(current) </span><span class="cov0" title="0">{ idx = len(current) }</span> - <span class="cov7" title="11">left := strings.TrimRight(current[:idx], " \t") + <span class="cov7" title="12">left := strings.TrimRight(current[:idx], " \t") right := "" if idx < len(current) </span><span class="cov0" title="0">{ right = current[idx:] }</span> - <span class="cov7" title="11">prov := "" + <span class="cov7" title="12">prov := "" model := "" - if s.llmClient != nil </span><span class="cov7" title="11">{ + if s.llmClient != nil </span><span class="cov7" title="12">{ prov = s.llmClient.Name() model = s.llmClient.DefaultModel() }</span> - <span class="cov7" title="11">temp := "" + <span class="cov7" title="12">temp := "" if s.codingTemperature != nil </span><span class="cov0" title="0">{ temp = fmt.Sprintf("%.3f", *s.codingTemperature) }</span> - <span class="cov7" title="11">extra := "" + <span class="cov7" title="12">extra := "" if hasExtra </span><span class="cov0" title="0">{ extra = strings.TrimSpace(extraText) }</span> // Compose a key from essential context parts - <span class="cov7" title="11">return strings.Join([]string{ + <span class="cov7" title="12">return strings.Join([]string{ "v1", // version for future-proofing prov, model, @@ -2294,11 +2335,11 @@ func (s *Server) completionCacheKey(p CompletionParams, above, current, below, f }, "\x1f")</span> // use unit separator to avoid collisions } -func (s *Server) completionCacheGet(key string) (string, bool) <span class="cov7" title="9">{ +func (s *Server) completionCacheGet(key string) (string, bool) <span class="cov6" title="10">{ s.mu.Lock() defer s.mu.Unlock() v, ok := s.compCache[key] - if !ok </span><span class="cov6" title="8">{ + if !ok </span><span class="cov6" title="9">{ return "", false }</span> // move to most-recent @@ -2306,13 +2347,13 @@ func (s *Server) completionCacheGet(key string) (string, bool) <span class="cov7 return v, true</span> } -func (s *Server) completionCachePut(key, value string) <span class="cov7" title="9">{ +func (s *Server) completionCachePut(key, value string) <span class="cov6" title="9">{ s.mu.Lock() defer s.mu.Unlock() if s.compCache == nil </span><span class="cov1" title="1">{ s.compCache = make(map[string]string) }</span> - <span class="cov7" title="9">if _, exists := s.compCache[key]; !exists </span><span class="cov7" title="9">{ + <span class="cov6" title="9">if _, exists := s.compCache[key]; !exists </span><span class="cov6" title="9">{ s.compCacheOrder = append(s.compCacheOrder, key) s.compCache[key] = value if len(s.compCacheOrder) > 10 </span><span class="cov0" title="0">{ @@ -2321,7 +2362,7 @@ func (s *Server) completionCachePut(key, value string) <span class="cov7" title= s.compCacheOrder = s.compCacheOrder[1:] delete(s.compCache, old) }</span> - <span class="cov7" title="9">return</span> + <span class="cov6" title="9">return</span> } // update existing and mark most-recent <span class="cov0" title="0">s.compCache[key] = value @@ -2348,25 +2389,26 @@ func (s *Server) compCacheTouchLocked(key string) <span class="cov1" title="1">{ // by typing one of our configured trigger characters. It checks the LSP // CompletionContext if provided and also falls back to inspecting the character // immediately to the left of the cursor. -func (s *Server) isTriggerEvent(p CompletionParams, current string) bool <span class="cov9" title="21">{ +func (s *Server) isTriggerEvent(p CompletionParams, current string) bool <span class="cov8" title="21">{ // 1) Inspect LSP completion context if present if p.Context != nil </span><span class="cov6" title="8">{ var ctx struct { TriggerKind int `json:"triggerKind"` TriggerCharacter string `json:"triggerCharacter,omitempty"` } - if raw, ok := p.Context.(json.RawMessage); ok </span><span class="cov6" title="7">{ + if raw, ok := p.Context.(json.RawMessage); ok </span><span class="cov5" title="7">{ _ = json.Unmarshal(raw, &ctx) }</span> else<span class="cov1" title="1"> { b, _ := json.Marshal(p.Context) _ = json.Unmarshal(b, &ctx) }</span> - // If the line contains a bare ';;' (no ';;text;'), do not treat as a trigger source. - <span class="cov6" title="8">if strings.Contains(current, ";;") && !hasDoubleSemicolonTrigger(current) </span><span class="cov1" title="1">{ + // If configured and the line contains a bare double-open marker (e.g., '>>' with no '>>text>'), + // do not treat as a trigger source. + <span class="cov6" title="8">if s.inlineOpen != "" && strings.Contains(current, s.inlineOpen+s.inlineOpen) && !hasDoubleSemicolonTrigger(current) </span><span class="cov0" title="0">{ return false }</span> // TriggerKind 1 = Invoked (manual). Always allow manual invoke. - <span class="cov6" title="7">if ctx.TriggerKind == 1 </span><span class="cov5" title="5">{ + <span class="cov6" title="8">if ctx.TriggerKind == 1 </span><span class="cov5" title="6">{ return true }</span> // TriggerKind 2 is TriggerCharacter per LSP spec @@ -2385,32 +2427,32 @@ func (s *Server) isTriggerEvent(p CompletionParams, current string) bool <span c // For TriggerForIncomplete (3), require manual char check below } // 2) Fallback: check the character immediately prior to cursor - <span class="cov8" title="13">idx := p.Position.Character + <span class="cov7" title="13">idx := p.Position.Character if idx <= 0 || idx > len(current) </span><span class="cov0" title="0">{ return false }</span> - // Bare ';;' should not trigger via fallback char either - <span class="cov8" title="13">if strings.Contains(current, ";;") && !hasDoubleSemicolonTrigger(current) </span><span class="cov4" title="3">{ - return false - }</span> - <span class="cov7" title="10">ch := string(current[idx-1]) - for _, c := range s.triggerChars </span><span class="cov10" title="26">{ + // Bare double-open should not trigger via fallback char either (only when configured) + <span class="cov7" title="13">if s.inlineOpen != "" && strings.Contains(current, s.inlineOpen+s.inlineOpen) && !hasDoubleSemicolonTrigger(current) </span><span class="cov1" title="1">{ + return false + }</span> + <span class="cov7" title="12">ch := string(current[idx-1]) + for _, c := range s.triggerChars </span><span class="cov10" title="34">{ if c == ch </span><span class="cov5" title="5">{ return true }</span> } - <span class="cov5" title="5">return false</span> + <span class="cov5" title="7">return false</span> } -func (s *Server) makeCompletionItems(cleaned string, inParams bool, current string, p CompletionParams, docStr string) []CompletionItem <span class="cov7" title="10">{ +func (s *Server) makeCompletionItems(cleaned string, inParams bool, current string, p CompletionParams, docStr string) []CompletionItem <span class="cov6" title="10">{ te, filter := computeTextEditAndFilter(cleaned, inParams, current, p) rm := s.collectPromptRemovalEdits(p.TextDocument.URI) label := labelForCompletion(cleaned, filter) detail := "Hexai LLM completion" - if s.llmClient != nil </span><span class="cov7" title="10">{ + if s.llmClient != nil </span><span class="cov6" title="10">{ detail = "Hexai " + s.llmClient.Name() + ":" + s.llmClient.DefaultModel() }</span> - <span class="cov7" title="10">return []CompletionItem{{ + <span class="cov6" title="10">return []CompletionItem{{ Label: label, Kind: 1, Detail: detail, @@ -3082,15 +3124,15 @@ func (s *Server) tryLLMCompletion(p CompletionParams, above, current, below, fun defer cancel() inlinePrompt := lineHasInlinePrompt(current) - if !inlinePrompt && !s.isTriggerEvent(p, current) </span><span class="cov7" title="9">{ + if !inlinePrompt && !s.isTriggerEvent(p, current) </span><span class="cov7" title="8">{ logging.Logf("lsp ", "%scompletion skip=no-trigger line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) return []CompletionItem{}, true }</span> - <span class="cov7" title="9">if s.shouldSuppressForChatTriggerEOL(current, p) </span><span class="cov0" title="0">{ + <span class="cov8" title="10">if s.shouldSuppressForChatTriggerEOL(current, p) </span><span class="cov0" title="0">{ return []CompletionItem{}, true }</span> - <span class="cov7" title="9">inParams := inParamList(current, p.Position.Character) + <span class="cov8" title="10">inParams := inParamList(current, p.Position.Character) manualInvoke := parseManualInvoke(p.Context) // Cache fast-path @@ -3101,10 +3143,10 @@ func (s *Server) tryLLMCompletion(p CompletionParams, above, current, below, fun logging.AnsiGreen, logging.PreviewForLog(cleaned), logging.AnsiBase) return s.makeCompletionItems(cleaned, inParams, current, p, docStr), true }</span> - <span class="cov7" title="8">if (isBareDoubleSemicolon(current) || isBareDoubleSemicolon(below)) && !manualInvoke </span><span class="cov0" title="0">{ - logging.Logf("lsp ", "%scompletion skip=empty-double-semicolon line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) - return []CompletionItem{}, true - }</span> + <span class="cov7" title="9">if (isBareDoubleSemicolon(current) || isBareDoubleSemicolon(below)) </span><span class="cov1" title="1">{ + logging.Logf("lsp ", "%scompletion skip=empty-double-semicolon line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) + return []CompletionItem{}, true + }</span> <span class="cov7" title="8">if !inParams && !s.prefixHeuristicAllows(inlinePrompt, current, p, manualInvoke) </span><span class="cov0" title="0">{ logging.Logf("lsp ", "%scompletion skip=short-prefix line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) @@ -3153,32 +3195,37 @@ func (s *Server) tryLLMCompletion(p CompletionParams, above, current, below, fun } // parseManualInvoke inspects the LSP completion context and reports whether the user manually invoked completion. -func parseManualInvoke(ctx any) bool <span class="cov8" title="10">{ +func parseManualInvoke(ctx any) bool <span class="cov8" title="11">{ if ctx == nil </span><span class="cov6" title="5">{ return false }</span> - <span class="cov6" title="5">var c struct { + <span class="cov6" title="6">var c struct { TriggerKind int `json:"triggerKind"` } - if raw, ok := ctx.(json.RawMessage); ok </span><span class="cov6" title="5">{ + if raw, ok := ctx.(json.RawMessage); ok </span><span class="cov6" title="6">{ _ = json.Unmarshal(raw, &c) }</span> else<span class="cov0" title="0"> { b, _ := json.Marshal(ctx) _ = json.Unmarshal(b, &c) }</span> - <span class="cov6" title="5">return c.TriggerKind == 1</span> + <span class="cov6" title="6">return c.TriggerKind == 1</span> } // shouldSuppressForChatTriggerEOL returns true when a chat trigger like ">" follows ?, !, :, or ; at EOL. -func (s *Server) shouldSuppressForChatTriggerEOL(current string, p CompletionParams) bool <span class="cov8" title="11">{ - if t := strings.TrimRight(current, " \t"); len(t) >= 2 && t[len(t)-1] == '>' </span><span class="cov3" title="2">{ - prev := t[len(t)-2] - if prev == '?' || prev == '!' || prev == ':' || prev == ';' </span><span class="cov1" title="1">{ - logging.Logf("lsp ", "completion skip=chat-trigger-eol uri=%s line=%d", p.TextDocument.URI, p.Position.Line) - return true - }</span> +func (s *Server) shouldSuppressForChatTriggerEOL(current string, p CompletionParams) bool <span class="cov8" title="12">{ + t := strings.TrimRight(current, " \t") + if s.chatSuffix == "" </span><span class="cov6" title="5">{ return false }</span> + <span class="cov7" title="7">if strings.HasSuffix(t, s.chatSuffix) </span><span class="cov3" title="2">{ + if len(t) < len(s.chatSuffix)+1 </span><span class="cov0" title="0">{ return false }</span> + <span class="cov3" title="2">prev := string(t[len(t)-len(s.chatSuffix)-1]) + for _, pf := range s.chatPrefixes </span><span class="cov7" title="8">{ + if prev == pf </span><span class="cov1" title="1">{ + logging.Logf("lsp ", "completion skip=chat-trigger-eol uri=%s line=%d", p.TextDocument.URI, p.Position.Line) + return true + }</span> } - <span class="cov8" title="10">return false</span> + } + <span class="cov6" title="6">return false</span> } // prefixHeuristicAllows applies minimal prefix rules unless inlinePrompt or structural triggers apply. @@ -3383,6 +3430,11 @@ import ( "time" ) +// Package-level chat trigger vars for helpers without Server receiver. +// NewServer assigns these from configuration on startup. +var chatSuffixChar byte = '>' +var chatPrefixSingles = []string{"?", "!", ":", ";"} + func (s *Server) handleDidOpen(req Request) <span class="cov1" title="1">{ var p DidOpenTextDocumentParams if err := json.Unmarshal(req.Params, &p); err == nil </span><span class="cov1" title="1">{ @@ -3414,9 +3466,9 @@ func (s *Server) handleDidClose(req Request) <span class="cov1" title="1">{ // docBeforeAfter returns the full document text split at the given position. // The returned strings are the text before the cursor (inclusive of anything // left of the position) and the text after the cursor. -func (s *Server) docBeforeAfter(uri string, pos Position) (string, string) <span class="cov7" title="4">{ +func (s *Server) docBeforeAfter(uri string, pos Position) (string, string) <span class="cov6" title="4">{ d := s.getDocument(uri) - if d == nil </span><span class="cov6" title="3">{ + if d == nil </span><span class="cov5" title="3">{ return "", "" }</span> // Clamp indices @@ -3457,44 +3509,55 @@ func (s *Server) docBeforeAfter(uri string, pos Position) (string, string) <span // detectAndHandleChat scans the current document for any line that starts with // a new trigger pair (e.g., "?>" ",>" ":>" ";>") at EOL and inserts the LLM // reply below. -func (s *Server) detectAndHandleChat(uri string) <span class="cov6" title="3">{ +func (s *Server) detectAndHandleChat(uri string) <span class="cov5" title="3">{ if s.llmClient == nil </span><span class="cov1" title="1">{ return }</span> - <span class="cov4" title="2">d := s.getDocument(uri) + <span class="cov3" title="2">d := s.getDocument(uri) if d == nil || len(d.lines) == 0 </span><span class="cov0" title="0">{ return }</span> - <span class="cov4" title="2">for i, raw := range d.lines </span><span class="cov7" title="4">{ + <span class="cov3" title="2">for i, raw := range d.lines </span><span class="cov6" title="4">{ // Find last non-space character index j := len(raw) - 1 - for j >= 0 </span><span class="cov6" title="3">{ + for j >= 0 </span><span class="cov5" title="3">{ if raw[j] == ' ' || raw[j] == '\t' </span><span class="cov0" title="0">{ j-- continue</span> } - <span class="cov6" title="3">break</span> - } - <span class="cov7" title="4">if j < 1 </span><span class="cov1" title="1">{ - continue</span> - } // need at least two chars - <span class="cov6" title="3">pair := raw[j-1 : j+1] - isTrigger := pair == "?>" || pair == "!>" || pair == ":>" || pair == ";>" - if !isTrigger </span><span class="cov1" title="1">{ - continue</span> + <span class="cov5" title="3">break</span> } + <span class="cov6" title="4">if j < 0 </span><span class="cov1" title="1">{ + continue</span> + } + // Check suffix/prefix according to configuration + <span class="cov5" title="3">if s.chatSuffix == "" </span><span class="cov3" title="2">{ + continue</span> + } + // Last non-space must equal suffix + <span class="cov1" title="1">if string(raw[j]) != s.chatSuffix </span><span class="cov0" title="0">{ + continue</span> + } + // Require at least one char before suffix and that char must be in chatPrefixes + <span class="cov1" title="1">if j < 1 </span><span class="cov0" title="0">{ continue</span> } + <span class="cov1" title="1">prev := string(raw[j-1]) + isTrigger := false + for _, pfx := range s.chatPrefixes </span><span class="cov1" title="1">{ + if prev == pfx </span><span class="cov1" title="1">{ isTrigger = true; break</span> } + } + <span class="cov1" title="1">if !isTrigger </span><span class="cov0" title="0">{ continue</span> } // Avoid double-answering: if the next non-empty line starts with '>' we skip. - <span class="cov4" title="2">k := i + 1 - for k < len(d.lines) && strings.TrimSpace(d.lines[k]) == "" </span><span class="cov4" title="2">{ + <span class="cov1" title="1">k := i + 1 + for k < len(d.lines) && strings.TrimSpace(d.lines[k]) == "" </span><span class="cov3" title="2">{ k++ }</span> - <span class="cov4" title="2">if k < len(d.lines) && strings.HasPrefix(strings.TrimSpace(d.lines[k]), ">") </span><span class="cov1" title="1">{ + <span class="cov1" title="1">if k < len(d.lines) && strings.HasPrefix(strings.TrimSpace(d.lines[k]), ">") </span><span class="cov0" title="0">{ continue</span> } // Derive prompt by removing only the trailing '>' - <span class="cov1" title="1">removeCount := 1 + <span class="cov1" title="1">removeCount := len(s.chatSuffix) base := raw[:j+1-removeCount] - prompt := strings.TrimSpace(base) + prompt := strings.TrimSpace(base) if prompt == "" </span><span class="cov0" title="0">{ continue</span> } @@ -3549,80 +3612,85 @@ func (s *Server) applyChatEdits(uri string, lineIdx int, lastNonSpace int, remov // buildChatHistory walks upwards from the current line to collect the most recent // Q/A pairs in the in-editor transcript. Returns messages ending with current prompt. -func (s *Server) buildChatHistory(uri string, lineIdx int, currentPrompt string) []llm.Message <span class="cov4" title="2">{ +func (s *Server) buildChatHistory(uri string, lineIdx int, currentPrompt string) []llm.Message <span class="cov3" title="2">{ d := s.getDocument(uri) if d == nil </span><span class="cov0" title="0">{ return []llm.Message{{Role: "user", Content: currentPrompt}} }</span> - <span class="cov4" title="2">type pair struct{ q, a string } + <span class="cov3" title="2">type pair struct{ q, a string } pairs := []pair{} i := lineIdx - 1 - for i >= 0 && len(pairs) < 3 </span><span class="cov4" title="2">{ + for i >= 0 && len(pairs) < 3 </span><span class="cov3" title="2">{ for i >= 0 && strings.TrimSpace(d.lines[i]) == "" </span><span class="cov1" title="1">{ i-- }</span> - <span class="cov4" title="2">if i < 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="2">if i < 0 </span><span class="cov0" title="0">{ break</span> } - <span class="cov4" title="2">if !strings.HasPrefix(strings.TrimSpace(d.lines[i]), ">") </span><span class="cov0" title="0">{ + <span class="cov3" title="2">if !strings.HasPrefix(strings.TrimSpace(d.lines[i]), ">") </span><span class="cov0" title="0">{ break</span> } - <span class="cov4" title="2">var replyLines []string - for i >= 0 </span><span class="cov7" title="4">{ + <span class="cov3" title="2">var replyLines []string + for i >= 0 </span><span class="cov6" title="4">{ line := strings.TrimSpace(d.lines[i]) - if strings.HasPrefix(line, ">") </span><span class="cov4" title="2">{ + if strings.HasPrefix(line, ">") </span><span class="cov3" title="2">{ replyLines = append([]string{strings.TrimSpace(strings.TrimPrefix(line, ">"))}, replyLines...) i-- continue</span> } - <span class="cov4" title="2">break</span> + <span class="cov3" title="2">break</span> } - <span class="cov4" title="2">for i >= 0 && strings.TrimSpace(d.lines[i]) == "" </span><span class="cov0" title="0">{ + <span class="cov3" title="2">for i >= 0 && strings.TrimSpace(d.lines[i]) == "" </span><span class="cov0" title="0">{ i-- }</span> - <span class="cov4" title="2">if i < 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="2">if i < 0 </span><span class="cov0" title="0">{ break</span> } - <span class="cov4" title="2">q := strings.TrimSpace(d.lines[i]) + <span class="cov3" title="2">q := strings.TrimSpace(d.lines[i]) q = stripTrailingTrigger(q) pairs = append([]pair{{q: q, a: strings.Join(replyLines, "\n")}}, pairs...) i--</span> } - <span class="cov4" title="2">msgs := make([]llm.Message, 0, len(pairs)*2+1) - for _, p := range pairs </span><span class="cov4" title="2">{ - if strings.TrimSpace(p.q) != "" </span><span class="cov4" title="2">{ + <span class="cov3" title="2">msgs := make([]llm.Message, 0, len(pairs)*2+1) + for _, p := range pairs </span><span class="cov3" title="2">{ + if strings.TrimSpace(p.q) != "" </span><span class="cov3" title="2">{ msgs = append(msgs, llm.Message{Role: "user", Content: p.q}) }</span> - <span class="cov4" title="2">if strings.TrimSpace(p.a) != "" </span><span class="cov4" title="2">{ + <span class="cov3" title="2">if strings.TrimSpace(p.a) != "" </span><span class="cov3" title="2">{ msgs = append(msgs, llm.Message{Role: "assistant", Content: p.a}) }</span> } - <span class="cov4" title="2">msgs = append(msgs, llm.Message{Role: "user", Content: currentPrompt}) + <span class="cov3" title="2">msgs = append(msgs, llm.Message{Role: "user", Content: currentPrompt}) return msgs</span> } // stripTrailingTrigger removes the trailing chat trigger punctuation from a line if present. -func stripTrailingTrigger(sx string) string <span class="cov10" title="7">{ - s := strings.TrimRight(sx, " \t") - if len(s) >= 2 && s[len(s)-1] == '>' </span><span class="cov7" title="4">{ // new triggers - prev := s[len(s)-2] - if prev == '?' || prev == '!' || prev == ':' || prev == ';' </span><span class="cov7" title="4">{ - return strings.TrimRight(s[:len(s)-1], " \t") - }</span> - } - <span class="cov6" title="3">if strings.HasSuffix(s, ";;") </span><span class="cov0" title="0">{ // legacy inline cleanup used in history building - return strings.TrimRight(strings.TrimSuffix(s, ";;"), " \t") - }</span> - <span class="cov6" title="3">if len(s) == 0 </span><span class="cov0" title="0">{ - return sx - }</span> - <span class="cov6" title="3">last := s[len(s)-1] - switch last </span>{ // legacy: remove one trailing punctuation - case '?', '!', ':':<span class="cov1" title="1"> - return strings.TrimRight(s[:len(s)-1], " \t")</span> - default:<span class="cov4" title="2"> - return sx</span> +func stripTrailingTrigger(sx string) string <span class="cov8" title="7">{ + s := strings.TrimRight(sx, " \t") + if len(s) == 0 </span><span class="cov0" title="0">{ + return sx + }</span> + // Configurable suffix removal when preceded by configured prefixes + <span class="cov8" title="7">if len(s) >= 2 && s[len(s)-1] == chatSuffixChar </span><span class="cov6" title="4">{ + prev := string(s[len(s)-2]) + for _, pf := range chatPrefixSingles </span><span class="cov10" title="10">{ + if prev == pf </span><span class="cov6" title="4">{ + return strings.TrimRight(s[:len(s)-1], " \t") + }</span> } + } + // Legacy: inline cleanup for old semicolon form ";;" + <span class="cov5" title="3">if strings.HasSuffix(s, ";;") </span><span class="cov0" title="0">{ + return strings.TrimRight(strings.TrimSuffix(s, ";;"), " \t") + }</span> + // Legacy: remove one trailing punctuation (?, !, :) to build history nicely + <span class="cov5" title="3">last := s[len(s)-1] + switch last </span>{ + case '?', '!', ':':<span class="cov1" title="1"> + return strings.TrimRight(s[:len(s)-1], " \t")</span> + default:<span class="cov3" title="2"> + return sx</span> + } } // clientApplyEdit sends a workspace/applyEdit request to the client. @@ -3636,7 +3704,7 @@ func (s *Server) clientApplyEdit(label string, edit WorkspaceEdit) <span class=" }</span> // nextReqID returns a unique json.RawMessage id for server-initiated requests. -func (s *Server) nextReqID() json.RawMessage <span class="cov7" title="4">{ +func (s *Server) nextReqID() json.RawMessage <span class="cov6" title="4">{ s.mu.Lock() s.nextID++ idNum := s.nextID @@ -3646,7 +3714,7 @@ func (s *Server) nextReqID() json.RawMessage <span class="cov7" title="4">{ }</span> // clientShowDocument asks the client to open/focus a document and select a range. -func (s *Server) clientShowDocument(uri string, sel *Range) <span class="cov6" title="3">{ +func (s *Server) clientShowDocument(uri string, sel *Range) <span class="cov5" title="3">{ var params struct { URI string `json:"uri"` External bool `json:"external,omitempty"` @@ -3763,6 +3831,11 @@ import ( "time" ) +// Configurable inline trigger characters (default to '>') used by free helpers below. +// NewServer assigns these based on ServerOptions. +var inlineOpenChar byte = '>' +var inlineCloseChar byte = '>' + // llmRequestOpts builds request options from server settings. func (s *Server) llmRequestOpts() []llm.RequestOption <span class="cov5" title="11">{ opts := []llm.RequestOption{llm.WithMaxTokens(s.maxTokens)} @@ -3810,8 +3883,8 @@ func (s *Server) logLLMStats() <span class="cov4" title="7">{ } // Completion prompt builders and filters -func inParamList(current string, cursor int) bool <span class="cov5" title="10">{ - if !strings.Contains(current, "func ") </span><span class="cov4" title="5">{ +func inParamList(current string, cursor int) bool <span class="cov5" title="11">{ + if !strings.Contains(current, "func ") </span><span class="cov4" title="6">{ return false }</span> <span class="cov4" title="5">open := strings.Index(current, "(") @@ -3878,10 +3951,10 @@ func isIdentChar(ch byte) bool <span class="cov7" title="24">{ // Inline prompt utilities func lineHasInlinePrompt(line string) bool <span class="cov6" title="18">{ - if _, _, _, ok := findStrictSemicolonTag(line); ok </span><span class="cov1" title="1">{ - return true - }</span> - <span class="cov6" title="17">return hasDoubleSemicolonTrigger(line)</span> + if _, _, _, ok := findStrictSemicolonTag(line); ok </span><span class="cov1" title="1">{ + return true + }</span> + <span class="cov6" title="17">return hasDoubleSemicolonTrigger(line)</span> } func leadingIndent(line string) string <span class="cov2" title="2">{ @@ -3918,61 +3991,64 @@ func applyIndent(indent, suggestion string) string <span class="cov2" title="2"> // --- Inline marker parsing and general string utilities --- -// findStrictSemicolonTag finds ;text; with no space after first ';' and no space -// before the last ';' on the given line. Returns the text between semicolons, -// the start index of the opening ';', the end index just after the closing ';', -// and whether it was found. +// findStrictSemicolonTag now finds >text> (configurable), with no space after the first +// opening marker and no space immediately before the closing marker. Returns the +// text between markers, the start index, the end index just after closing, and ok. func findStrictSemicolonTag(line string) (string, int, int, bool) <span class="cov8" title="46">{ - pos := 0 - for pos < len(line) </span><span class="cov9" title="58">{ - j := strings.Index(line[pos:], ";") - if j < 0 </span><span class="cov7" title="30">{ - return "", 0, 0, false - }</span> - <span class="cov7" title="28">j += pos - // ensure single ';' (not ';;') and non-space after - if j+1 >= len(line) || line[j+1] == ';' || line[j+1] == ' ' </span><span class="cov6" title="14">{ - pos = j + 1 - continue</span> - } - <span class="cov6" title="14">k := strings.Index(line[j+1:], ";") - if k < 0 </span><span class="cov2" title="2">{ - return "", 0, 0, false - }</span> - <span class="cov5" title="12">closeIdx := j + 1 + k - if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ - pos = closeIdx + 1 - continue</span> - } - <span class="cov5" title="11">inner := strings.TrimSpace(line[j+1 : closeIdx]) - if inner == "" </span><span class="cov0" title="0">{ - pos = closeIdx + 1 - continue</span> - } - <span class="cov5" title="11">end := closeIdx + 1 - return inner, j, end, true</span> + pos := 0 + for pos < len(line) </span><span class="cov9" title="58">{ + // find opening marker + j := strings.IndexByte(line[pos:], inlineOpenChar) + if j < 0 </span><span class="cov7" title="27">{ + return "", 0, 0, false + }</span> + <span class="cov7" title="31">j += pos + // ensure single open (not double) and non-space after + if j+1 >= len(line) || line[j+1] == inlineOpenChar || line[j+1] == ' ' </span><span class="cov6" title="18">{ + pos = j + 1 + continue</span> + } + // find closing marker + <span class="cov6" title="13">k := strings.IndexByte(line[j+1:], inlineCloseChar) + if k < 0 </span><span class="cov1" title="1">{ + return "", 0, 0, false + }</span> + <span class="cov5" title="12">closeIdx := j + 1 + k + if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ + pos = closeIdx + 1 + continue</span> + } + <span class="cov5" title="11">inner := strings.TrimSpace(line[j+1 : closeIdx]) + if inner == "" </span><span class="cov0" title="0">{ + pos = closeIdx + 1 + continue</span> } - <span class="cov3" title="3">return "", 0, 0, false</span> + <span class="cov5" title="11">end := closeIdx + 1 + return inner, j, end, true</span> + } + <span class="cov4" title="7">return "", 0, 0, false</span> } // isBareDoubleSemicolon reports whether the line contains a standalone // double-semicolon marker with no inline content (";;" possibly with only // whitespace after it). It explicitly excludes the valid form ";;text;". -func isBareDoubleSemicolon(line string) bool <span class="cov6" title="18">{ - t := strings.TrimSpace(line) - if !strings.Contains(t, ";;") </span><span class="cov6" title="16">{ - return false - }</span> - <span class="cov2" title="2">if hasDoubleSemicolonTrigger(t) </span><span class="cov1" title="1">{ - return false +func isBareDoubleSemicolon(line string) bool <span class="cov6" title="19">{ + t := strings.TrimSpace(line) + // check for double-open pattern + dbl := string([]byte{inlineOpenChar, inlineOpenChar}) + if !strings.Contains(t, dbl) </span><span class="cov6" title="16">{ + return false + }</span> + <span class="cov3" title="3">if hasDoubleSemicolonTrigger(t) </span><span class="cov1" title="1">{ + return false + }</span> + <span class="cov2" title="2">if strings.HasPrefix(t, dbl) </span><span class="cov2" title="2">{ + rest := strings.TrimSpace(t[len(dbl):]) + if rest == "" || rest == ";" </span><span class="cov2" title="2">{ + return true }</span> - <span class="cov1" title="1">if strings.HasPrefix(t, ";;") </span><span class="cov1" title="1">{ - rest := strings.TrimSpace(t[2:]) - if rest == "" || rest == ";" </span><span class="cov1" title="1">{ - return true - }</span> - } - <span class="cov0" title="0">return false</span> + } + <span class="cov0" title="0">return false</span> } // stripDuplicateAssignmentPrefix removes a duplicated assignment prefix from the suggestion. @@ -4155,81 +4231,84 @@ func (s *Server) collectPromptRemovalEdits(uri string) []TextEdit <span class="c } func promptRemovalEditsForLine(line string, lineNum int) []TextEdit <span class="cov4" title="7">{ - if hasDoubleSemicolonTrigger(line) </span><span class="cov3" title="3">{ - return []TextEdit{{Range: Range{Start: Position{Line: lineNum, Character: 0}, End: Position{Line: lineNum, Character: len(line)}}, NewText: ""}} - }</span> - <span class="cov3" title="4">return collectSemicolonMarkers(line, lineNum)</span> + if hasDoubleSemicolonTrigger(line) </span><span class="cov3" title="3">{ + return []TextEdit{{Range: Range{Start: Position{Line: lineNum, Character: 0}, End: Position{Line: lineNum, Character: len(line)}}, NewText: ""}} + }</span> + <span class="cov3" title="4">return collectSemicolonMarkers(line, lineNum)</span> } -func hasDoubleSemicolonTrigger(line string) bool <span class="cov8" title="51">{ - pos := 0 - for pos < len(line) </span><span class="cov8" title="55">{ - j := strings.Index(line[pos:], ";;") - if j < 0 </span><span class="cov7" title="34">{ - return false - }</span> - <span class="cov7" title="21">j += pos - contentStart := j + 2 - if contentStart >= len(line) </span><span class="cov4" title="7">{ - return false - }</span> - <span class="cov6" title="14">first := line[contentStart] - if first == ' ' || first == ';' </span><span class="cov4" title="5">{ - pos = contentStart + 1 - continue</span> - } - <span class="cov5" title="9">k := strings.Index(line[contentStart+1:], ";") - if k < 0 </span><span class="cov0" title="0">{ - return false - }</span> - <span class="cov5" title="9">closeIdx := contentStart + 1 + k - if closeIdx-1 >= 0 && line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ - pos = closeIdx + 1 - continue</span> - } - <span class="cov5" title="8">return true</span> +func hasDoubleSemicolonTrigger(line string) bool <span class="cov8" title="49">{ + pos := 0 + for pos < len(line) </span><span class="cov8" title="50">{ + // look for double-open sequence + dbl := string([]byte{inlineOpenChar, inlineOpenChar}) + j := strings.Index(line[pos:], dbl) + if j < 0 </span><span class="cov7" title="32">{ + return false + }</span> + <span class="cov6" title="18">j += pos + contentStart := j + len(dbl) + if contentStart >= len(line) </span><span class="cov4" title="6">{ + return false + }</span> + <span class="cov5" title="12">first := line[contentStart] + if first == ' ' || first == inlineOpenChar </span><span class="cov3" title="3">{ + pos = contentStart + 1 + continue</span> } - <span class="cov2" title="2">return false</span> + // find closing + <span class="cov5" title="9">k := strings.IndexByte(line[contentStart+1:], inlineCloseChar) + if k < 0 </span><span class="cov0" title="0">{ + return false + }</span> + <span class="cov5" title="9">closeIdx := contentStart + 1 + k + if closeIdx-1 >= 0 && line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ + pos = closeIdx + 1 + continue</span> + } + <span class="cov5" title="8">return true</span> + } + <span class="cov3" title="3">return false</span> } func collectSemicolonMarkers(line string, lineNum int) []TextEdit <span class="cov4" title="5">{ - var edits []TextEdit - startSemi := 0 - for startSemi < len(line) </span><span class="cov5" title="9">{ - j := strings.Index(line[startSemi:], ";") - if j < 0 </span><span class="cov3" title="4">{ - break</span> - } - <span class="cov4" title="5">j += startSemi - k := strings.Index(line[j+1:], ";") - if k < 0 </span><span class="cov0" title="0">{ - break</span> - } - <span class="cov4" title="5">if j+1 >= len(line) || line[j+1] == ' ' </span><span class="cov0" title="0">{ - startSemi = j + 1 - continue</span> - } - <span class="cov4" title="5">if line[j+1] == ';' </span><span class="cov0" title="0">{ - startSemi = j + 2 - continue</span> - } - <span class="cov4" title="5">closeIdx := j + 1 + k - if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov0" title="0">{ - startSemi = closeIdx + 1 - continue</span> - } - <span class="cov4" title="5">if closeIdx-(j+1) < 1 </span><span class="cov0" title="0">{ - startSemi = closeIdx + 1 - continue</span> - } - <span class="cov4" title="5">endChar := closeIdx + 1 - if endChar < len(line) && line[endChar] == ' ' </span><span class="cov3" title="4">{ - endChar++ - }</span> - <span class="cov4" title="5">edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) - startSemi = endChar</span> + var edits []TextEdit + startSemi := 0 + for startSemi < len(line) </span><span class="cov5" title="9">{ + j := strings.IndexByte(line[startSemi:], inlineOpenChar) + if j < 0 </span><span class="cov3" title="4">{ + break</span> + } + <span class="cov4" title="5">j += startSemi + k := strings.IndexByte(line[j+1:], inlineCloseChar) + if k < 0 </span><span class="cov0" title="0">{ + break</span> + } + <span class="cov4" title="5">if j+1 >= len(line) || line[j+1] == ' ' </span><span class="cov0" title="0">{ + startSemi = j + 1 + continue</span> } - <span class="cov4" title="5">return edits</span> + <span class="cov4" title="5">if line[j+1] == inlineOpenChar </span><span class="cov0" title="0">{ // skip double-open start + startSemi = j + 2 + continue</span> + } + <span class="cov4" title="5">closeIdx := j + 1 + k + if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov0" title="0">{ + startSemi = closeIdx + 1 + continue</span> + } + <span class="cov4" title="5">if closeIdx-(j+1) < 1 </span><span class="cov0" title="0">{ + startSemi = closeIdx + 1 + continue</span> + } + <span class="cov4" title="5">endChar := closeIdx + 1 + if endChar < len(line) && line[endChar] == ' ' </span><span class="cov3" title="4">{ + endChar++ + }</span> + <span class="cov4" title="5">edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) + startSemi = endChar</span> + } + <span class="cov4" title="5">return edits</span> } </pre> @@ -4237,14 +4316,15 @@ func collectSemicolonMarkers(line string, lineNum int) []TextEdit <span class="c package lsp import ( - "bufio" - "encoding/json" - "codeberg.org/snonux/hexai/internal/llm" - "codeberg.org/snonux/hexai/internal/logging" - "io" - "log" - "sync" - "time" + "bufio" + "encoding/json" + "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/logging" + "io" + "log" + "strings" + "sync" + "time" ) // Server implements a minimal LSP over stdio. @@ -4286,6 +4366,12 @@ type Server struct { // Dispatch table for JSON-RPC methods → handler functions handlers map[string]func(Request) + + // Configurable trigger characters + inlineOpen string + inlineClose string + chatSuffix string + chatPrefixes []string } // ServerOptions collects configuration for NewServer to avoid long parameter lists. @@ -4302,50 +4388,67 @@ type ServerOptions struct { ManualInvokeMinPrefix int CompletionDebounceMs int CompletionThrottleMs int + + // Inline/chat triggers + InlineOpen string + InlineClose string + ChatSuffix string + ChatPrefixes []string } -func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server <span class="cov10" title="3">{ +func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server <span class="cov10" title="4">{ s := &Server{in: bufio.NewReader(r), out: w, logger: logger, docs: make(map[string]*document), logContext: opts.LogContext} maxTokens := opts.MaxTokens - if maxTokens <= 0 </span><span class="cov6" title="2">{ + if maxTokens <= 0 </span><span class="cov8" title="3">{ maxTokens = 500 }</span> - <span class="cov10" title="3">s.maxTokens = maxTokens + <span class="cov10" title="4">s.maxTokens = maxTokens contextMode := opts.ContextMode - if contextMode == "" </span><span class="cov6" title="2">{ + if contextMode == "" </span><span class="cov8" title="3">{ contextMode = "file-on-new-func" }</span> - <span class="cov10" title="3">windowLines := opts.WindowLines - if windowLines <= 0 </span><span class="cov6" title="2">{ + <span class="cov10" title="4">windowLines := opts.WindowLines + if windowLines <= 0 </span><span class="cov8" title="3">{ windowLines = 120 }</span> - <span class="cov10" title="3">maxContextTokens := opts.MaxContextTokens - if maxContextTokens <= 0 </span><span class="cov6" title="2">{ + <span class="cov10" title="4">maxContextTokens := opts.MaxContextTokens + if maxContextTokens <= 0 </span><span class="cov8" title="3">{ maxContextTokens = 2000 }</span> - <span class="cov10" title="3">s.contextMode = contextMode + <span class="cov10" title="4">s.contextMode = contextMode s.windowLines = windowLines s.maxContextTokens = maxContextTokens s.startTime = time.Now() s.llmClient = opts.Client - if len(opts.TriggerCharacters) == 0 </span><span class="cov10" title="3">{ + if len(opts.TriggerCharacters) == 0 </span><span class="cov10" title="4">{ // Defaults (no space to avoid auto-trigger after whitespace) s.triggerChars = []string{".", ":", "/", "_", ")", "{"} }</span> else<span class="cov0" title="0"> { s.triggerChars = append([]string{}, opts.TriggerCharacters...) }</span> - <span class="cov10" title="3">s.codingTemperature = opts.CodingTemperature + <span class="cov10" title="4">s.codingTemperature = opts.CodingTemperature s.compCache = make(map[string]string) s.manualInvokeMinPrefix = opts.ManualInvokeMinPrefix if opts.CompletionDebounceMs > 0 </span><span class="cov1" title="1">{ s.completionDebounce = time.Duration(opts.CompletionDebounceMs) * time.Millisecond }</span> - <span class="cov10" title="3">if opts.CompletionThrottleMs > 0 </span><span class="cov0" title="0">{ + <span class="cov10" title="4">if opts.CompletionThrottleMs > 0 </span><span class="cov0" title="0">{ s.throttleInterval = time.Duration(opts.CompletionThrottleMs) * time.Millisecond }</span> + // Trigger character config (with sane defaults if missing) + <span class="cov10" title="4">if strings.TrimSpace(opts.InlineOpen) == "" </span><span class="cov8" title="3">{ s.inlineOpen = ">" }</span> else<span class="cov1" title="1"> { s.inlineOpen = opts.InlineOpen }</span> + <span class="cov10" title="4">if strings.TrimSpace(opts.InlineClose) == "" </span><span class="cov8" title="3">{ s.inlineClose = ">" }</span> else<span class="cov1" title="1"> { s.inlineClose = opts.InlineClose }</span> + <span class="cov10" title="4">if strings.TrimSpace(opts.ChatSuffix) == "" </span><span class="cov8" title="3">{ s.chatSuffix = ">" }</span> else<span class="cov1" title="1"> { s.chatSuffix = opts.ChatSuffix }</span> + <span class="cov10" title="4">if len(opts.ChatPrefixes) == 0 </span><span class="cov8" title="3">{ s.chatPrefixes = []string{"?","!",":",";"} }</span> else<span class="cov1" title="1"> { s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) }</span> + + // Assign package-level inline trigger chars for free helper functions + <span class="cov10" title="4">if s.inlineOpen != "" </span><span class="cov10" title="4">{ inlineOpenChar = s.inlineOpen[0] }</span> + <span class="cov10" title="4">if s.inlineClose != "" </span><span class="cov10" title="4">{ inlineCloseChar = s.inlineClose[0] }</span> + <span class="cov10" title="4">if s.chatSuffix != "" </span><span class="cov10" title="4">{ chatSuffixChar = s.chatSuffix[0] }</span> + <span class="cov10" title="4">if len(s.chatPrefixes) > 0 </span><span class="cov10" title="4">{ chatPrefixSingles = append([]string{}, s.chatPrefixes...) }</span> // Initialize dispatch table - <span class="cov10" title="3">s.handlers = map[string]func(Request){ + <span class="cov10" title="4">s.handlers = map[string]func(Request){ "initialize": s.handleInitialize, "initialized": func(_ Request) </span><span class="cov0" title="0">{ s.handleInitialized() }</span>, "shutdown": s.handleShutdown, @@ -4358,7 +4461,7 @@ func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) "codeAction/resolve": s.handleCodeActionResolve, "workspace/executeCommand": s.handleExecuteCommand, } - <span class="cov10" title="3">return s</span> + <span class="cov10" title="4">return s</span> } func (s *Server) Run() error <span class="cov1" title="1">{ diff --git a/docs/coverage.out b/docs/coverage.out index fd265f2..3f45e70 100644 --- a/docs/coverage.out +++ b/docs/coverage.out @@ -15,136 +15,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 2 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 2 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 60 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 21 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 14 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 12 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 8 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 72 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 21 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 14 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 12 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 8 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 2 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 1 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -201,7 +220,7 @@ codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -640,29 +659,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -860,8 +879,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 0 @@ -883,169 +902,184 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 0 @@ -1062,218 +1096,238 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 @@ -1309,136 +1363,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 20 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 24 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 1 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 1 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -1495,7 +1568,7 @@ codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -1934,29 +2007,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -2154,8 +2227,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 0 @@ -2177,169 +2250,184 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 0 @@ -2356,218 +2444,238 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 @@ -2603,136 +2711,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 2 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 20 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -2766,30 +2893,30 @@ codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.17,129.4 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.3,131.26 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.2,136.12 3 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:140.59,142.2 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.39 3 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.39,84.6 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.5,87.39 2 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.39,89.6 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 5 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 5 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.39 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.39,84.6 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.5,87.39 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.39,89.6 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -2964,11 +3091,11 @@ codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 5 -codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 5 -codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 5 -codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 5 -codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 @@ -2986,8 +3113,8 @@ codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 5 -codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 @@ -3059,14 +3186,14 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.16 2 6 -codeberg.org/snonux/hexai/internal/llm/provider.go:87.16,89.6 1 6 -codeberg.org/snonux/hexai/internal/llm/provider.go:90.5,90.14 1 6 -codeberg.org/snonux/hexai/internal/llm/provider.go:91.19,92.50 1 6 -codeberg.org/snonux/hexai/internal/llm/provider.go:92.50,94.10 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:96.9,96.41 1 5 -codeberg.org/snonux/hexai/internal/llm/provider.go:96.41,99.10 2 3 -codeberg.org/snonux/hexai/internal/llm/provider.go:100.9,100.103 1 5 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.16 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.16,89.6 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.5,90.14 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.19,92.50 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.50,94.10 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.9,96.41 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.41,99.10 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.9,100.103 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:101.19,102.41 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:102.41,105.10 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:106.9,106.89 1 0 @@ -3077,21 +3204,21 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.42,114.10 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.9,115.108 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.13,117.61 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 5 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:17.4,19.12 2 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:19.12,21.3 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:22.2,24.29 2 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:24.29,27.3 1 0 -codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 1 -codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 6 -codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 2 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:17.4,19.12 2 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:19.12,21.3 1 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:22.2,24.29 2 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:24.29,27.3 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 4 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 7 -codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 1 -codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 1 -codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 -codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 1 -codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 3 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 5 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 4 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 1 codeberg.org/snonux/hexai/internal/lsp/context.go:15.96,17.14 2 0 codeberg.org/snonux/hexai/internal/lsp/context.go:18.17,19.19 1 0 codeberg.org/snonux/hexai/internal/lsp/context.go:20.16,21.41 1 0 @@ -3228,29 +3355,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -3448,8 +3575,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 0 @@ -3471,169 +3598,184 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 0 @@ -3650,221 +3792,241 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 1 -codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 1 -codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:22.3,22.17 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:22.17,23.9 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:25.3,26.22 2 0 @@ -3897,136 +4059,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 24 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -4060,30 +4241,30 @@ codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.17,129.4 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.3,131.26 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.2,136.12 3 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:140.59,142.2 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 1 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 6 codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 6 codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.39 3 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.39,84.6 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.5,87.39 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.39,89.6 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.39 3 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.39,84.6 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.5,87.39 2 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.39,89.6 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 5 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 5 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 1 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 6 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -4258,11 +4439,11 @@ codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 5 codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 @@ -4280,8 +4461,8 @@ codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 -codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 5 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 5 codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 @@ -4353,14 +4534,14 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.16 2 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:87.16,89.6 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:90.5,90.14 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:91.19,92.50 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:92.50,94.10 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:96.9,96.41 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:96.41,99.10 2 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:100.9,100.103 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.16 2 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.16,89.6 1 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.5,90.14 1 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.19,92.50 1 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.50,94.10 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.9,96.41 1 5 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.41,99.10 2 3 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.9,100.103 1 5 codeberg.org/snonux/hexai/internal/llm/provider.go:101.19,102.41 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:102.41,105.10 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:106.9,106.89 1 0 @@ -4371,21 +4552,21 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.42,114.10 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.9,115.108 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.13,117.61 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:17.4,19.12 2 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:19.12,21.3 1 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:22.2,24.29 2 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:24.29,27.3 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 5 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:17.4,19.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:19.12,21.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:22.2,24.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:24.29,27.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 6 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 2 codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 3 -codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 5 -codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 7 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 codeberg.org/snonux/hexai/internal/lsp/context.go:15.96,17.14 2 0 codeberg.org/snonux/hexai/internal/lsp/context.go:18.17,19.19 1 0 codeberg.org/snonux/hexai/internal/lsp/context.go:20.16,21.41 1 0 @@ -4522,29 +4703,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -4742,8 +4923,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 0 @@ -4765,169 +4946,184 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 0 @@ -4944,221 +5140,241 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 0 -codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 1 +codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 1 +codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 1 codeberg.org/snonux/hexai/internal/lsp/transport.go:22.3,22.17 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:22.17,23.9 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:25.3,26.22 2 0 @@ -5191,136 +5407,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -5377,7 +5612,7 @@ codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 8 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 8 @@ -5816,29 +6051,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -6036,8 +6271,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 0 @@ -6059,169 +6294,184 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 0 @@ -6238,218 +6488,238 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 @@ -6490,136 +6760,155 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:55.29,73.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:77.35,79.22 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:79.22,81.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:83.5,84.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:84.19,87.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:87.11,88.91 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:88.91,90.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.5,96.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:96.53,98.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:99.5,99.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:103.66,105.16 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:105.16,106.43 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:106.43,108.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:109.3,109.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:111.2,115.45 4 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:115.45,116.20 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:116.20,118.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:119.3,119.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:121.2,121.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:124.37,127.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:130.39,131.25 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:131.25,133.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.2,134.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:134.56,136.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.2,137.34 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:137.34,139.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.2,140.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.32,142.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.2,143.32 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:143.32,145.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.5,146.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.39,148.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.5,149.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:149.41,151.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.5,152.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:152.39,152.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.5,153.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:153.39,153.94 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.2,154.38 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:154.38,156.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.2,157.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:157.53,159.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:163.47,164.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:164.58,166.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.2,167.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:167.56,169.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.2,170.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:170.36,172.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.2,173.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:173.58,175.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.2,176.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:176.56,178.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.2,179.36 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:179.36,181.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.2,182.59 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:182.59,184.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.2,185.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:185.57,187.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.2,188.37 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:188.37,190.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:193.38,195.72 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:195.72,197.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:197.8,199.17 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:199.17,201.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:202.3,202.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:204.5,204.27 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:211.43,216.37 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:216.37,216.79 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.5,217.44 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:217.44,219.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:219.20,219.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:220.9,221.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.23,221.42 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.42,221.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:221.88,221.103 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:222.9,222.23 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.5,224.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:224.54,226.20 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:226.20,226.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:227.9,228.23 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:228.23,229.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:229.30,229.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:230.13,230.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:232.9,232.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.5,235.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:235.50,237.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.5,238.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:238.51,240.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.60 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:241.60,243.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.5,244.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:244.58,246.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.5,247.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:247.57,249.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.5,250.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:250.64,252.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.5,253.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:253.62,255.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.5,256.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:256.62,258.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:259.63,261.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.57 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:262.57,265.33 3 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:265.33,266.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:266.51,268.14 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:270.9,270.19 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.5,272.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:272.47,274.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:277.54,277.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.5,278.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.51,278.86 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.5,279.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:279.63,279.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.5,281.54 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:281.54,281.91 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.5,282.51 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.51,282.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:62.29,85.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.35,91.22 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:91.22,93.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:95.5,96.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:96.19,99.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:99.11,100.91 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:100.91,102.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.5,108.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:108.53,110.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:111.5,111.15 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:115.66,117.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:117.16,118.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:118.43,120.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:121.3,121.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:123.2,127.45 4 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:127.45,128.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:128.20,130.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:131.3,131.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:133.2,133.22 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:136.37,139.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.39,143.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:143.25,145.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,146.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.56,148.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.2,149.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:149.34,151.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.2,152.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:152.32,154.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.2,155.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:155.32,157.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.5,158.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:158.39,160.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.5,161.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:161.41,163.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.5,164.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:164.39,164.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.5,165.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:165.39,165.94 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.5,166.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:166.41,168.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.5,169.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:169.58,171.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.5,172.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:172.59,174.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.5,175.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:175.58,177.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.5,178.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:178.36,180.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.5,181.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:181.56,183.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:187.47,188.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:188.58,190.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.2,191.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:191.56,193.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.2,194.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:194.36,196.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.2,197.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:197.58,199.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.2,200.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:200.56,202.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.2,203.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:203.36,205.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.2,206.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:206.59,208.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.2,209.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:209.57,211.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.2,212.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:212.37,214.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:217.38,219.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:219.72,221.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:221.8,223.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:223.17,225.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:226.3,226.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:228.5,228.27 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:235.43,240.37 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:240.37,240.79 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.5,241.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:241.44,243.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:243.20,243.39 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:244.9,245.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.23,245.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.42,245.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:245.88,245.103 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:246.9,246.23 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.5,248.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:248.54,250.20 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:250.20,250.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:251.9,252.23 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:252.23,253.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:253.30,253.73 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:254.13,254.30 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:256.9,256.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.5,259.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:259.50,261.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.5,262.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:262.51,264.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.5,265.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:265.60,267.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.5,268.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:268.58,270.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.5,271.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:271.57,273.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.5,274.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:274.64,276.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.5,277.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:277.62,279.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.5,280.62 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:280.62,282.6 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:283.5,283.63 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,283.104 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.5,285.55 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:285.55,285.93 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:286.52,286.88 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.5,287.64 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:287.64,287.106 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.5,289.13 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:289.13,291.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:292.5,292.16 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:283.63,285.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.5,286.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:286.57,289.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:289.33,290.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:290.51,292.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.9,294.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.5,296.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:296.50,296.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.5,297.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:297.51,297.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.5,298.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:298.50,298.84 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.5,299.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:299.52,302.33 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:302.33,303.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:303.51,305.14 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:307.9,307.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.5,309.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:309.47,311.6 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.5,314.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:314.54,314.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.5,315.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:315.51,315.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.63,316.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.5,318.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:318.54,318.91 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.5,319.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:319.51,319.86 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.5,320.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:320.63,320.104 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.55,322.93 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.5,323.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:323.52,323.88 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.5,324.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:324.64,324.106 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.5,326.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:326.13,328.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:329.5,329.16 1 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.2,32.64 1 0 @@ -6676,7 +6965,7 @@ codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,122.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,126.2 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -7084,19 +7373,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 16 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 12 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 11 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 12 codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 11 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 12 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 12 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 12 codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 12 codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 9 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 12 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 10 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 9 codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 9 codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 1 @@ -7115,29 +7404,29 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 21 codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 8 codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 7 codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.9,302.83 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:302.83,304.10 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.9,306.33 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:306.33,308.10 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.3,310.27 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:310.27,311.34 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.34,312.38 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.38,313.35 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.35,315.7 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:317.5,317.17 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:320.4,320.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:325.2,326.36 2 13 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.36,328.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.2,330.76 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:330.76,332.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:333.2,334.35 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.35,335.14 1 26 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.14,337.4 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:339.2,339.14 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:342.137,347.24 5 10 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:347.24,349.3 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:350.2,360.4 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:435.74,444.2 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.9,303.126 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.126,305.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.9,307.33 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.33,309.10 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.5,331.122 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.122,333.6 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 12 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 34 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 10 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:16.48,18.55 2 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:18.55,19.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.23,21.4 1 0 @@ -7330,13 +7619,13 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:57.2,57.46 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:62.99,65.2 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:67.98,70.2 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:72.160,77.52 4 18 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:77.52,80.3 2 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:77.52,80.3 2 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.2,81.51 1 10 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:81.51,83.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:85.2,90.86 4 10 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:90.86,95.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.2,96.87 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.87,99.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.5,96.73 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:96.73,99.6 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.2,101.83 1 8 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:101.83,104.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:107.5,107.129 1 8 @@ -7352,175 +7641,190 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:131.16,135.3 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:136.2,140.19 4 7 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:140.19,142.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:143.2,144.75 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:148.38,149.16 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:148.38,149.16 1 11 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.16,151.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:152.2,155.42 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:155.42,157.3 1 6 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:157.8,160.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,166.79 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.79,168.63 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.63,171.4 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:173.2,173.14 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.119,181.24 2 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:181.24,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:184.2,185.13 2 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:185.13,187.68 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.68,189.4 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.2,191.19 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.19,193.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.2,196.12 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.12,198.28 2 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:198.28,200.12 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:202.3,202.8 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:204.2,206.50 3 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.50,208.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,209.23 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:213.193,215.9 2 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:215.9,217.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.2,223.32 6 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.32,225.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:226.2,227.24 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:227.24,229.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:230.2,236.33 5 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:236.33,238.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:239.5,240.40 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.40,242.20 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:242.20,244.21 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.21,246.5 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.4,247.59 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.59,249.21 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.4,253.40 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.40,257.5 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.8,259.23 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:259.23,261.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:262.2,262.19 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.55,269.15 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:269.15,271.6 1 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.5,272.9 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.9,276.26 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.26,278.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:279.9,280.23 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:280.23,282.10 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.9,285.16 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.27,288.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:289.24,289.24 0 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.60,299.22 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:299.22,301.6 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.5,303.9 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.9,307.29 4 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.29,311.20 4 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.31,314.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:315.28,317.25 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.9,323.20 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:328.177,334.33 3 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:334.33,336.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.2,337.18 1 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:337.18,339.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:340.2,340.17 1 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:344.101,346.57 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:346.57,347.78 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:347.78,349.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.2,351.19 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.19,353.3 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.2,354.19 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.19,356.3 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.2,357.61 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:357.61,358.57 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.57,360.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.16 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:13.45,15.55 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:15.55,18.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.47,23.55 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,24.32 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:24.32,26.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:27.3,29.44 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:33.46,35.55 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.55,38.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:44.76,46.14 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:46.14,48.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:50.2,51.14 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.2,54.26 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.26,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:57.2,58.13 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.13,60.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.2,61.30 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:61.30,63.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.28 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.28,69.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,75.43 5 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.43,78.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:79.2,79.27 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.50,88.24 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:88.24,90.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:91.2,92.35 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.35,94.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.2,95.30 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.30,98.14 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:98.14,99.39 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.39,101.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.4,103.9 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.3,105.12 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:105.12,106.12 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.3,110.17 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.17,111.12 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.3,115.63 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:115.63,117.4 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.3,118.80 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.80,119.12 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.3,125.19 4 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.19,126.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,140.18 9 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.18,143.5 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.4,145.17 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:145.17,147.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.4,148.61 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.3,151.8 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:157.110,159.14 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:159.14,161.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:163.2,174.54 8 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.96,181.14 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:181.14,183.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:184.2,187.31 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:187.31,188.53 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:188.53,190.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.3,191.12 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:191.12,192.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.3,194.61 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:194.61,195.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.3,198.14 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:198.14,200.36 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.36,203.13 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.4,205.9 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.53 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.53,209.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.12 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.12,211.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,216.6 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:218.2,219.26 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:219.26,220.35 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.35,222.4 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.35 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.35,225.4 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:227.2,228.13 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:232.45,234.39 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.39,236.63 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.63,238.4 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.2,240.32 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:240.32,242.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,243.17 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.17,245.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.2,247.14 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.21,249.48 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.10,251.12 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.68,263.2 6 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.46,273.2 6 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:276.61,291.2 9 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:295.59,296.15 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:296.15,299.6 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:161.2,161.27 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:165.91,167.27 2 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:167.27,167.43 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.5,168.43 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.43,169.41 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:169.41,169.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:170.9,171.43 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.43,172.27 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.27,175.14 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:178.5,178.17 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:182.119,186.24 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:186.24,188.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:189.2,190.13 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:190.13,192.68 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:192.68,194.4 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.2,196.19 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:196.19,198.3 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:200.2,201.12 2 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.12,203.28 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:203.28,205.12 2 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:207.3,207.8 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:209.2,211.50 3 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:211.50,213.3 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,214.23 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:218.193,220.9 2 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:220.9,222.3 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.2,228.32 6 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.32,230.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:231.2,232.24 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:232.24,234.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:235.2,241.33 5 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.33,243.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.5,245.40 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:245.40,247.20 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:247.20,249.21 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:249.21,251.5 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.4,252.59 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:252.59,254.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.21,256.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.4,258.40 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.40,262.5 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.8,264.23 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:264.23,266.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.2,267.19 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:272.55,274.15 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:274.15,276.6 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.5,277.9 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:277.9,281.26 4 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.26,283.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:284.9,285.23 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:285.23,287.10 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:288.9,290.16 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:291.27,293.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.24,294.24 0 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:302.60,304.22 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:304.22,306.6 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:307.5,308.9 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:308.9,312.29 4 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:312.29,316.20 4 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.31,319.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:320.28,322.25 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.9,328.20 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:333.177,339.33 3 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:339.33,341.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.2,342.18 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.18,344.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:345.2,345.17 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:349.101,351.57 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:351.57,352.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:352.78,354.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.2,356.19 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:356.19,358.3 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.2,359.19 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:359.19,361.3 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.2,362.61 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:362.61,363.57 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.57,365.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:367.2,367.16 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:18.45,20.55 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:20.55,23.3 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:26.47,28.55 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:28.55,29.32 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.32,31.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.3,34.44 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:38.46,40.55 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:40.55,43.3 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:49.76,51.14 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:51.14,53.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:55.2,56.14 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:56.14,58.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.2,59.26 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.26,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,63.13 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:63.13,65.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.2,66.30 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.30,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:70.2,71.28 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:71.28,74.3 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:75.2,80.43 5 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:80.43,83.3 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:84.2,84.27 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:92.50,93.24 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:93.24,95.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.2,97.35 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:97.35,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.5,100.33 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.33,103.14 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.14,104.39 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:104.39,106.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:108.4,108.9 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.9,110.18 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:110.18,111.21 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.9,114.31 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:114.31,115.21 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.9,118.43 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:118.43,119.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.9,122.18 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:122.18,122.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:123.9,125.44 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.44,126.28 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:126.28,126.53 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.9,128.23 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.23,128.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.3,131.63 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.63,133.4 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.3,134.80 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:134.80,135.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:138.9,141.19 4 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.19,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,146.38 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:146.38,156.18 9 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.18,159.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:160.4,161.17 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:161.17,163.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:164.4,164.61 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:167.3,167.8 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:173.110,175.14 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:175.14,177.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:179.2,190.54 8 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:195.96,197.14 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:197.14,199.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:200.2,203.31 4 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:203.31,204.53 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:204.53,206.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.3,207.12 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.12,208.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.3,210.61 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.61,211.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.3,214.14 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.14,216.36 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:216.36,219.13 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:221.4,221.9 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,223.53 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.53,225.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.3,226.12 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.12,227.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:229.3,232.6 4 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:234.2,235.26 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:235.26,236.35 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.35,238.4 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,239.35 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.35,241.4 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:243.2,244.13 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:248.45,250.20 2 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:250.20,252.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.5,254.53 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:254.53,256.46 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:256.46,257.27 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:257.27,259.14 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.5,263.35 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:263.35,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.5,268.17 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:269.24,270.54 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:271.13,272.18 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.68,284.2 6 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:287.46,294.2 6 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:297.61,312.2 9 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:316.59,317.15 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:317.15,320.6 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.58 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.58,13.6 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.5,14.22 1 1 @@ -7537,218 +7841,238 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:15.2,26.27 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:29.38,31.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:33.46,35.2 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:37.31,40.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:13.55,15.32 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:15.32,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.2,18.13 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.41,27.2 4 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.32,39.23 3 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:39.23,41.3 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:42.2,43.24 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.24,45.3 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.2,49.15 4 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.15,51.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:52.2,55.211 4 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.51,60.41 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.41,62.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:63.2,65.71 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.110,69.14 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:69.14,73.3 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.2,76.18 3 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 15 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 37 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 20 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 24 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.53 1 18 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.53,129.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.40 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.67,173.22 2 46 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:173.22,175.12 2 58 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.63 2 28 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.63,182.12 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.3,185.12 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.12,187.4 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:188.3,189.48 2 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.48,191.12 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:193.3,194.18 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.18,196.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.29 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:201.2,201.24 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.46,209.32 2 18 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:209.32,211.3 1 16 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.2,212.34 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.34,214.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.32 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.32,217.32 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.32,219.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.2,221.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.83,228.102 2 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.102,230.36 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:230.36,232.136 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:232.136,234.5 1 20 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.4,237.34 3 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.34,239.5 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.2,243.65 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.65,244.53 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.53,246.37 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.37,248.137 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:248.137,250.6 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.5,253.35 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:253.35,255.6 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.2,259.19 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.80,264.22 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:264.22,266.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,269.40 3 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:269.40,271.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.2,272.34 1 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.34,273.31 1 94 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:273.31,274.12 1 75 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.3,277.16 2 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.16,278.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.3,280.32 1 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.32,282.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.19 1 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.36,289.2 1 94 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.39,294.13 2 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:294.13,296.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:297.2,299.66 3 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.66,301.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.2,303.54 2 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.54,305.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.2,306.51 1 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.51,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.69 3 30 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.69,314.3 2 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.2,315.10 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.43,321.13 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.13,323.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:324.2,325.11 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.11,327.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.2,329.14 2 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.14,331.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.19 2 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.56,339.89 2 16 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.89,341.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.2,342.14 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:346.52,347.32 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.32,349.28 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.28,351.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.3,352.34 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:352.34,354.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.3,355.42 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.42,357.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.3,358.49 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.2,363.27 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.27,365.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.2,366.36 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.36,368.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:369.2,372.49 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.49,374.24 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.24,376.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,380.25 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.25,382.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.2,383.33 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.33,385.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,387.19 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.67,393.35 2 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:393.35,395.3 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:396.2,397.31 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:397.31,399.3 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.2,400.14 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.69,404.37 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.37,406.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:407.2,407.47 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.50,412.22 2 51 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.22,414.12 2 55 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.12,416.4 1 34 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:417.3,419.32 3 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.32,421.4 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.3,423.35 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.35,425.12 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.3,428.12 2 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,432.49 2 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.49,434.12 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.14 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.2,438.14 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:441.67,444.28 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.28,446.12 2 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.12,447.9 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,451.12 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.12,452.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.3,454.43 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.43,456.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.3,458.23 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:458.23,460.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.3,463.48 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:463.48,465.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.3,467.25 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:467.25,469.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:471.3,472.50 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:472.50,474.4 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:475.3,476.22 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.2,478.14 1 5 -codeberg.org/snonux/hexai/internal/lsp/server.go:72.90,75.20 3 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:75.20,77.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:78.2,80.23 3 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:80.23,82.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:83.2,84.22 2 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:84.22,86.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:87.2,88.27 2 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:88.27,90.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,97.38 6 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:97.38,100.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:100.8,102.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:103.5,106.38 4 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:106.38,108.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.5,109.38 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:109.38,111.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:113.2,115.46 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:115.46,115.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:117.46,117.64 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:126.2,126.10 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:129.30,130.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:130.6,132.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:132.20,134.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.3,135.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:135.17,137.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:138.3,139.52 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:139.52,141.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.3,143.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:143.23,145.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:147.3,148.15 2 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:148.15,150.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:18.55,20.32 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.32,22.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.2,23.13 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:27.41,32.2 4 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:34.41,39.2 4 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:41.32,44.23 3 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.23,46.3 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.2,48.24 2 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:48.24,50.3 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.2,54.15 4 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.15,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.2,60.211 4 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:64.51,65.41 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:65.41,67.3 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.2,70.71 3 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:73.110,74.14 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:74.14,78.3 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.2,81.18 3 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:84.118,85.14 1 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.14,88.16 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.16,91.35 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:91.35,93.5 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.4,94.36 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.36,96.5 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,99.59 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:99.59,101.5 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:102.4,102.21 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:105.2,108.19 4 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:111.51,112.23 1 21 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.23,114.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.2,115.13 1 21 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.13,117.100 2 37 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:117.100,119.12 2 20 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.3,121.8 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:123.2,123.11 1 21 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.32,128.2 1 24 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:131.44,132.56 1 18 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:132.56,134.6 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.5,135.43 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:138.40,140.20 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.20,141.40 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:141.40,143.12 2 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.3,145.8 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.2,147.12 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:147.12,149.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:150.2,150.17 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.52,154.38 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.38,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.2,158.27 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.27,159.34 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:159.34,160.12 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.3,162.36 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.36,163.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:165.3,165.25 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:167.2,167.34 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.67,177.25 2 46 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:177.25,180.18 2 58 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.18,182.10 1 27 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:183.9,185.80 2 31 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.80,187.21 2 18 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.9,191.18 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:191.18,193.10 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.9,195.54 2 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.54,197.21 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.9,200.24 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:200.24,202.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.9,205.35 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:207.5,207.27 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:213.46,217.34 3 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.34,219.6 1 16 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.5,220.37 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.37,222.6 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.5,223.34 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:223.34,225.38 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:225.38,227.10 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.5,229.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.83,236.102 2 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:236.102,238.36 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.36,240.136 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.136,242.5 1 20 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:243.4,245.34 3 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:245.34,247.5 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.2,251.65 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.65,252.53 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:252.53,254.37 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.37,256.137 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.137,258.6 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:259.5,261.35 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:261.35,263.6 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.2,267.19 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.80,272.22 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.22,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,277.40 3 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:277.40,279.3 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.2,280.34 1 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.34,281.31 1 94 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.31,282.12 1 75 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.3,285.16 2 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.16,286.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,288.32 1 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.32,290.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.2,292.19 1 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.36,297.2 1 94 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.39,302.13 2 30 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:302.13,304.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:305.2,307.66 3 30 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.66,309.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:310.2,311.54 2 30 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.54,313.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,314.51 1 30 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.51,316.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:317.2,319.69 3 30 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:319.69,322.3 2 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.2,323.10 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.43,329.13 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:329.13,331.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:332.2,333.11 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.11,335.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.14 2 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.14,339.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.19 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.56,347.89 2 16 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:347.89,349.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:350.2,350.14 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.52,355.32 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:355.32,357.28 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:357.28,359.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.3,360.34 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:360.34,362.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.3,363.42 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:363.42,365.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:366.3,366.49 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:368.2,371.27 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:371.27,373.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.2,374.36 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:374.36,376.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:377.2,380.49 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:380.49,382.24 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.24,384.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:387.2,388.25 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:388.25,390.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,391.33 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.33,393.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:394.2,395.19 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:399.67,401.35 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:401.35,403.3 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.2,405.31 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.31,407.3 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,408.14 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:411.69,412.40 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.40,414.6 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.5,415.50 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.50,420.25 2 49 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.25,424.18 3 50 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.18,426.10 1 32 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:427.9,429.38 3 18 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:429.38,431.10 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:432.9,433.52 2 12 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.52,435.21 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:438.9,439.18 2 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:439.18,441.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.9,443.55 2 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.55,445.21 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.9,447.20 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.5,449.17 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:452.67,455.31 3 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:455.31,457.18 2 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.18,458.18 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.9,462.18 3 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:462.18,463.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.9,465.49 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:465.49,467.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.9,469.40 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.40,471.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.9,474.54 2 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:474.54,476.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.9,478.31 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.31,480.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.9,483.56 2 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:483.56,485.10 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.9,487.28 2 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:489.5,489.17 1 5 +codeberg.org/snonux/hexai/internal/lsp/server.go:85.90,88.20 3 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:88.20,90.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:91.2,93.23 3 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:93.23,95.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:96.2,97.22 2 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:97.22,99.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:100.2,101.27 2 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:101.27,103.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:104.2,110.38 6 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:110.38,113.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:113.8,115.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:116.5,119.38 4 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:119.38,121.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.5,122.38 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:122.38,124.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.5,126.49 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.49,126.71 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.76,126.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.5,127.50 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.50,127.73 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:127.78,127.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.5,128.49 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.49,128.71 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:128.76,128.111 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.5,129.36 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.36,129.82 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.87,129.149 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.5,132.27 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.27,132.63 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.5,133.28 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:133.28,133.66 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.5,134.27 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.27,134.63 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.5,135.32 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:135.32,135.93 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,139.46 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:139.46,139.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.46,141.64 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:150.2,150.10 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:153.30,154.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.6,156.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:156.20,158.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.3,159.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:159.17,161.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:162.3,163.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.52,165.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.3,167.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.23,169.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:171.3,172.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.15,174.4 1 0 codeberg.org/snonux/hexai/internal/lsp/transport.go:14.48,17.6 3 1 codeberg.org/snonux/hexai/internal/lsp/transport.go:17.6,19.17 2 2 codeberg.org/snonux/hexai/internal/lsp/transport.go:19.17,21.4 1 0 diff --git a/docs/usage-examples.md b/docs/usage.md index 9abb0b8..c74ee7d 100644 --- a/docs/usage-examples.md +++ b/docs/usage.md @@ -33,7 +33,7 @@ Note: additional LSPs (`gopls`, `golangci-lint-lsp`) are optional; Hexai works w Ask a question at the end of a line and receive the answer inline. - End your question line with a trigger: `?>`, `!>`, or `:>`. -- Hexai removes only the trailing `>` from the question line (and keeps your trailing punctuation). The inline code-completion trigger `;;text;` remains unchanged. +- Hexai removes only the trailing `>` from the question line (and keeps your trailing punctuation). Inline code-completion triggers now use `>text>` (inline) or `>>text>` (line-replace). - It inserts a blank line, then a reply line prefixed with `> `, then one extra newline so most editors place the cursor on a fresh blank line after the answer. - If a `>` reply already exists below the question, Hexai won’t answer again. @@ -52,12 +52,12 @@ Context: Hexai includes up to the three most recent Q/A pairs above the question ## Inline triggers -Hexai supports inline prompt tags you can type in code to request an action from the LLM and then auto-clean the tag. The strict semicolon form is supported: +Hexai supports inline prompt tags you can type in code to request an action from the LLM and then auto-clean the tag. The new `>`-based forms are: -- `;do something;` — Hexai uses the text between semicolons as the instruction and removes only the prompt. Strict form requires no space after the first `;` and no space before the closing `;`. -- `;;do someting;` - Same as above, but replace the current line with the completion +- `>do something>` — uses the text between `>` markers as the instruction and removes only the prompt. Strict form requires no space after the first `>` and no space before the closing `>`. +- `>>do something>` — same as above, but replaces the entire current line with the completion. -Spaced variants (e.g., `; spaced ;`) are ignored. +Spaced variants (e.g., `> spaced >`) are ignored. ## Code actions diff --git a/internal/appconfig/config.go b/internal/appconfig/config.go index 2110831..d19ea18 100644 --- a/internal/appconfig/config.go +++ b/internal/appconfig/config.go @@ -36,6 +36,13 @@ type App struct { TriggerCharacters []string `json:"trigger_characters"` Provider string `json:"provider"` + // Inline prompt trigger characters (default: >text> and >>text>) + InlineOpen string `json:"inline_open"` + InlineClose string `json:"inline_close"` + // In-editor chat triggers (default: suffix ">" after one of [?, !, :, ;]) + ChatSuffix string `json:"chat_suffix"` + ChatPrefixes []string `json:"chat_prefixes"` + // Provider-specific options OpenAIBaseURL string `json:"openai_base_url"` OpenAIModel string `json:"openai_model"` @@ -69,6 +76,11 @@ func newDefaultConfig() App { ManualInvokeMinPrefix: 0, CompletionDebounceMs: 200, CompletionThrottleMs: 0, + // Inline/chat trigger defaults + InlineOpen: ">", + InlineClose: ">", + ChatSuffix: ">", + ChatPrefixes: []string{"?", "!", ":", ";"}, } } @@ -151,12 +163,24 @@ func (a *App) mergeBasics(other *App) { } if other.CompletionDebounceMs > 0 { a.CompletionDebounceMs = other.CompletionDebounceMs } if other.CompletionThrottleMs > 0 { a.CompletionThrottleMs = other.CompletionThrottleMs } - if len(other.TriggerCharacters) > 0 { - a.TriggerCharacters = slices.Clone(other.TriggerCharacters) - } - if s := strings.TrimSpace(other.Provider); s != "" { - a.Provider = s - } + if len(other.TriggerCharacters) > 0 { + a.TriggerCharacters = slices.Clone(other.TriggerCharacters) + } + if s := strings.TrimSpace(other.InlineOpen); s != "" { + a.InlineOpen = s + } + if s := strings.TrimSpace(other.InlineClose); s != "" { + a.InlineClose = s + } + if s := strings.TrimSpace(other.ChatSuffix); s != "" { + a.ChatSuffix = s + } + if len(other.ChatPrefixes) > 0 { + a.ChatPrefixes = slices.Clone(other.ChatPrefixes) + } + if s := strings.TrimSpace(other.Provider); s != "" { + a.Provider = s + } } // mergeProviderFields merges per-provider configuration. @@ -269,6 +293,19 @@ func loadFromEnv(logger *log.Logger) *App { } any = true } + if s := getenv("HEXAI_INLINE_OPEN"); s != "" { out.InlineOpen = s; any = true } + if s := getenv("HEXAI_INLINE_CLOSE"); s != "" { out.InlineClose = s; any = true } + if s := getenv("HEXAI_CHAT_SUFFIX"); s != "" { out.ChatSuffix = s; any = true } + if s := getenv("HEXAI_CHAT_PREFIXES"); s != "" { + parts := strings.Split(s, ",") + out.ChatPrefixes = nil + for _, p := range parts { + if t := strings.TrimSpace(p); t != "" { + out.ChatPrefixes = append(out.ChatPrefixes, t) + } + } + any = true + } if s := getenv("HEXAI_PROVIDER"); s != "" { out.Provider = s; any = true } diff --git a/internal/hexailsp/run.go b/internal/hexailsp/run.go index 0df8256..c12018f 100644 --- a/internal/hexailsp/run.go +++ b/internal/hexailsp/run.go @@ -118,5 +118,9 @@ func makeServerOptions(cfg appconfig.App, logContext bool, client llm.Client) ls ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, CompletionDebounceMs: cfg.CompletionDebounceMs, CompletionThrottleMs: cfg.CompletionThrottleMs, + InlineOpen: cfg.InlineOpen, + InlineClose: cfg.InlineClose, + ChatSuffix: cfg.ChatSuffix, + ChatPrefixes: cfg.ChatPrefixes, } } diff --git a/internal/llm/copilot_http_test.go b/internal/llm/copilot_http_test.go index 53f831c..180e43e 100644 --- a/internal/llm/copilot_http_test.go +++ b/internal/llm/copilot_http_test.go @@ -10,12 +10,14 @@ import ( "testing" "time" "encoding/base64" + "os" ) type rtFunc2 func(*http.Request) (*http.Response, error) func (f rtFunc2) RoundTrip(r *http.Request) (*http.Response, error) { return f(r) } func TestCopilot_EnsureSession_AndChat_Success(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Mock chat endpoint chatSrv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/chat/completions" { t.Fatalf("unexpected path: %s", r.URL.Path) } @@ -73,6 +75,7 @@ func TestCopilot_CodeCompletion_Success(t *testing.T) { } func TestCopilot_Chat_MultiChoice_And_ErrorBody(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Chat multi-choice: return two choices; client returns first content srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{ @@ -109,6 +112,7 @@ func TestCopilot_Chat_MultiChoice_And_ErrorBody(t *testing.T) { } func TestCopilot_Chat_NoChoices_Error(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{"choices": []any{}}) })) @@ -127,6 +131,7 @@ func TestCopilot_Chat_NoChoices_Error(t *testing.T) { } func TestCopilot_Chat_DecodeError_StatusOK(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Chat returns 200 but invalid JSON; expect decode error srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "{invalid") diff --git a/internal/llm/ollama_test.go b/internal/llm/ollama_test.go index 8d77a58..15f9cff 100644 --- a/internal/llm/ollama_test.go +++ b/internal/llm/ollama_test.go @@ -9,6 +9,7 @@ import ( "strings" "testing" "time" + "os" ) func TestBuildOllamaRequest_OptionsAndStream(t *testing.T) { @@ -40,6 +41,7 @@ func TestOllama_NameAndModel(t *testing.T) { } func TestOllamaChat_Success(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost || r.URL.Path != "/api/chat" { t.Fatalf("unexpected request: %s %s", r.Method, r.URL.Path) } w.Header().Set("Content-Type", "application/json") @@ -54,6 +56,7 @@ func TestOllamaChat_Success(t *testing.T) { } func TestOllamaChat_EmptyContent(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{"message": map[string]string{"role":"assistant","content":""}, "done": true}) })) @@ -66,6 +69,7 @@ func TestOllamaChat_EmptyContent(t *testing.T) { } func TestOllamaChat_Non2xx(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // API error string ts1 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(400) @@ -102,6 +106,7 @@ func TestOllamaChat_HTTPError(t *testing.T) { } func TestOllamaChat_DecodeError(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("{bad json}")) })) @@ -119,6 +124,7 @@ func TestHandleOllamaNon2xx_OK(t *testing.T) { } func TestOllamaChatStream_Success(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") // two JSON objects back-to-back @@ -136,6 +142,7 @@ func TestOllamaChatStream_Success(t *testing.T) { } func TestOllamaChatStream_ErrorEvent(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{"error":"oops"}) })) @@ -148,6 +155,7 @@ func TestOllamaChatStream_ErrorEvent(t *testing.T) { } func TestOllamaChatStream_DecodeError(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("{not json}")) })) diff --git a/internal/llm/openai_http_test.go b/internal/llm/openai_http_test.go index 808bb2b..ac7b897 100644 --- a/internal/llm/openai_http_test.go +++ b/internal/llm/openai_http_test.go @@ -9,9 +9,11 @@ import ( "testing" "strings" "time" + "os" ) func TestOpenAI_Chat_Success(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/chat/completions" { t.Fatalf("unexpected path: %s", r.URL.Path) } _ = json.NewEncoder(w).Encode(map[string]any{"choices": []map[string]any{{"index":0, "message": map[string]string{"role":"assistant","content":"OK"}}}}) @@ -29,6 +31,7 @@ func TestOpenAI_Chat_MissingKey(t *testing.T) { } func TestOpenAI_ChatStream_SSE(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Return SSE-like stream w.Header().Set("Content-Type", "text/event-stream") @@ -49,6 +52,7 @@ func TestHandleOpenAINon2xx_NoErrorBody(t *testing.T) { } func TestOpenAI_ChatStream_SSE_ErrorChunk(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/event-stream") io.WriteString(w, "data: {\"error\":{\"message\":\"oops\"}}\n\n") @@ -64,6 +68,7 @@ func TestOpenAI_ChatStream_SSE_ErrorChunk(t *testing.T) { } func TestOpenAI_Chat_NoChoices_Error(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{"choices": []any{}}) })) @@ -76,6 +81,7 @@ func TestOpenAI_Chat_NoChoices_Error(t *testing.T) { } func TestOpenAI_ChatStream_SSE_EmptyDelta_NoError(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/event-stream") io.WriteString(w, "data: {\\\"choices\\\":[{\\\"delta\\\":{\\\"content\\\":\\\"\\\"}}]}\\n\\n") @@ -92,6 +98,7 @@ func TestOpenAI_ChatStream_SSE_EmptyDelta_NoError(t *testing.T) { } func TestOpenAI_Chat_DecodeError_StatusOK(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Return status 200 but invalid JSON body; Chat should return an error srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) @@ -106,6 +113,7 @@ func TestOpenAI_Chat_DecodeError_StatusOK(t *testing.T) { } func TestOpenAI_Chat_MultiChoiceAndErrorBody(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Multi-choice success: return two choices with different finish reasons srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]any{ diff --git a/internal/llm/openai_sse_negative_test.go b/internal/llm/openai_sse_negative_test.go index 22b938c..8da5526 100644 --- a/internal/llm/openai_sse_negative_test.go +++ b/internal/llm/openai_sse_negative_test.go @@ -6,9 +6,11 @@ import ( "net/http" "net/http/httptest" "testing" + "os" ) func TestOpenAI_ChatStream_SSE_MalformedChunk(t *testing.T) { + if os.Getenv("HEXAI_TEST_SKIP_NET") == "1" { t.Skip("skip network-bound tests in restricted environments") } // Malformed JSON chunk should be skipped; no onDelta calls; no error. srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/event-stream") @@ -24,4 +26,3 @@ func TestOpenAI_ChatStream_SSE_MalformedChunk(t *testing.T) { } if got != "" { t.Fatalf("expected no deltas for malformed chunk, got %q", got) } } - diff --git a/internal/lsp/codeaction_test.go b/internal/lsp/codeaction_test.go index 5a74d66..4de0790 100644 --- a/internal/lsp/codeaction_test.go +++ b/internal/lsp/codeaction_test.go @@ -22,7 +22,7 @@ func TestBuildRewriteCodeAction_LazyAndResolves(t *testing.T) { s := newTestServer() s.llmClient = fakeLLM{resp: "REWRITTEN"} p := CodeActionParams{TextDocument: TextDocumentIdentifier{URI: "file:///t.go"}, Range: Range{Start: Position{Line: 1, Character: 2}, End: Position{Line: 3, Character: 4}}} - sel := ";rewrite;\nold code" + sel := ">rewrite>\nold code" ca := s.buildRewriteCodeAction(p, sel) if ca == nil { t.Fatalf("expected code action") diff --git a/internal/lsp/completion_prefix_strip_test.go b/internal/lsp/completion_prefix_strip_test.go index 99a08d6..e8e70f5 100644 --- a/internal/lsp/completion_prefix_strip_test.go +++ b/internal/lsp/completion_prefix_strip_test.go @@ -55,30 +55,30 @@ func TestTryLLMCompletion_ManualInvokeAfterWhitespace_Allows(t *testing.T) { } } -func TestTryLLMCompletion_InlineSemicolonPromptAlwaysTriggers(t *testing.T) { - s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} - s.llmClient = fakeLLM{resp: "replacement"} - line := "prefix ;do something; suffix" - // No trigger char immediately before cursor; place cursor at end - p := CompletionParams{Position: Position{Line: 0, Character: len(line)}, TextDocument: TextDocumentIdentifier{URI: "file://inline.go"}} - items, ok := s.tryLLMCompletion(p, "", line, "", "", "", false, "") - if !ok || len(items) == 0 { - t.Fatalf("expected completion to trigger on inline ;text; prompt") - } +func TestTryLLMCompletion_InlinePromptAlwaysTriggers(t *testing.T) { + s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} + s.llmClient = fakeLLM{resp: "replacement"} + line := "prefix >do something> suffix" + // No trigger char immediately before cursor; place cursor at end + p := CompletionParams{Position: Position{Line: 0, Character: len(line)}, TextDocument: TextDocumentIdentifier{URI: "file://inline.go"}} + items, ok := s.tryLLMCompletion(p, "", line, "", "", "", false, "") + if !ok || len(items) == 0 { + t.Fatalf("expected completion to trigger on inline >text> prompt") + } } -func TestTryLLMCompletion_DoubleSemicolonEmpty_DoesNotAutoTrigger(t *testing.T) { +func TestTryLLMCompletion_DoubleOpenEmpty_DoesNotAutoTrigger(t *testing.T) { s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} fake := &countingLLM{} s.llmClient = fake - line := ";; " // empty content after ';;' should not force-trigger + line := ">> " // empty content after double-open should not force-trigger p := CompletionParams{Position: Position{Line: 0, Character: len(line)}, TextDocument: TextDocumentIdentifier{URI: "file://empty-inline.go"}} items, ok := s.tryLLMCompletion(p, "", line, "", "", "", false, "") if !ok { t.Fatalf("expected ok=true for non-trigger path") } if len(items) != 0 { - t.Fatalf("expected no items when inline ';;' is empty") + t.Fatalf("expected no items when inline double-open is empty") } if fake.calls != 0 { t.Fatalf("LLM should not be called; calls=%d", fake.calls) @@ -86,63 +86,63 @@ func TestTryLLMCompletion_DoubleSemicolonEmpty_DoesNotAutoTrigger(t *testing.T) } func TestHasDoubleSemicolonTrigger_Variants(t *testing.T) { - if hasDoubleSemicolonTrigger(";;") { - t.Fatalf("bare ';;' should not trigger") - } - if hasDoubleSemicolonTrigger(";; ;") { - t.Fatalf("';;' followed by space should not trigger") - } - if hasDoubleSemicolonTrigger(";;;") { - t.Fatalf("';;;' should not trigger (no content)") - } - if !hasDoubleSemicolonTrigger(";;x;") { - t.Fatalf("expected trigger for ';;x;' pattern") - } + if hasDoubleOpenTrigger(">>") { + t.Fatalf("bare double-open should not trigger") + } + if hasDoubleOpenTrigger(">> ") { + t.Fatalf("double-open followed by space should not trigger") + } + if hasDoubleOpenTrigger(">>>") { + t.Fatalf("';;;' should not trigger (no content)") + } + if !hasDoubleOpenTrigger(">>x>") { + t.Fatalf("expected trigger for ';;x;' pattern") + } } -func TestBareDoubleSemicolonPreventsAutoTriggerEvenWithOtherTriggers(t *testing.T) { - s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} - fake := &countingLLM{} - s.llmClient = fake - // Place a '.' earlier but also include bare ';;' at end; should not auto-trigger - line := "obj. call ;;" +func TestBareDoubleOpenPreventsAutoTriggerEvenWithOtherTriggers(t *testing.T) { + s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} + fake := &countingLLM{} + s.llmClient = fake + // Place a '.' earlier but also include bare double-open at end; should not auto-trigger + line := "obj. call >>" p := CompletionParams{Position: Position{Line: 0, Character: len(line)}, TextDocument: TextDocumentIdentifier{URI: "file://bare-ds.go"}} items, ok := s.tryLLMCompletion(p, "", line, "", "", "", false, "") if !ok { t.Fatalf("expected ok=true (handled), but not auto-triggering") } - if len(items) != 0 { - t.Fatalf("expected no items due to bare ';;'") - } + if len(items) != 0 { + t.Fatalf("expected no items due to bare double-open") + } if fake.calls != 0 { t.Fatalf("LLM should not be called; calls=%d", fake.calls) } } -func TestBareDoubleSemicolonOnNextLine_PreventsAutoTrigger(t *testing.T) { - s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} - fake := &countingLLM{} - s.llmClient = fake - current := "expression := flag.String(\"expression\", \"\", \"Expression to evaluate\")" - below := ";;" +func TestBareDoubleOpenOnNextLine_PreventsAutoTrigger(t *testing.T) { + s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} + fake := &countingLLM{} + s.llmClient = fake + current := "expression := flag.String(\"expression\", \"\", \"Expression to evaluate\")" + below := ">>" p := CompletionParams{Position: Position{Line: 0, Character: len(current)}, TextDocument: TextDocumentIdentifier{URI: "file://nextline.go"}} items, ok := s.tryLLMCompletion(p, "", current, below, "", "", false, "") if !ok { t.Fatalf("expected ok=true handled") } - if len(items) != 0 { - t.Fatalf("expected no items due to bare ';;' on next line") - } + if len(items) != 0 { + t.Fatalf("expected no items due to bare double-open on next line") + } if fake.calls != 0 { t.Fatalf("LLM should not be called; calls=%d", fake.calls) } } -func TestBareDoubleSemicolonPreventsManualInvoke(t *testing.T) { - s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} - fake := &countingLLM{} - s.llmClient = fake - line := ";;" +func TestBareDoubleOpenPreventsManualInvoke(t *testing.T) { + s := &Server{maxTokens: 32, triggerChars: []string{".", ":", "/", "_"}, compCache: make(map[string]string)} + fake := &countingLLM{} + s.llmClient = fake + line := ">>" p := CompletionParams{Position: Position{Line: 0, Character: len(line)}, TextDocument: TextDocumentIdentifier{URI: "file://bare-ds-manual.go"}} // Simulate manual invoke p.Context = json.RawMessage([]byte(`{"triggerKind":1}`)) @@ -150,9 +150,9 @@ func TestBareDoubleSemicolonPreventsManualInvoke(t *testing.T) { if !ok { t.Fatalf("expected ok=true (handled)") } - if len(items) != 0 { - t.Fatalf("expected no items for bare ';;' even with manual invoke") - } + if len(items) != 0 { + t.Fatalf("expected no items for bare double-open even with manual invoke") + } if fake.calls != 0 { t.Fatalf("LLM should not be called; calls=%d", fake.calls) } diff --git a/internal/lsp/debounce_throttle_more_test.go b/internal/lsp/debounce_throttle_more_test.go new file mode 100644 index 0000000..cb11ea4 --- /dev/null +++ b/internal/lsp/debounce_throttle_more_test.go @@ -0,0 +1,36 @@ +package lsp + +import ( + "context" + "testing" + "time" +) + +func TestWaitForDebounce_WaitsRoughlyDebounce(t *testing.T) { + s := newTestServer() + s.completionDebounce = 20 * time.Millisecond + s.mu.Lock() + s.lastInput = time.Now() + s.mu.Unlock() + start := time.Now() + s.waitForDebounce(context.Background()) + if elapsed := time.Since(start); elapsed < 15*time.Millisecond { + t.Fatalf("debounce did not wait long enough: %v", elapsed) + } +} + +func TestWaitForThrottle_WaitsRoughlyInterval(t *testing.T) { + s := newTestServer() + s.throttleInterval = 20 * time.Millisecond + s.mu.Lock() + s.lastLLMCall = time.Now() + s.mu.Unlock() + start := time.Now() + if !s.waitForThrottle(context.Background()) { + t.Fatalf("waitForThrottle returned false") + } + if elapsed := time.Since(start); elapsed < 15*time.Millisecond { + t.Fatalf("throttle did not wait long enough: %v", elapsed) + } +} + diff --git a/internal/lsp/document_test.go b/internal/lsp/document_test.go index 4bd96e2..5fee18b 100644 --- a/internal/lsp/document_test.go +++ b/internal/lsp/document_test.go @@ -9,10 +9,20 @@ import ( ) func newTestServer() *Server { - return &Server{ - logger: log.New(io.Discard, "", 0), - docs: make(map[string]*document), - } + s := &Server{ + logger: log.New(io.Discard, "", 0), + docs: make(map[string]*document), + inlineOpen: ">", + inlineClose: ">", + chatSuffix: ">", + chatPrefixes: []string{"?","!",":",";"}, + } + // Keep package-level helpers in sync for tests using free functions + inlineOpenChar = '>' + inlineCloseChar = '>' + chatSuffixChar = '>' + chatPrefixSingles = []string{"?","!",":",";"} + return s } func TestSplitLines(t *testing.T) { @@ -60,6 +70,15 @@ func TestLineContext_EmptyDoc(t *testing.T) { } } +func TestDocBeforeAfter_ClampsIndices(t *testing.T) { + s := newTestServer() + uri := "file:///clamp.go" + s.setDocument(uri, "abc\nxyz") + // Position beyond document length should be clamped safely + before, after := s.docBeforeAfter(uri, Position{Line: 99, Character: 99}) + if before == "" && after == "" { t.Fatalf("expected some text with clamped indices") } +} + func TestTrimLen(t *testing.T) { long := strings.Repeat("a", 205) got := trimLen(long) diff --git a/internal/lsp/handlers.go b/internal/lsp/handlers.go index 547be67..5e7d86d 100644 --- a/internal/lsp/handlers.go +++ b/internal/lsp/handlers.go @@ -51,7 +51,7 @@ func findFirstInstructionInLine(line string) (instr string, cleaned string, ok b text string } cands := []cand{} - if t, l, r, ok := findStrictSemicolonTag(line); ok { + if t, l, r, ok := findStrictInlineTag(line); ok { cands = append(cands, cand{start: l, end: r, text: t}) } if i := strings.Index(line, "/*"); i >= 0 { @@ -298,8 +298,9 @@ func (s *Server) isTriggerEvent(p CompletionParams, current string) bool { b, _ := json.Marshal(p.Context) _ = json.Unmarshal(b, &ctx) } - // If the line contains a bare ';;' (no ';;text;'), do not treat as a trigger source. - if strings.Contains(current, ";;") && !hasDoubleSemicolonTrigger(current) { + // If configured and the line contains a bare double-open marker (e.g., '>>' with no '>>text>'), + // do not treat as a trigger source. + if s.inlineOpen != "" && strings.Contains(current, s.inlineOpen+s.inlineOpen) && !hasDoubleOpenTrigger(current) { return false } // TriggerKind 1 = Invoked (manual). Always allow manual invoke. @@ -326,10 +327,10 @@ func (s *Server) isTriggerEvent(p CompletionParams, current string) bool { if idx <= 0 || idx > len(current) { return false } - // Bare ';;' should not trigger via fallback char either - if strings.Contains(current, ";;") && !hasDoubleSemicolonTrigger(current) { - return false - } + // Bare double-open should not trigger via fallback char either (only when configured) + if s.inlineOpen != "" && strings.Contains(current, s.inlineOpen+s.inlineOpen) && !hasDoubleOpenTrigger(current) { + return false + } ch := string(current[idx-1]) for _, c := range s.triggerChars { if c == ch { diff --git a/internal/lsp/handlers_completion.go b/internal/lsp/handlers_completion.go index 576fc3d..036e591 100644 --- a/internal/lsp/handlers_completion.go +++ b/internal/lsp/handlers_completion.go @@ -93,10 +93,10 @@ func (s *Server) tryLLMCompletion(p CompletionParams, above, current, below, fun logging.AnsiGreen, logging.PreviewForLog(cleaned), logging.AnsiBase) return s.makeCompletionItems(cleaned, inParams, current, p, docStr), true } - if (isBareDoubleSemicolon(current) || isBareDoubleSemicolon(below)) && !manualInvoke { - logging.Logf("lsp ", "%scompletion skip=empty-double-semicolon line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) - return []CompletionItem{}, true - } + if (isBareDoubleOpen(current) || isBareDoubleOpen(below)) { + logging.Logf("lsp ", "%scompletion skip=empty-double-semicolon line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) + return []CompletionItem{}, true + } if !inParams && !s.prefixHeuristicAllows(inlinePrompt, current, p, manualInvoke) { logging.Logf("lsp ", "%scompletion skip=short-prefix line=%d char=%d current=%q%s", logging.AnsiYellow, p.Position.Line, p.Position.Character, trimLen(current), logging.AnsiBase) @@ -163,14 +163,19 @@ func parseManualInvoke(ctx any) bool { // shouldSuppressForChatTriggerEOL returns true when a chat trigger like ">" follows ?, !, :, or ; at EOL. func (s *Server) shouldSuppressForChatTriggerEOL(current string, p CompletionParams) bool { - if t := strings.TrimRight(current, " \t"); len(t) >= 2 && t[len(t)-1] == '>' { - prev := t[len(t)-2] - if prev == '?' || prev == '!' || prev == ':' || prev == ';' { - logging.Logf("lsp ", "completion skip=chat-trigger-eol uri=%s line=%d", p.TextDocument.URI, p.Position.Line) - return true - } - } - return false + t := strings.TrimRight(current, " \t") + if s.chatSuffix == "" { return false } + if strings.HasSuffix(t, s.chatSuffix) { + if len(t) < len(s.chatSuffix)+1 { return false } + prev := string(t[len(t)-len(s.chatSuffix)-1]) + for _, pf := range s.chatPrefixes { + if prev == pf { + logging.Logf("lsp ", "completion skip=chat-trigger-eol uri=%s line=%d", p.TextDocument.URI, p.Position.Line) + return true + } + } + } + return false } // prefixHeuristicAllows applies minimal prefix rules unless inlinePrompt or structural triggers apply. @@ -244,12 +249,12 @@ func (s *Server) tryProviderNativeCompletion(current string, p CompletionParams, if cleaned != "" { cleaned = stripDuplicateGeneralPrefix(current[:p.Position.Character], cleaned) } - if cleaned != "" && hasDoubleSemicolonTrigger(current) { - indent := leadingIndent(current) - if indent != "" { - cleaned = applyIndent(indent, cleaned) - } - } + if cleaned != "" && hasDoubleOpenTrigger(current) { + indent := leadingIndent(current) + if indent != "" { + cleaned = applyIndent(indent, cleaned) + } + } if strings.TrimSpace(cleaned) != "" { key := s.completionCacheKey(p, above, current, below, funcCtx, inParams, hasExtra, extraText) s.completionCachePut(key, cleaned) @@ -354,10 +359,10 @@ func (s *Server) postProcessCompletion(text string, leftOfCursor string, current if cleaned != "" { cleaned = stripDuplicateGeneralPrefix(leftOfCursor, cleaned) } - if cleaned != "" && hasDoubleSemicolonTrigger(currentLine) { - if indent := leadingIndent(currentLine); indent != "" { - cleaned = applyIndent(indent, cleaned) - } - } + if cleaned != "" && hasDoubleOpenTrigger(currentLine) { + if indent := leadingIndent(currentLine); indent != "" { + cleaned = applyIndent(indent, cleaned) + } + } return cleaned } diff --git a/internal/lsp/handlers_document.go b/internal/lsp/handlers_document.go index 5b83d78..3f9d4b0 100644 --- a/internal/lsp/handlers_document.go +++ b/internal/lsp/handlers_document.go @@ -10,6 +10,11 @@ import ( "time" ) +// Package-level chat trigger vars for helpers without Server receiver. +// NewServer assigns these from configuration on startup. +var chatSuffixChar byte = '>' +var chatPrefixSingles = []string{"?", "!", ":", ";"} + func (s *Server) handleDidOpen(req Request) { var p DidOpenTextDocumentParams if err := json.Unmarshal(req.Params, &p); err == nil { @@ -92,7 +97,7 @@ func (s *Server) detectAndHandleChat(uri string) { if d == nil || len(d.lines) == 0 { return } - for i, raw := range d.lines { + for i, raw := range d.lines { // Find last non-space character index j := len(raw) - 1 for j >= 0 { @@ -102,14 +107,25 @@ func (s *Server) detectAndHandleChat(uri string) { } break } - if j < 1 { - continue - } // need at least two chars - pair := raw[j-1 : j+1] - isTrigger := pair == "?>" || pair == "!>" || pair == ":>" || pair == ";>" - if !isTrigger { - continue - } + if j < 0 { + continue + } + // Check suffix/prefix according to configuration + if s.chatSuffix == "" { + continue + } + // Last non-space must equal suffix + if string(raw[j]) != s.chatSuffix { + continue + } + // Require at least one char before suffix and that char must be in chatPrefixes + if j < 1 { continue } + prev := string(raw[j-1]) + isTrigger := false + for _, pfx := range s.chatPrefixes { + if prev == pfx { isTrigger = true; break } + } + if !isTrigger { continue } // Avoid double-answering: if the next non-empty line starts with '>' we skip. k := i + 1 for k < len(d.lines) && strings.TrimSpace(d.lines[k]) == "" { @@ -119,9 +135,9 @@ func (s *Server) detectAndHandleChat(uri string) { continue } // Derive prompt by removing only the trailing '>' - removeCount := 1 + removeCount := len(s.chatSuffix) base := raw[:j+1-removeCount] - prompt := strings.TrimSpace(base) + prompt := strings.TrimSpace(base) if prompt == "" { continue } @@ -230,26 +246,27 @@ func (s *Server) buildChatHistory(uri string, lineIdx int, currentPrompt string) // stripTrailingTrigger removes the trailing chat trigger punctuation from a line if present. func stripTrailingTrigger(sx string) string { - s := strings.TrimRight(sx, " \t") - if len(s) >= 2 && s[len(s)-1] == '>' { // new triggers - prev := s[len(s)-2] - if prev == '?' || prev == '!' || prev == ':' || prev == ';' { - return strings.TrimRight(s[:len(s)-1], " \t") - } - } - if strings.HasSuffix(s, ";;") { // legacy inline cleanup used in history building - return strings.TrimRight(strings.TrimSuffix(s, ";;"), " \t") - } - if len(s) == 0 { - return sx - } - last := s[len(s)-1] - switch last { // legacy: remove one trailing punctuation - case '?', '!', ':': - return strings.TrimRight(s[:len(s)-1], " \t") - default: - return sx - } + s := strings.TrimRight(sx, " \t") + if len(s) == 0 { + return sx + } + // Configurable suffix removal when preceded by configured prefixes + if len(s) >= 2 && s[len(s)-1] == chatSuffixChar { + prev := string(s[len(s)-2]) + for _, pf := range chatPrefixSingles { + if prev == pf { + return strings.TrimRight(s[:len(s)-1], " \t") + } + } + } + // Legacy: remove one trailing punctuation (?, !, :) to build history nicely + last := s[len(s)-1] + switch last { + case '?', '!', ':': + return strings.TrimRight(s[:len(s)-1], " \t") + default: + return sx + } } // clientApplyEdit sends a workspace/applyEdit request to the client. diff --git a/internal/lsp/handlers_end_to_end_test.go b/internal/lsp/handlers_end_to_end_test.go index 73478e9..fd66a3c 100644 --- a/internal/lsp/handlers_end_to_end_test.go +++ b/internal/lsp/handlers_end_to_end_test.go @@ -66,6 +66,8 @@ func TestHandleCodeAction_ListsHexaiActions(t *testing.T) { // Prepare server var out bytes.Buffer s := &Server{logger: log.New(io.Discard, "", 0), docs: make(map[string]*document), out: &out} + s.chatSuffix = ">" + s.chatPrefixes = []string{"?","!",":",";"} s.llmClient = fakeLLM{resp: "// doc\nfunc add(a,b int) int { return a+b }"} // Document with a function @@ -190,7 +192,7 @@ func TestHandle_Dispatch_Initialize(t *testing.T) { func TestDetectAndHandleChat_InsertsReply(t *testing.T) { var out bytes.Buffer - s := &Server{logger: log.New(io.Discard, "", 0), docs: make(map[string]*document), out: &out} + s := NewServer(bytes.NewReader(nil), &out, log.New(io.Discard, "", 0), ServerOptions{}) s.llmClient = fakeLLM{resp: tut.MultilineChatReply()} uri := "file:///chat.go" // Place a prompt line with a supported trigger at EOL, then a blank line diff --git a/internal/lsp/handlers_helpers_test.go b/internal/lsp/handlers_helpers_test.go index eb7f273..24a9690 100644 --- a/internal/lsp/handlers_helpers_test.go +++ b/internal/lsp/handlers_helpers_test.go @@ -6,32 +6,32 @@ import ( ) func TestHasDoubleSemicolonTrigger(t *testing.T) { - cases := []struct { - line string - want bool - }{ - {";;todo; remove this", true}, - {"prefix ;;x; suffix", true}, - {";; spaced ;", false}, - {"no markers", false}, - {";;x ; space before close", false}, - } - for _, tc := range cases { - got := hasDoubleSemicolonTrigger(tc.line) - if got != tc.want { - t.Fatalf("hasDoubleSemicolonTrigger(%q)=%v want %v", tc.line, got, tc.want) - } - } + cases := []struct { + line string + want bool + }{ + {">>todo> remove this", true}, + {"prefix >>x> suffix", true}, + {">> spaced >", false}, + {"no markers", false}, + {">>x > space before close", false}, + } + for _, tc := range cases { + got := hasDoubleOpenTrigger(tc.line) + if got != tc.want { + t.Fatalf("hasDoubleOpenTrigger(%q)=%v want %v", tc.line, got, tc.want) + } + } } func TestCollectSemicolonMarkers(t *testing.T) { - line := "keep ;ok; this and ;another; that" - edits := collectSemicolonMarkers(line, 7) - if len(edits) != 2 { - t.Fatalf("expected 2 edits, got %d", len(edits)) - } - // Validate the first edit aligns with ;ok; - start := strings.Index(line, ";ok;") + line := "keep >ok> this and >another> that" + edits := collectSemicolonMarkers(line, 7) + if len(edits) != 2 { + t.Fatalf("expected 2 edits, got %d", len(edits)) + } + // Validate the first edit aligns with ;ok; + start := strings.Index(line, ">ok>") if start < 0 { t.Fatalf("test setup: missing ;ok;") } @@ -41,11 +41,11 @@ func TestCollectSemicolonMarkers(t *testing.T) { } func TestPromptRemovalEditsForLine_WholeLine(t *testing.T) { - line := ";;todo; remove this whole line" - edits := promptRemovalEditsForLine(line, 3) - if len(edits) != 1 { - t.Fatalf("expected 1 whole-line edit, got %d", len(edits)) - } + line := ">>todo> remove this whole line" + edits := promptRemovalEditsForLine(line, 3) + if len(edits) != 1 { + t.Fatalf("expected 1 whole-line edit, got %d", len(edits)) + } e := edits[0] if e.Range.Start.Line != 3 || e.Range.End.Line != 3 || e.Range.Start.Character != 0 || e.Range.End.Character != len(line) { t.Fatalf("unexpected range for whole-line removal: %+v", e.Range) diff --git a/internal/lsp/handlers_test.go b/internal/lsp/handlers_test.go index 5b84254..8fdd34f 100644 --- a/internal/lsp/handlers_test.go +++ b/internal/lsp/handlers_test.go @@ -14,8 +14,8 @@ func TestFindFirstInstructionInLine_NoMarker(t *testing.T) { } } -func TestFindFirstInstructionInLine_StrictSemicolon_Basic(t *testing.T) { - line := "prefix ;rename var; suffix" +func TestFindFirstInstructionInLine_StrictInline_Basic(t *testing.T) { + line := "prefix >rename var> suffix" instr, cleaned, ok := findFirstInstructionInLine(line) if !ok { t.Fatalf("expected ok=true") @@ -29,8 +29,8 @@ func TestFindFirstInstructionInLine_StrictSemicolon_Basic(t *testing.T) { } } -func TestFindFirstInstructionInLine_StrictSemicolon_TrailingSpacesTrimmed(t *testing.T) { - line := "code;fix; \t\t" +func TestFindFirstInstructionInLine_StrictInline_TrailingSpacesTrimmed(t *testing.T) { + line := "code>fix> \t\t" instr, cleaned, ok := findFirstInstructionInLine(line) if !ok { t.Fatalf("expected ok=true") @@ -43,17 +43,17 @@ func TestFindFirstInstructionInLine_StrictSemicolon_TrailingSpacesTrimmed(t *tes } } -func TestFindFirstInstructionInLine_Semicolon_InvalidPatterns(t *testing.T) { - cases := []string{ - "prefix ; bad; suffix", // space after first ';' ⇒ invalid - "prefix ;bad ; suffix", // space before closing ';' ⇒ invalid - "prefix ; ; suffix", // empty inner ⇒ invalid - } - for _, line := range cases { - if instr, _, ok := findFirstInstructionInLine(line); ok && instr != "" { - t.Fatalf("%q: expected no semicolon instruction; got instr=%q", line, instr) - } - } +func TestFindFirstInstructionInLine_Inline_InvalidPatterns(t *testing.T) { + cases := []string{ + "prefix > bad> suffix", // space after first '>' ⇒ invalid + "prefix >bad > suffix", // space before closing '>' ⇒ invalid + "prefix > > suffix", // empty inner ⇒ invalid + } + for _, line := range cases { + if instr, _, ok := findFirstInstructionInLine(line); ok && instr != "" { + t.Fatalf("%q: expected no inline instruction; got instr=%q", line, instr) + } + } } func TestFindFirstInstructionInLine_CBlockComment(t *testing.T) { @@ -126,22 +126,22 @@ func TestFindFirstInstructionInLine_DoubleDash(t *testing.T) { } } -func TestFindFirstInstructionInLine_EarliestWins_CommentOverSemicolon(t *testing.T) { - line := "aa // comment ;not this; trailing" +func TestFindFirstInstructionInLine_EarliestWins_CommentOverInline(t *testing.T) { + line := "aa // comment >not this> trailing" instr, cleaned, ok := findFirstInstructionInLine(line) if !ok { t.Fatalf("expected ok=true") } - if instr != "comment ;not this; trailing" { - t.Fatalf("instr got %q want %q", instr, "comment ;not this; trailing") - } + if instr != "comment >not this> trailing" { + t.Fatalf("instr got %q want %q", instr, "comment >not this> trailing") + } if cleaned != "aa" { t.Fatalf("cleaned got %q want %q", cleaned, "aa") } } -func TestFindFirstInstructionInLine_EarliestWins_SemicolonOverComment(t *testing.T) { - line := "aa ;short; // comment" +func TestFindFirstInstructionInLine_EarliestWins_InlineOverComment(t *testing.T) { + line := "aa >short> // comment" instr, cleaned, ok := findFirstInstructionInLine(line) if !ok { t.Fatalf("expected ok=true") @@ -155,21 +155,21 @@ func TestFindFirstInstructionInLine_EarliestWins_SemicolonOverComment(t *testing } } -func TestFindStrictSemicolonTag_Various(t *testing.T) { - // basic - if text, l, r, ok := findStrictSemicolonTag("pre;do it;post"); !ok || text != "do it" || l != 3 || r != 10 { - t.Fatalf("unexpected: ok=%v text=%q l=%d r=%d", ok, text, l, r) - } - // at start - if text, l, r, ok := findStrictSemicolonTag(";x;"); !ok || text != "x" || l != 0 || r != 3 { - t.Fatalf("unexpected at start: ok=%v text=%q l=%d r=%d", ok, text, l, r) - } - // double opening ';' should still allow a tag starting at the second ';' - if text, _, _, ok := findStrictSemicolonTag("prefix ;;bad; suffix"); !ok || text != "bad" { - t.Fatalf("unexpected double-open handling: ok=%v text=%q", ok, text) - } - // inner spaces directly after first ';' or before last ';' invalidate the tag - if _, _, _, ok := findStrictSemicolonTag("a; inner ;b"); ok { - t.Fatalf("expected invalid strict tag due to spaces at boundaries") - } +func TestFindStrictInlineTag_Various(t *testing.T) { + // basic + if text, l, r, ok := findStrictInlineTag("pre>do it>post"); !ok || text != "do it" || l != 3 || r != 10 { + t.Fatalf("unexpected: ok=%v text=%q l=%d r=%d", ok, text, l, r) + } + // at start + if text, l, r, ok := findStrictInlineTag(">x>"); !ok || text != "x" || l != 0 || r != 3 { + t.Fatalf("unexpected at start: ok=%v text=%q l=%d r=%d", ok, text, l, r) + } + // double opening '>>' should still allow a tag starting at the second '>' + if text, _, _, ok := findStrictInlineTag("prefix >>bad> suffix"); !ok || text != "bad" { + t.Fatalf("unexpected double-open handling: ok=%v text=%q", ok, text) + } + // inner spaces directly after first '>' or before last '>' invalidate the tag + if _, _, _, ok := findStrictInlineTag("a> inner >b"); ok { + t.Fatalf("expected invalid strict tag due to spaces at boundaries") + } } diff --git a/internal/lsp/handlers_utils.go b/internal/lsp/handlers_utils.go index 42b35a5..e2c35e3 100644 --- a/internal/lsp/handlers_utils.go +++ b/internal/lsp/handlers_utils.go @@ -9,6 +9,11 @@ import ( "time" ) +// Configurable inline trigger characters (default to '>') used by free helpers below. +// NewServer assigns these based on ServerOptions. +var inlineOpenChar byte = '>' +var inlineCloseChar byte = '>' + // llmRequestOpts builds request options from server settings. func (s *Server) llmRequestOpts() []llm.RequestOption { opts := []llm.RequestOption{llm.WithMaxTokens(s.maxTokens)} @@ -124,10 +129,10 @@ func isIdentChar(ch byte) bool { // Inline prompt utilities func lineHasInlinePrompt(line string) bool { - if _, _, _, ok := findStrictSemicolonTag(line); ok { - return true - } - return hasDoubleSemicolonTrigger(line) + if _, _, _, ok := findStrictInlineTag(line); ok { + return true + } + return hasDoubleOpenTrigger(line) } func leadingIndent(line string) string { @@ -164,61 +169,64 @@ func applyIndent(indent, suggestion string) string { // --- Inline marker parsing and general string utilities --- -// findStrictSemicolonTag finds ;text; with no space after first ';' and no space -// before the last ';' on the given line. Returns the text between semicolons, -// the start index of the opening ';', the end index just after the closing ';', -// and whether it was found. -func findStrictSemicolonTag(line string) (string, int, int, bool) { - pos := 0 - for pos < len(line) { - j := strings.Index(line[pos:], ";") - if j < 0 { - return "", 0, 0, false - } - j += pos - // ensure single ';' (not ';;') and non-space after - if j+1 >= len(line) || line[j+1] == ';' || line[j+1] == ' ' { - pos = j + 1 - continue - } - k := strings.Index(line[j+1:], ";") - if k < 0 { - return "", 0, 0, false - } - closeIdx := j + 1 + k - if closeIdx-1 < 0 || line[closeIdx-1] == ' ' { - pos = closeIdx + 1 - continue - } - inner := strings.TrimSpace(line[j+1 : closeIdx]) - if inner == "" { - pos = closeIdx + 1 - continue - } - end := closeIdx + 1 - return inner, j, end, true - } - return "", 0, 0, false +// findStrictInlineTag finds >text> (configurable), with no space after the first +// opening marker and no space immediately before the closing marker. Returns the +// text between markers, the start index, the end index just after closing, and ok. +func findStrictInlineTag(line string) (string, int, int, bool) { + pos := 0 + for pos < len(line) { + // find opening marker + j := strings.IndexByte(line[pos:], inlineOpenChar) + if j < 0 { + return "", 0, 0, false + } + j += pos + // ensure single open (not double) and non-space after + if j+1 >= len(line) || line[j+1] == inlineOpenChar || line[j+1] == ' ' { + pos = j + 1 + continue + } + // find closing marker + k := strings.IndexByte(line[j+1:], inlineCloseChar) + if k < 0 { + return "", 0, 0, false + } + closeIdx := j + 1 + k + if closeIdx-1 < 0 || line[closeIdx-1] == ' ' { + pos = closeIdx + 1 + continue + } + inner := strings.TrimSpace(line[j+1 : closeIdx]) + if inner == "" { + pos = closeIdx + 1 + continue + } + end := closeIdx + 1 + return inner, j, end, true + } + return "", 0, 0, false } // isBareDoubleSemicolon reports whether the line contains a standalone // double-semicolon marker with no inline content (";;" possibly with only // whitespace after it). It explicitly excludes the valid form ";;text;". -func isBareDoubleSemicolon(line string) bool { - t := strings.TrimSpace(line) - if !strings.Contains(t, ";;") { - return false - } - if hasDoubleSemicolonTrigger(t) { - return false - } - if strings.HasPrefix(t, ";;") { - rest := strings.TrimSpace(t[2:]) - if rest == "" || rest == ";" { - return true - } - } - return false +func isBareDoubleOpen(line string) bool { + t := strings.TrimSpace(line) + // check for double-open pattern + dbl := string([]byte{inlineOpenChar, inlineOpenChar}) + if !strings.Contains(t, dbl) { + return false + } + if hasDoubleOpenTrigger(t) { + return false + } + if strings.HasPrefix(t, dbl) { + rest := strings.TrimSpace(t[len(dbl):]) + if rest == "" || rest == ";" { + return true + } + } + return false } // stripDuplicateAssignmentPrefix removes a duplicated assignment prefix from the suggestion. @@ -401,79 +409,82 @@ func (s *Server) collectPromptRemovalEdits(uri string) []TextEdit { } func promptRemovalEditsForLine(line string, lineNum int) []TextEdit { - if hasDoubleSemicolonTrigger(line) { - return []TextEdit{{Range: Range{Start: Position{Line: lineNum, Character: 0}, End: Position{Line: lineNum, Character: len(line)}}, NewText: ""}} - } - return collectSemicolonMarkers(line, lineNum) + if hasDoubleOpenTrigger(line) { + return []TextEdit{{Range: Range{Start: Position{Line: lineNum, Character: 0}, End: Position{Line: lineNum, Character: len(line)}}, NewText: ""}} + } + return collectSemicolonMarkers(line, lineNum) } -func hasDoubleSemicolonTrigger(line string) bool { - pos := 0 - for pos < len(line) { - j := strings.Index(line[pos:], ";;") - if j < 0 { - return false - } - j += pos - contentStart := j + 2 - if contentStart >= len(line) { - return false - } - first := line[contentStart] - if first == ' ' || first == ';' { - pos = contentStart + 1 - continue - } - k := strings.Index(line[contentStart+1:], ";") - if k < 0 { - return false - } - closeIdx := contentStart + 1 + k - if closeIdx-1 >= 0 && line[closeIdx-1] == ' ' { - pos = closeIdx + 1 - continue - } - return true - } - return false +func hasDoubleOpenTrigger(line string) bool { + pos := 0 + for pos < len(line) { + // look for double-open sequence + dbl := string([]byte{inlineOpenChar, inlineOpenChar}) + j := strings.Index(line[pos:], dbl) + if j < 0 { + return false + } + j += pos + contentStart := j + len(dbl) + if contentStart >= len(line) { + return false + } + first := line[contentStart] + if first == ' ' || first == inlineOpenChar { + pos = contentStart + 1 + continue + } + // find closing + k := strings.IndexByte(line[contentStart+1:], inlineCloseChar) + if k < 0 { + return false + } + closeIdx := contentStart + 1 + k + if closeIdx-1 >= 0 && line[closeIdx-1] == ' ' { + pos = closeIdx + 1 + continue + } + return true + } + return false } func collectSemicolonMarkers(line string, lineNum int) []TextEdit { - var edits []TextEdit - startSemi := 0 - for startSemi < len(line) { - j := strings.Index(line[startSemi:], ";") - if j < 0 { - break - } - j += startSemi - k := strings.Index(line[j+1:], ";") - if k < 0 { - break - } - if j+1 >= len(line) || line[j+1] == ' ' { - startSemi = j + 1 - continue - } - if line[j+1] == ';' { - startSemi = j + 2 - continue - } - closeIdx := j + 1 + k - if closeIdx-1 < 0 || line[closeIdx-1] == ' ' { - startSemi = closeIdx + 1 - continue - } - if closeIdx-(j+1) < 1 { - startSemi = closeIdx + 1 - continue - } - endChar := closeIdx + 1 - if endChar < len(line) && line[endChar] == ' ' { - endChar++ - } - edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) - startSemi = endChar - } - return edits + var edits []TextEdit + startSemi := 0 + for startSemi < len(line) { + j := strings.IndexByte(line[startSemi:], inlineOpenChar) + if j < 0 { + break + } + j += startSemi + k := strings.IndexByte(line[j+1:], inlineCloseChar) + if k < 0 { + break + } + if j+1 >= len(line) || line[j+1] == ' ' { + startSemi = j + 1 + continue + } + if line[j+1] == inlineOpenChar { // skip double-open start + startSemi = j + 2 + continue + } + closeIdx := j + 1 + k + if closeIdx-1 < 0 || line[closeIdx-1] == ' ' { + startSemi = closeIdx + 1 + continue + } + if closeIdx-(j+1) < 1 { + startSemi = closeIdx + 1 + continue + } + endChar := closeIdx + 1 + if endChar < len(line) && line[endChar] == ' ' { + endChar++ + } + edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) + startSemi = endChar + } + return edits } diff --git a/internal/lsp/helpers_inline_prompt_test.go b/internal/lsp/helpers_inline_prompt_test.go new file mode 100644 index 0000000..81312b4 --- /dev/null +++ b/internal/lsp/helpers_inline_prompt_test.go @@ -0,0 +1,58 @@ +package lsp + +import ( + "encoding/json" + "testing" +) + +func TestLineHasInlinePrompt_BasicAndDoubleOpen(t *testing.T) { + // Basic inline + if !lineHasInlinePrompt("do >task> now") { + t.Fatalf("expected inline prompt detection for >text>") + } + // Double-open variant should be recognized as inline prompt too + if !lineHasInlinePrompt(">>replace>") { + t.Fatalf("expected inline prompt detection for >>text>") + } +} + +func TestIsTriggerEvent_TriggerCharNotAllowed(t *testing.T) { + s := newTestServer() + s.triggerChars = []string{"."} // only dot allowed + p := CompletionParams{Position: Position{Line:0, Character:3}} + if s.isTriggerEvent(p, "ab:") { // ':' not in triggerChars + t.Fatalf("expected false when TriggerCharacter not configured") + } +} + +func TestShouldSuppressForChatTriggerEOL_EmptySuffix_NoSuppression(t *testing.T) { + s := newTestServer() + s.chatSuffix = "" // disabled + p := CompletionParams{Position: Position{Line:0, Character:5}} + if s.shouldSuppressForChatTriggerEOL("What?>", p) { + t.Fatalf("expected no suppression when chat suffix is empty") + } +} + +func TestIsTriggerEvent_TriggerCharacterMissing_ReturnsFalse(t *testing.T) { + s := newTestServer() + // Context says TriggerCharacter, but none provided + ctx := struct{ TriggerKind int `json:"triggerKind"` }{TriggerKind: 2} + raw, _ := json.Marshal(ctx) + p := CompletionParams{Position: Position{Line:0, Character:1}, Context: json.RawMessage(raw)} + if s.isTriggerEvent(p, "a") { + t.Fatalf("expected false when TriggerCharacter kind with empty char") + } +} + +func TestIsTriggerEvent_TriggerForIncomplete_FallsBackToChar(t *testing.T) { + s := newTestServer() + s.triggerChars = []string{"."} + // TriggerKind=3 should consult fallback char check + ctx := struct{ TriggerKind int `json:"triggerKind"` }{TriggerKind: 3} + raw, _ := json.Marshal(ctx) + p := CompletionParams{Position: Position{Line:0, Character:2}, Context: json.RawMessage(raw)} + if !s.isTriggerEvent(p, "x.") { + t.Fatalf("expected true via fallback char for TriggerForIncomplete") + } +} diff --git a/internal/lsp/helpers_more_test.go b/internal/lsp/helpers_more_test.go index 64631f7..28d78a4 100644 --- a/internal/lsp/helpers_more_test.go +++ b/internal/lsp/helpers_more_test.go @@ -14,9 +14,9 @@ func TestLeadingAndApplyIndent(t *testing.T) { if out == "" || out[:2] != " " { t.Fatalf("applyIndent failed: %q", out) } } -func TestFindStrictSemicolonTag(t *testing.T) { - if _, _, _, ok := findStrictSemicolonTag(";do this; next"); !ok { t.Fatalf("expected strict tag") } - if _, _, _, ok := findStrictSemicolonTag("; spaced ;"); ok { t.Fatalf("should ignore spaced tag") } +func TestFindStrictInlineTag(t *testing.T) { + if _, _, _, ok := findStrictInlineTag(">do this> next"); !ok { t.Fatalf("expected strict tag") } + if _, _, _, ok := findStrictInlineTag("> spaced >"); ok { t.Fatalf("should ignore spaced tag") } } // hasDoubleSemicolonTrigger tested elsewhere @@ -34,6 +34,10 @@ func TestExtractRangeText(t *testing.T) { // multi-line got = extractRangeText(d, Range{Start: Position{Line:0, Character:0}, End: Position{Line:2, Character:2}}) if got != "a\nbc\nxy" { t.Fatalf("got %q", got) } + // invalid range (start after end) returns empty string + if got := extractRangeText(d, Range{Start: Position{Line:1, Character:5}, End: Position{Line:1, Character:2}}); got != "" { + t.Fatalf("expected empty for invalid range, got %q", got) + } } func TestRangesOverlapAndOrder(t *testing.T) { @@ -47,18 +51,18 @@ func TestRangesOverlapAndOrder(t *testing.T) { } func TestPromptRemovalEditsForLine(t *testing.T) { - edits := promptRemovalEditsForLine(";;do thing;", 3) + edits := promptRemovalEditsForLine(">>do thing>", 3) if len(edits) != 1 || edits[0].Range.Start.Line != 3 { t.Fatalf("expected full-line removal for double-semicolon") } - edits2 := promptRemovalEditsForLine(";act; and ;b;", 1) + edits2 := promptRemovalEditsForLine(">act> and >b>", 1) if len(edits2) == 0 { t.Fatalf("expected edits to remove strict markers") } } func TestCollectPromptRemovalEdits_MultiLine(t *testing.T) { s := newTestServer() uri := "file:///t.go" - s.setDocument(uri, "a\n;do; x\n;;wipe;\nend") + s.setDocument(uri, "a\n>do> x\n>>wipe>\nend") edits := s.collectPromptRemovalEdits(uri) if len(edits) < 2 { t.Fatalf("expected >=2 edits, got %d", len(edits)) } } @@ -89,9 +93,9 @@ func TestComputeTextEditAndFilter(t *testing.T) { if te2 == nil || te2.Range.Start.Character == 0 { t.Fatalf("expected param-range edit") } } -func TestIsBareDoubleSemicolon(t *testing.T) { - if !isBareDoubleSemicolon(";; ") { t.Fatalf("expected true") } - if isBareDoubleSemicolon(";;x;") { t.Fatalf("expected false for content form") } +func TestIsBareDoubleOpen(t *testing.T) { + if !isBareDoubleOpen(">> ") { t.Fatalf("expected true") } + if isBareDoubleOpen(">>x>") { t.Fatalf("expected false for content form") } } func TestIsDefiningNewFunction(t *testing.T) { diff --git a/internal/lsp/init_and_trigger_test.go b/internal/lsp/init_and_trigger_test.go index cdc907e..64253a9 100644 --- a/internal/lsp/init_and_trigger_test.go +++ b/internal/lsp/init_and_trigger_test.go @@ -45,8 +45,7 @@ func TestIsTriggerEvent_Variants(t *testing.T) { // 3) Fallback char left of cursor p3 := CompletionParams{Position: Position{Line:0, Character:3}} if !s.isTriggerEvent(p3, "ab:") { t.Fatalf("fallback char should trigger") } - // 4) Bare ';;' disables trigger + // 4) Bare double-open disables trigger p4 := CompletionParams{Position: Position{Line:0, Character:2}} - if s.isTriggerEvent(p4, ";;") { t.Fatalf("bare ;; should not trigger") } + if s.isTriggerEvent(p4, ">>") { t.Fatalf("bare double-open should not trigger") } } - diff --git a/internal/lsp/instruction_table_test.go b/internal/lsp/instruction_table_test.go index e92ffde..06364db 100644 --- a/internal/lsp/instruction_table_test.go +++ b/internal/lsp/instruction_table_test.go @@ -8,7 +8,7 @@ func TestFindFirstInstructionInLine_Table(t *testing.T) { line string instr string }{ - {"strict_semicolon", ";do; trailing", "do"}, + {"strict_inline_marker", ">do> trailing", "do"}, {"c_block", "x /* add docs */ y", "add docs"}, {"html_comment", "<!-- fix --> code", "fix"}, {"slash_slash", "code // please refactor", "please refactor"}, @@ -22,4 +22,3 @@ func TestFindFirstInstructionInLine_Table(t *testing.T) { } } } - diff --git a/internal/lsp/llm_stats_test.go b/internal/lsp/llm_stats_test.go new file mode 100644 index 0000000..9e27823 --- /dev/null +++ b/internal/lsp/llm_stats_test.go @@ -0,0 +1,11 @@ +package lsp + +import "testing" + +func TestLogLLMStats_CoversCounters(t *testing.T) { + s := newTestServer() + s.incSentCounters(10) + s.incRecvCounters(20) + s.logLLMStats() // just ensure it does not panic and executes +} + diff --git a/internal/lsp/postprocess_indent_test.go b/internal/lsp/postprocess_indent_test.go index 4b4ad2a..b546068 100644 --- a/internal/lsp/postprocess_indent_test.go +++ b/internal/lsp/postprocess_indent_test.go @@ -2,13 +2,12 @@ package lsp import "testing" -func TestPostProcessCompletion_IndentWithDoubleSemicolon(t *testing.T) { +func TestPostProcessCompletion_IndentWithDoubleOpen(t *testing.T) { s := newTestServer() - cleaned := s.postProcessCompletion("a\nb", "", " ;;gen;") + cleaned := s.postProcessCompletion("a\nb", "", " >>gen>") // Expect each non-empty line to be indented by two spaces want := " a\n b" if cleaned != want { t.Fatalf("got %q want %q", cleaned, want) } } - diff --git a/internal/lsp/provider_native_success_test.go b/internal/lsp/provider_native_success_test.go index 7db3844..fd7afad 100644 --- a/internal/lsp/provider_native_success_test.go +++ b/internal/lsp/provider_native_success_test.go @@ -31,3 +31,24 @@ func TestProviderNativeCompletion_Success(t *testing.T) { } } +type fakeCompleterIndent struct{} + +func (fakeCompleterIndent) Chat(context.Context, []llm.Message, ...llm.RequestOption) (string, error) { return "", nil } +func (fakeCompleterIndent) Name() string { return "prov" } +func (fakeCompleterIndent) DefaultModel() string { return "m" } +func (fakeCompleterIndent) CodeCompletion(context.Context, string, string, int, string, float64) ([]string, error) { + return []string{"a\nb"}, nil +} + +func TestProviderNativeCompletion_IndentWithDoubleOpen(t *testing.T) { + s := newTestServer() + s.llmClient = fakeCompleterIndent{} + current := " >>do>" // leading indent + double-open marker + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x.go"}, Position: Position{Line: 0, Character: len(current)}} + items, ok := s.tryProviderNativeCompletion(current, p, "", "", "func f(){}", "doc", false, "", false) + if !ok || len(items) == 0 { t.Fatalf("expected provider-native items") } + if items[0].TextEdit == nil { t.Fatalf("expected text edit") } + if got := items[0].TextEdit.NewText; len(got) < 2 || got[:2] != " " { + t.Fatalf("expected indentation applied, got %q", got) + } +} diff --git a/internal/lsp/server.go b/internal/lsp/server.go index 7a1007e..e040d08 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -2,14 +2,15 @@ package lsp import ( - "bufio" - "encoding/json" - "codeberg.org/snonux/hexai/internal/llm" - "codeberg.org/snonux/hexai/internal/logging" - "io" - "log" - "sync" - "time" + "bufio" + "encoding/json" + "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/logging" + "io" + "log" + "strings" + "sync" + "time" ) // Server implements a minimal LSP over stdio. @@ -51,6 +52,12 @@ type Server struct { // Dispatch table for JSON-RPC methods → handler functions handlers map[string]func(Request) + + // Configurable trigger characters + inlineOpen string + inlineClose string + chatSuffix string + chatPrefixes []string } // ServerOptions collects configuration for NewServer to avoid long parameter lists. @@ -67,6 +74,12 @@ type ServerOptions struct { ManualInvokeMinPrefix int CompletionDebounceMs int CompletionThrottleMs int + + // Inline/chat triggers + InlineOpen string + InlineClose string + ChatSuffix string + ChatPrefixes []string } func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server { @@ -109,6 +122,17 @@ func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) if opts.CompletionThrottleMs > 0 { s.throttleInterval = time.Duration(opts.CompletionThrottleMs) * time.Millisecond } + // Trigger character config (with sane defaults if missing) + if strings.TrimSpace(opts.InlineOpen) == "" { s.inlineOpen = ">" } else { s.inlineOpen = opts.InlineOpen } + if strings.TrimSpace(opts.InlineClose) == "" { s.inlineClose = ">" } else { s.inlineClose = opts.InlineClose } + if strings.TrimSpace(opts.ChatSuffix) == "" { s.chatSuffix = ">" } else { s.chatSuffix = opts.ChatSuffix } + if len(opts.ChatPrefixes) == 0 { s.chatPrefixes = []string{"?","!",":",";"} } else { s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) } + + // Assign package-level inline trigger chars for free helper functions + if s.inlineOpen != "" { inlineOpenChar = s.inlineOpen[0] } + if s.inlineClose != "" { inlineCloseChar = s.inlineClose[0] } + if s.chatSuffix != "" { chatSuffixChar = s.chatSuffix[0] } + if len(s.chatPrefixes) > 0 { chatPrefixSingles = append([]string{}, s.chatPrefixes...) } // Initialize dispatch table s.handlers = map[string]func(Request){ "initialize": s.handleInitialize, diff --git a/internal/lsp/transport_test.go b/internal/lsp/transport_test.go index 0a01acd..c00b405 100644 --- a/internal/lsp/transport_test.go +++ b/internal/lsp/transport_test.go @@ -17,6 +17,20 @@ func TestReadMessage_ParsesContentLength(t *testing.T) { if err != nil || string(got) != string(body) { t.Fatalf("readMessage failed: %v %q", err, string(got)) } } +func TestWriteMessage_FramesJSON(t *testing.T) { + var out bytes.Buffer + s := &Server{out: &out} + payload := struct{ JSONRPC string `json:"jsonrpc"`; Ping string `json:"ping"` }{JSONRPC: "2.0", Ping: "pong"} + s.writeMessage(payload) + got := out.String() + if !bytes.HasPrefix([]byte(got), []byte("Content-Length: ")) { t.Fatalf("missing Content-Length header: %q", got) } + // Header/body delimiter must be present + idx := bytes.Index([]byte(got), []byte("\r\n\r\n")) + if idx < 0 { t.Fatalf("missing CRLFCRLF delimiter: %q", got) } + body := got[idx+4:] + if body == "" || body[0] != '{' || body[len(body)-1] != '}' { t.Fatalf("body not JSON: %q", body) } +} + func stringInt(n int) string { if n == 0 { return "0" } var b [20]byte @@ -24,4 +38,3 @@ func stringInt(n int) string { for n > 0 { i--; b[i] = byte('0' + n%10); n /= 10 } return string(b[i:]) } - diff --git a/internal/lsp/triggers_config_test.go b/internal/lsp/triggers_config_test.go new file mode 100644 index 0000000..7fd6ecd --- /dev/null +++ b/internal/lsp/triggers_config_test.go @@ -0,0 +1,74 @@ +package lsp + +import ( + "bytes" + "encoding/json" + "io" + "log" + "testing" + "time" +) + +func TestShouldSuppressForChatTriggerEOL_CustomConfig(t *testing.T) { + s := newTestServer() + // Customize: only ")#" at EOL suppresses + s.chatSuffix = "#" + s.chatPrefixes = []string{")"} + + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x"}, Position: Position{Line:0, Character:6}} + if !s.shouldSuppressForChatTriggerEOL("ok)#", p) { + t.Fatalf("expected suppression for custom prefix+suffix at EOL") + } + if s.shouldSuppressForChatTriggerEOL("ok]#", p) { + t.Fatalf("did not expect suppression for non-matching prefix") + } +} + +func TestNewServer_AssignsTriggerGlobals_AndParsingUsesThem(t *testing.T) { + var out bytes.Buffer + s := NewServer(bytes.NewReader(nil), &out, log.New(io.Discard, "", 0), ServerOptions{ + InlineOpen: "<", InlineClose: ">", ChatSuffix: ")", ChatPrefixes: []string{":"}, + }) + _ = s // ensure server constructed applies globals + if inlineOpenChar != '<' || inlineCloseChar != '>' { + t.Fatalf("inline markers not applied: %q %q", string(inlineOpenChar), string(inlineCloseChar)) + } + if chatSuffixChar != ')' || len(chatPrefixSingles) == 0 || chatPrefixSingles[0] != ":" { + t.Fatalf("chat markers not applied: suffix=%q prefixes=%v", string(chatSuffixChar), chatPrefixSingles) + } + if txt, l, r, ok := findStrictInlineTag("x<do>y"); !ok || txt != "do" || l != 1 || r != 5 { + t.Fatalf("findStrictInlineTag failed: ok=%v txt=%q l=%d r=%d", ok, txt, l, r) + } + if got := stripTrailingTrigger("note:)"); got != "note:" { + t.Fatalf("stripTrailingTrigger failed: %q", got) + } +} + +func TestIsTriggerEvent_BareDoubleOpenBlocksEvenWithContextTriggerChar(t *testing.T) { + s := newTestServer() + s.inlineOpen = ">" // ensure bare ">>" check is active + s.triggerChars = []string{"."} + // LSP context indicates TriggerCharacter '.' but current line is bare ">>" + ctx := struct { + TriggerKind int `json:"triggerKind"` + TriggerCharacter string `json:"triggerCharacter"` + }{TriggerKind: 2, TriggerCharacter: "."} + raw, _ := json.Marshal(ctx) + p := CompletionParams{Position: Position{Line: 0, Character: 2}, Context: json.RawMessage(raw)} + if s.isTriggerEvent(p, ">>") { + t.Fatalf("bare double-open should block trigger event even with context trigger char") + } +} + +func TestDetectAndHandleChat_CustomConfig_InsertsReply(t *testing.T) { + var out bytes.Buffer + s := NewServer(bytes.NewReader(nil), &out, log.New(io.Discard, "", 0), ServerOptions{ChatSuffix: "#", ChatPrefixes: []string{")"}}) + s.llmClient = fakeLLM{resp: "Hello\nmulti-line reply"} + uri := "file:///chat2.go" + s.setDocument(uri, "ok)#\n\n") + out.Reset() + s.detectAndHandleChat(uri) + // Give time for applyEdit request + for i := 0; i < 20 && out.Len() == 0; i++ { time.Sleep(10 * time.Millisecond) } + if out.Len() == 0 { t.Fatalf("no output written for custom chat config") } +} |
