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)