diff --git a/SharpIDE.sln b/SharpIDE.sln index 2d911b0..4f05fb3 100644 --- a/SharpIDE.sln +++ b/SharpIDE.sln @@ -26,8 +26,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{B6835010 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Roslyn.Benchmarks", "tests\Roslyn.Benchmarks\Roslyn.Benchmarks.csproj", "{252CE098-2F9A-4DA3-A172-EE1167B335BF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpIDE.RazorAccess", "src\SharpIDE.RazorAccess\SharpIDE.RazorAccess.csproj", "{0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{DABBDFD2-C631-439C-9ACB-EDDF659D5257}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GodotServiceDefaults", "tools\GodotServiceDefaults\GodotServiceDefaults.csproj", "{C54A5E24-8F16-413F-87F1-BD5E57D2AC1E}" @@ -96,18 +94,6 @@ Global {252CE098-2F9A-4DA3-A172-EE1167B335BF}.Release|x64.Build.0 = Release|Any CPU {252CE098-2F9A-4DA3-A172-EE1167B335BF}.Release|x86.ActiveCfg = Release|Any CPU {252CE098-2F9A-4DA3-A172-EE1167B335BF}.Release|x86.Build.0 = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|x64.ActiveCfg = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|x64.Build.0 = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|x86.ActiveCfg = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Debug|x86.Build.0 = Debug|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|Any CPU.Build.0 = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|x64.ActiveCfg = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|x64.Build.0 = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|x86.ActiveCfg = Release|Any CPU - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99}.Release|x86.Build.0 = Release|Any CPU {C54A5E24-8F16-413F-87F1-BD5E57D2AC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C54A5E24-8F16-413F-87F1-BD5E57D2AC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU {C54A5E24-8F16-413F-87F1-BD5E57D2AC1E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -164,7 +150,6 @@ Global {E35167E1-0FF4-4194-97A8-CC95EDA224CD} = {F4ED837F-888A-4D01-BCED-C360B9CE0865} {D7D5D39E-DA3A-4B10-8F40-B07B769347F4} = {F4ED837F-888A-4D01-BCED-C360B9CE0865} {252CE098-2F9A-4DA3-A172-EE1167B335BF} = {B6835010-35FA-4C74-AB48-009FB923185D} - {0DE5B721-4C17-4A93-A94B-5DEA9CAAAE99} = {F4ED837F-888A-4D01-BCED-C360B9CE0865} {C54A5E24-8F16-413F-87F1-BD5E57D2AC1E} = {DABBDFD2-C631-439C-9ACB-EDDF659D5257} {CF00AC9C-F796-4C23-8D69-370F494999D7} = {DABBDFD2-C631-439C-9ACB-EDDF659D5257} {D306410D-3A28-4F1B-A09B-CA10041A7C53} = {F4ED837F-888A-4D01-BCED-C360B9CE0865} diff --git a/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorClassifiedSpan.cs b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorClassifiedSpan.cs new file mode 100644 index 0000000..e80235f --- /dev/null +++ b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorClassifiedSpan.cs @@ -0,0 +1,13 @@ +namespace SharpIDE.Application.Features.Analysis.Razor; + +public record struct SharpIdeRazorClassifiedSpan(SharpIdeRazorSourceSpan Span, SharpIdeRazorSpanKind Kind, string? CodeClassificationType = null, string? VsSemanticRangeType = null); + +public enum SharpIdeRazorSpanKind +{ + Transition, + MetaCode, + Comment, + Code, + Markup, + None, +} diff --git a/src/SharpIDE.RazorAccess/SharpIdeRazorSourceMapping.cs b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceMapping.cs similarity index 96% rename from src/SharpIDE.RazorAccess/SharpIdeRazorSourceMapping.cs rename to src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceMapping.cs index c0ad141..689eb9e 100644 --- a/src/SharpIDE.RazorAccess/SharpIdeRazorSourceMapping.cs +++ b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceMapping.cs @@ -2,7 +2,7 @@ using System.Globalization; using Microsoft.AspNetCore.Razor.Language; using Microsoft.Extensions.Internal; -namespace SharpIDE.RazorAccess; +namespace SharpIDE.Application.Features.Analysis.Razor; public sealed class SharpIdeRazorSourceMapping( SharpIdeRazorSourceSpan originalSpan, diff --git a/src/SharpIDE.RazorAccess/SharpIdeRazorSourceSpan.cs b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceSpan.cs similarity index 97% rename from src/SharpIDE.RazorAccess/SharpIdeRazorSourceSpan.cs rename to src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceSpan.cs index 025335e..704d32c 100644 --- a/src/SharpIDE.RazorAccess/SharpIdeRazorSourceSpan.cs +++ b/src/SharpIDE.Application/Features/Analysis/Razor/SharpIdeRazorSourceSpan.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Text; using Microsoft.Extensions.Internal; -namespace SharpIDE.RazorAccess; +namespace SharpIDE.Application.Features.Analysis.Razor; public readonly struct SharpIdeRazorSourceSpan( string filePath, diff --git a/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs b/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs index 406ddee..db22765 100644 --- a/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs +++ b/src/SharpIDE.Application/Features/Analysis/RoslynAnalysis.cs @@ -32,7 +32,6 @@ using SharpIDE.Application.Features.Analysis.Razor; using SharpIDE.Application.Features.Build; using SharpIDE.Application.Features.SolutionDiscovery; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; -using SharpIDE.RazorAccess; using CodeAction = Microsoft.CodeAnalysis.CodeActions.CodeAction; using CompletionItem = Microsoft.CodeAnalysis.Completion.CompletionItem; using CompletionList = Microsoft.CodeAnalysis.Completion.CompletionList; diff --git a/src/SharpIDE.Application/SharpIDE.Application.csproj b/src/SharpIDE.Application/SharpIDE.Application.csproj index 6667cc1..5d5f1f3 100644 --- a/src/SharpIDE.Application/SharpIDE.Application.csproj +++ b/src/SharpIDE.Application/SharpIDE.Application.csproj @@ -62,10 +62,6 @@ - - - - diff --git a/src/SharpIDE.Godot/Features/CodeEditor/CustomSyntaxHighlighter.cs b/src/SharpIDE.Godot/Features/CodeEditor/CustomSyntaxHighlighter.cs index 32e5e1b..0f7b29b 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/CustomSyntaxHighlighter.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/CustomSyntaxHighlighter.cs @@ -4,8 +4,8 @@ using Godot.Collections; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Classification; using SharpIDE.Application.Features.Analysis; +using SharpIDE.Application.Features.Analysis.Razor; using SharpIDE.Godot.Features.CodeEditor; -using SharpIDE.RazorAccess; namespace SharpIDE.Godot; diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs index 4a5e5e6..785738c 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs @@ -14,6 +14,7 @@ using R3; using Roslyn.Utilities; using SharpIDE.Application; using SharpIDE.Application.Features.Analysis; +using SharpIDE.Application.Features.Analysis.Razor; using SharpIDE.Application.Features.Debugging; using SharpIDE.Application.Features.Events; using SharpIDE.Application.Features.FilePersistence; @@ -24,7 +25,6 @@ using SharpIDE.Application.Features.SolutionDiscovery; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Godot.Features.Problems; using SharpIDE.Godot.Features.SymbolLookup; -using SharpIDE.RazorAccess; using Task = System.Threading.Tasks.Task; namespace SharpIDE.Godot.Features.CodeEditor; diff --git a/src/SharpIDE.RazorAccess/RazorAccessors.cs b/src/SharpIDE.RazorAccess/RazorAccessors.cs deleted file mode 100644 index e83feb2..0000000 --- a/src/SharpIDE.RazorAccess/RazorAccessors.cs +++ /dev/null @@ -1,81 +0,0 @@ -extern alias WorkspaceAlias; -using System.Collections.Immutable; -using Microsoft.AspNetCore.Razor.Language; -using RazorCodeDocumentExtensions = WorkspaceAlias::Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions; - -namespace SharpIDE.RazorAccess; - -public static class RazorAccessors -{ - //private static RazorProjectEngine? _razorProjectEngine; - - // I didn't end up using the Razor ClassifiedSpans - public static (ImmutableArray, List) GetSpansAndMappingsForRazorCodeDocument(RazorCodeDocument razorCodeDocument, RazorCSharpDocument razorCSharpDocument) - { - var razorSpans = RazorCodeDocumentExtensions.GetClassifiedSpans(razorCodeDocument); - var sharpIdeSpans = razorSpans.Select(s => new SharpIdeRazorClassifiedSpan(s.Span.ToSharpIdeSourceSpan(), s.Kind.ToSharpIdeSpanKind())).ToList(); - - var result = (sharpIdeSpans.ToImmutableArray(), razorCSharpDocument.SourceMappings.Select(s => s.ToSharpIdeSourceMapping()).ToList()); - return result; - } - - // public static ImmutableArray GetClassifiedSpansForRazorCodeDocument(RazorCodeDocument razorCodeDocument) - // { - // var razorSpans = RazorCodeDocumentExtensions.GetClassifiedSpans(razorCodeDocument); - // return razorSpans; - // } - - // public static (ImmutableArray, SourceText Text, List) GetClassifiedSpans(SourceText sourceText, SourceText importsSourceText, string razorDocumentFilePath, string projectDirectory) - // { - // var razorSourceDocument = RazorSourceDocument.Create(sourceText.ToString(), razorDocumentFilePath); - // var importsRazorSourceDocument = RazorSourceDocument.Create(importsSourceText.ToString(), "_Imports.razor"); - // - // var razorProjectFileSystem = RazorProjectFileSystem.Create(projectDirectory); - // _razorProjectEngine ??= RazorProjectEngine.Create(RazorConfiguration.Default, razorProjectFileSystem, - // builder => { /* configure features if needed */ }); - // //var projectItem = razorProjectFileSystem.GetItem(razorDocumentFilePath, RazorFileKind.Component); - // - // //var razorCodeDocument = projectEngine.Process(razorSourceDocument, RazorFileKind.Component, [], []); - // var razorCodeDocument = _razorProjectEngine.Process(razorSourceDocument, RazorFileKind.Component, [importsRazorSourceDocument], []); - // var razorCSharpDocument = razorCodeDocument.GetRequiredCSharpDocument(); - // //var generatedSourceText = razorCSharpDocument.Text; - // - // //var filePath = razorCodeDocument.Source.FilePath.AssumeNotNull(); - // //var razorSourceText = razorCodeDocument.Source.Text; - // var razorSpans = RazorCodeDocumentExtensions.GetClassifiedSpans(razorCodeDocument); - // - // //var sharpIdeSpans = MemoryMarshal.Cast(razorSpans); - // var sharpIdeSpans = razorSpans.Select(s => new SharpIdeRazorClassifiedSpan(s.Span.ToSharpIdeSourceSpan(), s.Kind.ToSharpIdeSpanKind())).ToList(); - // - // var result = (sharpIdeSpans.ToImmutableArray(), razorCSharpDocument.Text, razorCSharpDocument.SourceMappings.Select(s => s.ToSharpIdeSourceMapping()).ToList()); - // return result; - // } - - // public static bool TryGetMappedSpans( - // TextSpan span, - // SourceText source, - // RazorCSharpDocument output, - // out LinePositionSpan linePositionSpan, - // out TextSpan mappedSpan) - // { - // foreach (SourceMapping sourceMapping in output.SourceMappings) - // { - // TextSpan textSpan1 = sourceMapping.OriginalSpan.AsTextSpan(); - // TextSpan textSpan2 = sourceMapping.GeneratedSpan.AsTextSpan(); - // if (textSpan2.Contains(span)) - // { - // int num1 = span.Start - textSpan2.Start; - // int num2 = span.End - textSpan2.End; - // if (num1 >= 0 && num2 <= 0) - // { - // mappedSpan = new TextSpan(textSpan1.Start + num1, textSpan1.End + num2 - (textSpan1.Start + num1)); - // linePositionSpan = source.Lines.GetLinePositionSpan(mappedSpan); - // return true; - // } - // } - // } - // mappedSpan = new TextSpan(); - // linePositionSpan = new LinePositionSpan(); - // return false; - // } -} diff --git a/src/SharpIDE.RazorAccess/SharpIDE.RazorAccess.csproj b/src/SharpIDE.RazorAccess/SharpIDE.RazorAccess.csproj deleted file mode 100644 index b748890..0000000 --- a/src/SharpIDE.RazorAccess/SharpIDE.RazorAccess.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - net10.0 - enable - enable - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - - diff --git a/src/SharpIDE.RazorAccess/SharpIdeRazorClassifiedSpan.cs b/src/SharpIDE.RazorAccess/SharpIdeRazorClassifiedSpan.cs deleted file mode 100644 index 08f528f..0000000 --- a/src/SharpIDE.RazorAccess/SharpIdeRazorClassifiedSpan.cs +++ /dev/null @@ -1,30 +0,0 @@ -extern alias WorkspaceAlias; -using RazorCodeDocumentExtensions = WorkspaceAlias::Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions; - -namespace SharpIDE.RazorAccess; - -public record struct SharpIdeRazorClassifiedSpan(SharpIdeRazorSourceSpan Span, SharpIdeRazorSpanKind Kind, string? CodeClassificationType = null, string? VsSemanticRangeType = null); - -public enum SharpIdeRazorSpanKind -{ - Transition, - MetaCode, - Comment, - Code, - Markup, - None, -} - -public static class SharpIdeRazorClassifiedSpanExtensions -{ - public static SharpIdeRazorSpanKind ToSharpIdeSpanKind(this RazorCodeDocumentExtensions.SpanKind kind) => kind switch - { - RazorCodeDocumentExtensions.SpanKind.Transition => SharpIdeRazorSpanKind.Transition, - RazorCodeDocumentExtensions.SpanKind.MetaCode => SharpIdeRazorSpanKind.MetaCode, - RazorCodeDocumentExtensions.SpanKind.Comment => SharpIdeRazorSpanKind.Comment, - RazorCodeDocumentExtensions.SpanKind.Code => SharpIdeRazorSpanKind.Code, - RazorCodeDocumentExtensions.SpanKind.Markup => SharpIdeRazorSpanKind.Markup, - RazorCodeDocumentExtensions.SpanKind.None => SharpIdeRazorSpanKind.None, - _ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null) - }; -}