diff --git a/src/SharpIDE.Application/Features/Analysis/CodeFixProviderLoader.cs b/src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeFixProviderLoader.cs similarity index 97% rename from src/SharpIDE.Application/Features/Analysis/CodeFixProviderLoader.cs rename to src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeFixProviderLoader.cs index 0563232..30315dc 100644 --- a/src/SharpIDE.Application/Features/Analysis/CodeFixProviderLoader.cs +++ b/src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeFixProviderLoader.cs @@ -3,7 +3,7 @@ using System.Composition.Hosting; using System.Reflection; using Microsoft.CodeAnalysis.CodeFixes; -namespace SharpIDE.Application.Features.Analysis; +namespace SharpIDE.Application.Features.Analysis.FixLoaders; public static class CodeFixProviderLoader { diff --git a/src/SharpIDE.Application/Features/Analysis/CodeRefactoringProviderLoader.cs b/src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeRefactoringProviderLoader.cs similarity index 96% rename from src/SharpIDE.Application/Features/Analysis/CodeRefactoringProviderLoader.cs rename to src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeRefactoringProviderLoader.cs index 2da86f2..47c3b4d 100644 --- a/src/SharpIDE.Application/Features/Analysis/CodeRefactoringProviderLoader.cs +++ b/src/SharpIDE.Application/Features/Analysis/FixLoaders/CodeRefactoringProviderLoader.cs @@ -2,7 +2,7 @@ using System.Reflection; using Microsoft.CodeAnalysis.CodeRefactorings; -namespace SharpIDE.Application.Features.Analysis; +namespace SharpIDE.Application.Features.Analysis.FixLoaders; public static class CodeRefactoringProviderLoader { diff --git a/src/SharpIDE.Application/Features/Analysis/CustomSemanticTokensVisitor.cs b/src/SharpIDE.Application/Features/Analysis/Razor/CustomSemanticTokensVisitor.cs similarity index 99% rename from src/SharpIDE.Application/Features/Analysis/CustomSemanticTokensVisitor.cs rename to src/SharpIDE.Application/Features/Analysis/Razor/CustomSemanticTokensVisitor.cs index 3dbdd54..b2042f8 100644 --- a/src/SharpIDE.Application/Features/Analysis/CustomSemanticTokensVisitor.cs +++ b/src/SharpIDE.Application/Features/Analysis/Razor/CustomSemanticTokensVisitor.cs @@ -1,9 +1,9 @@ using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Text; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.CodeAnalysis.Razor.SemanticTokens; +using Microsoft.CodeAnalysis.Text; -namespace SharpIDE.Application.Features.Analysis; +namespace SharpIDE.Application.Features.Analysis.Razor; // https://github.com/dotnet/razor/blob/main/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SemanticTokens/SemanticTokensVisitor.cs internal sealed class CustomSemanticTokensVisitor : SyntaxWalker diff --git a/src/SharpIDE.Application/Features/Analysis/TokenTypeProvider.cs b/src/SharpIDE.Application/Features/Analysis/Razor/TokenTypeProvider.cs similarity index 94% rename from src/SharpIDE.Application/Features/Analysis/TokenTypeProvider.cs rename to src/SharpIDE.Application/Features/Analysis/Razor/TokenTypeProvider.cs index 45a1c9f..b0a0e56 100644 --- a/src/SharpIDE.Application/Features/Analysis/TokenTypeProvider.cs +++ b/src/SharpIDE.Application/Features/Analysis/Razor/TokenTypeProvider.cs @@ -3,7 +3,7 @@ using System.Reflection; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.SemanticTokens; -namespace SharpIDE.Application.Features.Analysis; +namespace SharpIDE.Application.Features.Analysis.Razor; public static class TokenTypeProvider { diff --git a/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs b/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs index 67ca0bb..1419277 100644 --- a/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs +++ b/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs @@ -15,6 +15,8 @@ using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Remote.Razor.SemanticTokens; using Microsoft.CodeAnalysis.Text; using NuGet.Packaging; +using SharpIDE.Application.Features.Analysis.FixLoaders; +using SharpIDE.Application.Features.Analysis.Razor; using SharpIDE.Application.Features.SolutionDiscovery; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.RazorAccess; @@ -202,29 +204,25 @@ public static class RoslynAnalysis List relevantTypes = ["razorDirective", "razorTransition", "markupTextLiteral", "markupTagDelimiter", "markupElement", "razorComponentElement", "razorComponentAttribute", "razorComment", "razorCommentTransition", "razorCommentStar", "markupOperator", "markupAttributeQuote"]; var ranges = new List(); CustomSemanticTokensVisitor.AddSemanticRanges(ranges, razorCodeDocument, generatedDocSyntaxRoot!.FullSpan, _semanticTokensLegendService!, false); - var relevantRanges = ranges.Select(s => - { - var kind = _semanticTokensLegendService!.TokenTypes.All[s.Kind]; - return new TranslatedSemanticRange { Range = s, Kind = kind }; - }).Where(s => relevantTypes.Contains(s.Kind)).ToList(); //var allTypes = ranges.Select(s => _semanticTokensLegendService!.TokenTypes.All[s.Kind]).Distinct().ToList(); - var semanticRangeRazorSpans = relevantRanges.Select(s => - { - var linePositionSpan = s.Range.AsLinePositionSpan(); - var textSpan = razorText.GetTextSpan(linePositionSpan); - var sourceSpan = new SourceSpan( - fileModel.Path, - textSpan.Start, - linePositionSpan.Start.Line, - linePositionSpan.Start.Character, - textSpan.Length, - 1, - linePositionSpan.End.Character - ); - - return new SharpIdeRazorClassifiedSpan(sourceSpan.ToSharpIdeSourceSpan(), SharpIdeRazorSpanKind.Markup, null, s.Kind); - }).ToList(); + var semanticRangeRazorSpans = ranges + .Where(s => relevantTypes.Contains(_semanticTokensLegendService!.TokenTypes.All[s.Kind])) + .Select(s => + { + var linePositionSpan = s.AsLinePositionSpan(); + var textSpan = razorText.GetTextSpan(linePositionSpan); + var sourceSpan = new SourceSpan( + fileModel.Path, + textSpan.Start, + linePositionSpan.Start.Line, + linePositionSpan.Start.Character, + textSpan.Length, + 1, + linePositionSpan.End.Character + ); + return new SharpIdeRazorClassifiedSpan(sourceSpan.ToSharpIdeSourceSpan(), SharpIdeRazorSpanKind.Markup, null, _semanticTokensLegendService!.TokenTypes.All[s.Kind]); + }).ToList(); // var debugMappedBackTranslatedSemanticRanges = relevantRanges.Select(s => // { diff --git a/src/SharpIDE.Application/Features/Analysis/TranslatedSemanticRange.cs b/src/SharpIDE.Application/Features/Analysis/TranslatedSemanticRange.cs deleted file mode 100644 index 29a2869..0000000 --- a/src/SharpIDE.Application/Features/Analysis/TranslatedSemanticRange.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.CodeAnalysis.Razor.SemanticTokens; - -namespace SharpIDE.Application.Features.Analysis; - -public class TranslatedSemanticRange -{ - public required SemanticRange Range { get; set; } - public required string Kind { get; set; } -}