refactor
This commit is contained in:
@@ -3,7 +3,7 @@ using System.Composition.Hosting;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.CodeAnalysis.CodeFixes;
|
using Microsoft.CodeAnalysis.CodeFixes;
|
||||||
|
|
||||||
namespace SharpIDE.Application.Features.Analysis;
|
namespace SharpIDE.Application.Features.Analysis.FixLoaders;
|
||||||
|
|
||||||
public static class CodeFixProviderLoader
|
public static class CodeFixProviderLoader
|
||||||
{
|
{
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.CodeAnalysis.CodeRefactorings;
|
using Microsoft.CodeAnalysis.CodeRefactorings;
|
||||||
|
|
||||||
namespace SharpIDE.Application.Features.Analysis;
|
namespace SharpIDE.Application.Features.Analysis.FixLoaders;
|
||||||
|
|
||||||
public static class CodeRefactoringProviderLoader
|
public static class CodeRefactoringProviderLoader
|
||||||
{
|
{
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
using Microsoft.CodeAnalysis.Text;
|
|
||||||
using Microsoft.AspNetCore.Razor.Language.Syntax;
|
using Microsoft.AspNetCore.Razor.Language.Syntax;
|
||||||
using Microsoft.CodeAnalysis.Razor.SemanticTokens;
|
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
|
// https://github.com/dotnet/razor/blob/main/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SemanticTokens/SemanticTokensVisitor.cs
|
||||||
internal sealed class CustomSemanticTokensVisitor : SyntaxWalker
|
internal sealed class CustomSemanticTokensVisitor : SyntaxWalker
|
||||||
@@ -3,7 +3,7 @@ using System.Reflection;
|
|||||||
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
|
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
|
||||||
using Microsoft.CodeAnalysis.Razor.SemanticTokens;
|
using Microsoft.CodeAnalysis.Razor.SemanticTokens;
|
||||||
|
|
||||||
namespace SharpIDE.Application.Features.Analysis;
|
namespace SharpIDE.Application.Features.Analysis.Razor;
|
||||||
|
|
||||||
public static class TokenTypeProvider
|
public static class TokenTypeProvider
|
||||||
{
|
{
|
||||||
@@ -15,6 +15,8 @@ using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem;
|
|||||||
using Microsoft.CodeAnalysis.Remote.Razor.SemanticTokens;
|
using Microsoft.CodeAnalysis.Remote.Razor.SemanticTokens;
|
||||||
using Microsoft.CodeAnalysis.Text;
|
using Microsoft.CodeAnalysis.Text;
|
||||||
using NuGet.Packaging;
|
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;
|
||||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||||
using SharpIDE.RazorAccess;
|
using SharpIDE.RazorAccess;
|
||||||
@@ -202,29 +204,25 @@ public static class RoslynAnalysis
|
|||||||
List<string> relevantTypes = ["razorDirective", "razorTransition", "markupTextLiteral", "markupTagDelimiter", "markupElement", "razorComponentElement", "razorComponentAttribute", "razorComment", "razorCommentTransition", "razorCommentStar", "markupOperator", "markupAttributeQuote"];
|
List<string> relevantTypes = ["razorDirective", "razorTransition", "markupTextLiteral", "markupTagDelimiter", "markupElement", "razorComponentElement", "razorComponentAttribute", "razorComment", "razorCommentTransition", "razorCommentStar", "markupOperator", "markupAttributeQuote"];
|
||||||
var ranges = new List<SemanticRange>();
|
var ranges = new List<SemanticRange>();
|
||||||
CustomSemanticTokensVisitor.AddSemanticRanges(ranges, razorCodeDocument, generatedDocSyntaxRoot!.FullSpan, _semanticTokensLegendService!, false);
|
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 allTypes = ranges.Select(s => _semanticTokensLegendService!.TokenTypes.All[s.Kind]).Distinct().ToList();
|
||||||
var semanticRangeRazorSpans = relevantRanges.Select(s =>
|
var semanticRangeRazorSpans = ranges
|
||||||
{
|
.Where(s => relevantTypes.Contains(_semanticTokensLegendService!.TokenTypes.All[s.Kind]))
|
||||||
var linePositionSpan = s.Range.AsLinePositionSpan();
|
.Select(s =>
|
||||||
var textSpan = razorText.GetTextSpan(linePositionSpan);
|
{
|
||||||
var sourceSpan = new SourceSpan(
|
var linePositionSpan = s.AsLinePositionSpan();
|
||||||
fileModel.Path,
|
var textSpan = razorText.GetTextSpan(linePositionSpan);
|
||||||
textSpan.Start,
|
var sourceSpan = new SourceSpan(
|
||||||
linePositionSpan.Start.Line,
|
fileModel.Path,
|
||||||
linePositionSpan.Start.Character,
|
textSpan.Start,
|
||||||
textSpan.Length,
|
linePositionSpan.Start.Line,
|
||||||
1,
|
linePositionSpan.Start.Character,
|
||||||
linePositionSpan.End.Character
|
textSpan.Length,
|
||||||
);
|
1,
|
||||||
|
linePositionSpan.End.Character
|
||||||
return new SharpIdeRazorClassifiedSpan(sourceSpan.ToSharpIdeSourceSpan(), SharpIdeRazorSpanKind.Markup, null, s.Kind);
|
);
|
||||||
}).ToList();
|
return new SharpIdeRazorClassifiedSpan(sourceSpan.ToSharpIdeSourceSpan(), SharpIdeRazorSpanKind.Markup, null, _semanticTokensLegendService!.TokenTypes.All[s.Kind]);
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
// var debugMappedBackTranslatedSemanticRanges = relevantRanges.Select(s =>
|
// var debugMappedBackTranslatedSemanticRanges = relevantRanges.Select(s =>
|
||||||
// {
|
// {
|
||||||
|
|||||||
@@ -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; }
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user