feat(editor): Implemented / overridden gutter markers (#106)

Adds gutter markers for type hierarchies: ↓ "Is implemented / Has subclasses / Is overridden" on types and methods with implementations, ↑ "Implements / Overrides method in X" on methods that implement or override a supertype method. One target navigates, several open the Choose Implementation popup. Settings › Editor › General › Gutter Icons gets two toggles.

Markers come from the language server: a new batched `lsp_implementations` command (up to 4 concurrent, cancellable, sharing the goto query path) for ↓, and the Super Method lookup for ↑, which now prefers the overload with matching parameters (also fixes ⌘U on overloads). Only declarations near the viewport are queried, debounced, cached per document version and cancelled when superseded. Works for any server with implementation / type hierarchy support; servers without type hierarchy show ↓ only.

Fixes #99

Claude-Session: https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
Цей коміт міститься в:
l0ng-ai authored and GitHub committed 2026-10-27 21:02:54 +08:00
1 джерело 6de6b33449
коміт 2fe6b7b87b
27 files changed
+1252 -22

No files matched your search

+12
Переглянути файл
@@ -536,6 +536,18 @@ const GUTTER = editorPage({
component: () => <GutterGroup id="run" label="Run configurations and tests" />,
},
{ t: "custom", label: "Bookmarks", component: () => <GutterGroup id="bookmarks" label="Bookmarks" /> },
{
t: "custom",
label: "Implemented and overridden",
keywords: ["implementations", "subclasses", "inheritors"],
component: () => <GutterGroup id="inheritors" label="Implemented and overridden declarations" />,
},
{
t: "custom",
label: "Implementing and overriding",
keywords: ["super method", "overrides", "implements"],
component: () => <GutterGroup id="supers" label="Implementing and overriding methods" />,
},
],
},
],