11using System ;
22using System . ComponentModel . Composition ;
33using GitHub . Extensions ;
4- using GitHub . InlineReviews . Services ;
54using GitHub . Services ;
65using Microsoft . VisualStudio . Text ;
6+ using Microsoft . VisualStudio . Text . Differencing ;
77using Microsoft . VisualStudio . Text . Editor ;
88using Microsoft . VisualStudio . Text . Tagging ;
99using Microsoft . VisualStudio . Utilities ;
@@ -16,6 +16,9 @@ namespace GitHub.InlineReviews.Tags
1616 [ Export ( typeof ( IViewTaggerProvider ) ) ]
1717 [ ContentType ( "text" ) ]
1818 [ TagType ( typeof ( ShowInlineCommentTag ) ) ]
19+ [ TextViewRole ( "LEFTDIFF" ) ]
20+ [ TextViewRole ( "RIGHTDIFF" ) ]
21+ [ TextViewRole ( "INLINEDIFF" ) ]
1922 class InlineCommentTaggerProvider : IViewTaggerProvider
2023 {
2124 readonly IPullRequestSessionManager sessionManager ;
@@ -31,11 +34,22 @@ public InlineCommentTaggerProvider(
3134
3235 public ITagger < T > CreateTagger < T > ( ITextView view , ITextBuffer buffer ) where T : ITag
3336 {
34- return buffer . Properties . GetOrCreateSingletonProperty ( ( ) =>
35- new InlineCommentTagger (
36- view ,
37- buffer ,
38- sessionManager ) ) as ITagger < T > ;
37+ if ( view . TextViewModel is IDifferenceTextViewModel model )
38+ {
39+ if ( buffer == model . Viewer . DifferenceBuffer . BaseLeftBuffer )
40+ {
41+ return view . Properties . GetOrCreateSingletonProperty ( "InlineTaggerForLeftBuffer" ,
42+ ( ) => new InlineCommentTagger ( view , buffer , sessionManager ) as ITagger < T > ) ;
43+ }
44+
45+ if ( buffer == model . Viewer . DifferenceBuffer . BaseRightBuffer )
46+ {
47+ return view . Properties . GetOrCreateSingletonProperty ( "InlineTaggerForRightBuffer" ,
48+ ( ) => new InlineCommentTagger ( view , buffer , sessionManager ) as ITagger < T > ) ;
49+ }
50+ }
51+
52+ return null ;
3953 }
4054 }
4155}
0 commit comments