diff --git a/src/CodeNav.OutOfProc/TextViewMarginProvider.cs b/src/CodeNav.OutOfProc/TextViewMarginProvider.cs new file mode 100644 index 0000000..bfa4084 --- /dev/null +++ b/src/CodeNav.OutOfProc/TextViewMarginProvider.cs @@ -0,0 +1,34 @@ +using CodeNav.OutOfProc.Services; +using CodeNav.OutOfProc.ToolWindows; +using Microsoft.VisualStudio.Extensibility; +using Microsoft.VisualStudio.Extensibility.Editor; +using Microsoft.VisualStudio.RpcContracts.RemoteUI; + +namespace CodeNav.OutOfProc; + +[VisualStudioContribution] +internal class TextViewMarginProvider(CodeDocumentService codeDocumentService) : ExtensionPart, ITextViewMarginProvider +{ + /// + public TextViewExtensionConfiguration TextViewExtensionConfiguration => new() + { + AppliesTo = + [ + DocumentFilter.FromDocumentType("CSharp"), + DocumentFilter.FromGlobPattern("**/*.cs", true), + ], + }; + + /// + public TextViewMarginProviderConfiguration TextViewMarginProviderConfiguration => + new(marginContainer: ContainerMarginPlacement.KnownValues.Left) + { + Before = [MarginPlacement.KnownValues.Glyph], + }; + + /// + public Task CreateVisualElementAsync(ITextViewSnapshot textView, CancellationToken cancellationToken) + { + return Task.FromResult(new CodeNavToolWindowControl(codeDocumentService.CodeDocumentViewModel)); + } +} \ No newline at end of file