csharpdeeb25a2 | 1 | namespace CascadeIDE.Features.Editor.Application; |
| 2 | |
| 3 | /// <summary> |
| 4 | /// Семантическая проекция для слоя: полосы диагностик → <see cref="EditorSemanticSnapshot"/> (ADR 0103). |
| 5 | /// Сборка per-док: <see cref="EditorDocumentHudLayer"/>; баннер (текст) — <see cref="Presentation.EditorHudBannerTextComposer"/> + VM. |
| 6 | /// </summary> |
| 7 | public sealed class EditorHudEngine |
| 8 | { |
| 9 | private Func<string?, IReadOnlyList<EditorDiagnosticStrip>>? _getStripsForFile; |
| 10 | |
| 11 | /// <summary>Последняя проекция после <see cref="OnStabilizedInput"/>; для отладки и будущих inline-слоёв.</summary> |
| 12 | public EditorSemanticSnapshot? LastSnapshot { get; private set; } |
| 13 | |
| 14 | /// <summary>Источник полос диагностик по пути (обычно <c>WorkspaceDiagnosticsCoordinator.GetStripsForFile</c>).</summary> |
| 15 | public void ConfigureDiagnostics(Func<string?, IReadOnlyList<EditorDiagnosticStrip>>? getStripsForFile) => |
| 16 | _getStripsForFile = getStripsForFile; |
| 17 | |
| 18 | public void OnStabilizedInput(EditorInputDelta delta) |
| 19 | { |
| 20 | if (_getStripsForFile is null) |
| 21 | { |
| 22 | LastSnapshot = null; |
| 23 | return; |
| 24 | } |
| 25 | |
| 26 | var strips = _getStripsForFile(delta.FilePath); |
| 27 | LastSnapshot = SemanticProjectionPipeline.FromDiagnosticStrips(strips); |
| 28 | } |
| 29 | } |
| 30 | |
View only · write via MCP/CIDE