CodeEdit icon indicating copy to clipboard operation
CodeEdit copied to clipboard

✨ Display Issues as Line Annotations In Source Editor

Open austincondiff opened this issue 9 months ago • 0 comments

Description

Use the newly created DiagnosticManager to provide file-specific diagnostics to the editor via LineAnnotations. This connection allows visual issues to appear directly in the source editor view below the affected lines.

Requirements

  • Convert DiagnosticIssue instances for the current file into LineAnnotation objects:
    struct LineAnnotation: Hashable, Identifiable {
        let id: UUID = UUID()
        let line: Int
        let column: Int
        let severity: DiagnosticIssue.Severity
        let text: String
    }
    
  • Extend DiagnosticManager with a helper:
    func annotations(for file: URL) -> Set<LineAnnotation>
    
  • In views where CodeEditSourceEditor is used:
    • Access the current file’s annotations using the manager
    • Pass them into the editor view via:
    annotations: Set<LineAnnotation>
    
  • The editor should already know how to render the annotations; this task is only concerned with wiring up the data source.

Additional Context

This connects the data produced by DiagnosticManager to line annotations introduced in CodeEditSourceEditor. This is a key step in surfacing diagnostics in a context-aware and developer-friendly way.

Later extensions might include showing annotations from multiple sources, updating annotations live from LSP, or supporting quick fixes from the underlying DiagnosticIssue.

Related Issues

  • #2014 (pre-requisite)
  • https://github.com/CodeEditApp/CodeEditSourceEditor/issues/297 (pre-requisite)
  • #354

austincondiff avatar Apr 02 '25 07:04 austincondiff