public List<TagSpan<IOutliningRegionTag>> GetOutlineSpans(SyntaxNode node, ITextSnapshot textSnapshot, IdeServices ideServices) { var ret = new List<TagSpan<IOutliningRegionTag>>(); var isBlock = IsBlock(node); if (!isBlock) { return ret; } // always has an extra empty line? var text = node.GetText(); var isOnlineBlock = text.Lines.Count <= 2; if (isOnlineBlock) { return ret; } if (node.IsKind(SyntaxKind.MultiLineIfBlock)) { var additionalSpan = AddAdditionalOutlinerForIfStatement(node, textSnapshot, ideServices); if (additionalSpan != null) { ret.Add(additionalSpan); } } var hint = GetCodeHint(textSnapshot, ideServices, node.FullSpan.Start, node.FullSpan.Length); var span = new TagSpan<IOutliningRegionTag>( new SnapshotSpan(textSnapshot, GetSpanStartPosition(node, text), GetSpanLength(node, text)), new OutliningRegionTag(isDefaultCollapsed: false, isImplementation: true, collapsedForm: "...", collapsedHintForm: hint)); ret.Add(span); return ret; }
public static string GetName(this TypeDeclarationSyntax node, SyntaxNode rootNode) { var identifier = node.Identifier; return rootNode.GetText().GetSubText(identifier.Span).ToString(); }
public static string GetName(this NamespaceDeclarationSyntax node, SyntaxNode rootNode) { var name = node.Name; return rootNode.GetText().GetSubText(name.Span).ToString(); }