get razor syntax highlighting from workspace

This commit is contained in:
Matt Parker
2025-09-16 18:54:50 +10:00
parent cc7e766966
commit f446ef1655
8 changed files with 115 additions and 72 deletions

View File

@@ -139,6 +139,7 @@ public partial class CustomHighlighter : SyntaxHighlighter
"method name" => new Color("dcdcaa"),
"extension method name" => new Color("dcdcaa"),
"property name" => new Color("dcdcdc"),
"field name" => new Color("dcdcdc"),
"static symbol" => new Color("dcdcaa"),
"parameter name" => new Color("9cdcfe"),
"local name" => new Color("9cdcfe"),
@@ -150,7 +151,7 @@ public partial class CustomHighlighter : SyntaxHighlighter
// Misc
"excluded code" => new Color("a9a9a9"),
_ => new Color("dcdcdc")
_ => new Color("f27718") // orange, warning color for unhandled classifications
};
}
}

View File

@@ -96,7 +96,7 @@ public partial class IdeRoot : Control
var infraProject = solutionModel.AllProjects.Single(s => s.Name == "Infrastructure");
var diFile = infraProject.Files.Single(s => s.Name == "DependencyInjection.cs");
await this.InvokeAsync(async () => await _sharpIdeCodeEdit.SetSharpIdeFile(diFile));
await this.InvokeDeferredAsync(async () => await _sharpIdeCodeEdit.SetSharpIdeFile(diFile));
//var runnableProject = solutionModel.AllProjects.First(s => s.IsRunnable);
//await this.InvokeAsync(() => _runPanel.NewRunStarted(runnableProject));

View File

@@ -162,6 +162,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
});
}
// TODO: Ensure not running on UI thread
public async Task SetSharpIdeFile(SharpIdeFile file)
{
_currentFile = file;
@@ -169,11 +170,12 @@ public partial class SharpIdeCodeEdit : CodeEdit
_fileChangingSuppressBreakpointToggleEvent = true;
SetText(fileContents);
_fileChangingSuppressBreakpointToggleEvent = false;
var syntaxHighlighting = await RoslynAnalysis.GetDocumentSyntaxHighlighting(_currentFile);
var razorSyntaxHighlighting = await RoslynAnalysis.GetRazorDocumentSyntaxHighlighting(_currentFile);
SetSyntaxHighlightingModel(syntaxHighlighting, razorSyntaxHighlighting);
var diagnostics = await RoslynAnalysis.GetDocumentDiagnostics(_currentFile);
SetDiagnosticsModel(diagnostics);
var syntaxHighlighting = RoslynAnalysis.GetDocumentSyntaxHighlighting(_currentFile);
var razorSyntaxHighlighting = RoslynAnalysis.GetRazorDocumentSyntaxHighlighting(_currentFile);
var diagnostics = RoslynAnalysis.GetDocumentDiagnostics(_currentFile);
await Task.WhenAll(syntaxHighlighting, razorSyntaxHighlighting);
SetSyntaxHighlightingModel(await syntaxHighlighting, await razorSyntaxHighlighting);
SetDiagnosticsModel(await diagnostics);
}
public void UnderlineRange(int line, int caretStartCol, int caretEndCol, Color color, float thickness = 1.5f)