From 7792d77c6373ba2bdb38ea13b05caf657b872f44 Mon Sep 17 00:00:00 2001 From: Samir Boulema Date: Wed, 1 Apr 2026 12:02:04 +0200 Subject: [PATCH] feat: Show as margin instead of toolwindow #169 --- .../TextViewMarginProvider.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/CodeNav.OutOfProc/TextViewMarginProvider.cs 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