public void AugmentSignatureHelpSession(ISignatureHelpSession session, IList <ISignature> signatures) { if (signatures.Count == 0) { return; } // Update signature doco var sig = signatures.First(); if (_sigDocoProp == null) { _sigDocoProp = sig.GetType().GetProperty("Documentation"); } var newDoco = DocCommentHelper.ProcessParaTags(sig.Documentation); _sigDocoProp.SetValue(sig, newDoco, null); // Update parameter doco if (_paramDocoProp == null && sig.Parameters.Count > 0) { _paramDocoProp = sig.Parameters.First().GetType().GetProperty("Documentation"); } foreach (var parameter in sig.Parameters) { newDoco = DocCommentHelper.ProcessParaTags(parameter.Documentation); _paramDocoProp.SetValue(parameter, newDoco, null); } }
public void AugmentCompletionSession(ICompletionSession session, IList <CompletionSet> completionSets) { if (IsHtmlFile && completionSets.Any()) { var bottomSpan = completionSets.First().ApplicableTo; if (!JScriptEditorUtil.IsInJScriptLanguageBlock(_lbm, bottomSpan.GetStartPoint(bottomSpan.TextBuffer.CurrentSnapshot))) { // This is an HTML statement completion session, so do nothing return; } } // TODO: Reflect over the ShimCompletionSet to see where the Description value comes from // as setting the property does not actually change the value. var newCompletionSets = completionSets .Select(cs => cs == null ? cs : new ScriptCompletionSet( cs.Moniker, cs.DisplayName, cs.ApplicableTo, cs.Completions .Select(c => c == null ? c : new Completion( c.DisplayText, c.InsertionText, DocCommentHelper.ProcessParaTags(c.Description), c.IconSource, c.IconAutomationText)) .ToList(), cs.CompletionBuilders)) .ToList(); completionSets.Clear(); newCompletionSets.ForEach(cs => completionSets.Add(cs)); }