public CommentAnalyzer(ISolution solution, IContextBoundSettingsStore settingsStore) { _settingsStore = settingsStore; _solution = solution; _xmlDocumentationSettings = _settingsStore.GetKey <XmlDocumentationSettings>(SettingsOptimization.OptimizeDefault); _identifierSettings = _settingsStore.GetKey <IdentifierSettings>(SettingsOptimization.OptimizeDefault); _xmlDocumentationSpellChecker = SpellCheckManager.GetSpellChecker( _settingsStore, _solution, this._xmlDocumentationSettings.DictionaryName == null ? null : this._xmlDocumentationSettings.DictionaryNames ); }
public static void ReflowAndRetagCommentBlockNode(ISolution solution, IProgressIndicator progress, IDocCommentBlockNode docCommentBlockNode) { if (docCommentBlockNode == null) { return; } // Get the settings. IContextBoundSettingsStore settingsStore = Shell.Instance.GetComponent <ISettingsStore>().BindToContextTransient(ContextRange.ApplicationWide); XmlDocumentationSettings settings = settingsStore.GetKey <XmlDocumentationSettings>(SettingsOptimization.OptimizeDefault); ReflowAndRetagSettings reflowSettings = settingsStore.GetKey <ReflowAndRetagSettings>(SettingsOptimization.OptimizeDefault); int maxLength = settings.MaxCharactersPerLine; // Get the comment block owner (ie the part of the declaration which will own the comment). IDocCommentBlockOwnerNode ownerNode = docCommentBlockNode.GetContainingNode <IDocCommentBlockOwnerNode>(); // If we didn't get an owner then give up if (ownerNode == null) { return; } // Get a factory which can create elements in the C# docs //CSharpElementFactory factory = CSharpElementFactory.GetInstance(ownerNode.GetPsiModule()); // Calculate line offset where /// starts and add 4 for the slashes and space int startPos = CalcLineOffset(ownerNode) + 4; // Create a new comment block with the adjusted text IDocCommentBlockNode comment = docCommentBlockNode; //factory.CreateDocCommentBlock(text); string reflownText = new XmlCommentReflower(settings, reflowSettings).ReflowAndRetag(comment, maxLength - startPos); // If the xml was malformed then the comment will now be empty - detect this and do nothing if (string.IsNullOrEmpty(reflownText)) { return; } /*comment = factory.CreateDocCommentBlock(reflownText); * * // And set the comment on the declaration. * ownerNode.SetDocCommentBlockNode(comment);*/ SetDocComment(ownerNode, reflownText, solution); }
public static void ReFlowCommentBlockNode(ISolution solution, IProgressIndicator progress, IDocCommentBlockNode docCommentBlockNode) { if (docCommentBlockNode == null) { return; } // Get the settings. IContextBoundSettingsStore settingsStore = Shell.Instance.GetComponent <ISettingsStore>().BindToContextTransient(ContextRange.ApplicationWide); XmlDocumentationSettings settings = settingsStore.GetKey <XmlDocumentationSettings>(SettingsOptimization.OptimizeDefault); ReflowAndRetagSettings reflowSettings = settingsStore.GetKey <ReflowAndRetagSettings>(SettingsOptimization.OptimizeDefault); int maxLength = settings.MaxCharactersPerLine; IDocCommentBlockOwnerNode ownerNode = docCommentBlockNode.GetContainingNode <IDocCommentBlockOwnerNode>(); // If we didn't get an owner then give up if (ownerNode == null) { return; } // Get a factory which can create elements in the C# docs //CSharpElementFactory factory = CSharpElementFactory.GetInstance(ownerNode.GetPsiModule()); // Calculate line offset where /// starts and add 3 for each // slash. int startPos = CalcLineOffset(ownerNode) + 3; // Create a new comment block with the adjusted text IDocCommentBlockNode comment = docCommentBlockNode; //factory.CreateDocCommentBlock(text); // Work out if we have a space between the /// and <summary> string reflownText = new XmlCommentReflower(settings, reflowSettings).Reflow(comment, maxLength - startPos); //comment = factory.CreateDocCommentBlock(reflownText); SetDocComment(ownerNode, reflownText, solution); // And set the comment on the declaration. //ownerNode.SetDocCommentBlockNode(comment); }
public XmlCommentReflower(XmlDocumentationSettings settings, ReflowAndRetagSettings reflowAndRetagSettings) { _settings = settings; _reflowSettings = reflowAndRetagSettings; }