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)