Forge
csharpdeeb25a2
1namespace 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>
7public 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