From ab56320de9277688f8a44f1c0b622cd3f2be7260 Mon Sep 17 00:00:00 2001 From: Jared Parsons Date: Mon, 23 Jun 2014 13:54:56 -0700 Subject: [PATCH] Remove encouragement from signature help This change stops the encouragement extension from displaying in signature help documentation. fixes #6 --- .gitignore | 3 +++ EncouragePackage/EncourageIntellisenseController.cs | 2 ++ EncouragePackage/EncourageSignatureHelpSource.cs | 12 ++++++++++++ 3 files changed, 17 insertions(+) diff --git a/.gitignore b/.gitignore index b9d6bd9..31272ee 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,9 @@ local.properties .settings/ .loadpath +# Roslyn generated folders +*.sln.ide/ + # External tool builders .externalToolBuilders/ diff --git a/EncouragePackage/EncourageIntellisenseController.cs b/EncouragePackage/EncourageIntellisenseController.cs index 9341209..63ed100 100644 --- a/EncouragePackage/EncourageIntellisenseController.cs +++ b/EncouragePackage/EncourageIntellisenseController.cs @@ -29,7 +29,9 @@ void OnSaved(Document document) var triggerPoint = point.Snapshot.CreateTrackingPoint(point.Position, PointTrackingMode.Positive); if (!provider.SignatureHelpBroker.IsSignatureHelpActive(textView)) { + textView.Properties.AddProperty(EncourageSignatureHelpSource.SessionKey, null); session = provider.SignatureHelpBroker.TriggerSignatureHelp(textView, triggerPoint, true); + textView.Properties.RemoveProperty(EncourageSignatureHelpSource.SessionKey); } } diff --git a/EncouragePackage/EncourageSignatureHelpSource.cs b/EncouragePackage/EncourageSignatureHelpSource.cs index 2cac416..b9e857d 100644 --- a/EncouragePackage/EncourageSignatureHelpSource.cs +++ b/EncouragePackage/EncourageSignatureHelpSource.cs @@ -56,6 +56,13 @@ internal Signature(ITrackingSpan trackingSpan, string content, string prettyPrin } } + /// + /// This object needs to be added as a key to the property bag of an ITextView where + /// encouragement should be applied. This prevents encouragement from being + /// introduced in places like signature overload. + /// + internal static readonly object SessionKey = new object(); + readonly ITextBuffer subjectBuffer; readonly IEncouragements encouragements; @@ -78,6 +85,11 @@ public void Dispose() public void AugmentSignatureHelpSession(ISignatureHelpSession session, IList signatures) { + if (!session.TextView.Properties.ContainsProperty(SessionKey)) + { + return; + } + // Map the trigger point down to our buffer. var subjectTriggerPoint = session.GetTriggerPoint(subjectBuffer.CurrentSnapshot); if (!subjectTriggerPoint.HasValue)