Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
		public static string GetName(this TypeDeclarationSyntax node, SyntaxNode rootNode)
		{
			var identifier = node.Identifier;
			return rootNode.GetText().GetSubText(identifier.Span).ToString();
		}
Exemplo n.º 3
0
		public static string GetName(this NamespaceDeclarationSyntax node, SyntaxNode rootNode)
		{
			var name = node.Name;
			return rootNode.GetText().GetSubText(name.Span).ToString();
		}