コード例 #1
0
        public void ReparseFile()
        {
            System.Web.Razor.Text.ITextBuffer textBuffer = new ShimTextBufferAdapter(_viewBuffer.CurrentSnapshot);
            TextChange textChange = new TextChange(0, textBuffer.Length, textBuffer, 0, textBuffer.Length, textBuffer);

            CheckForStructureChanges(textChange);
        }
コード例 #2
0
        private int?GetDesiredIndentationHelper(ITextSnapshotLine line)
        {
            int?num = null;

            if (IsSmartIndentEnabled() && line.LineNumber > 0 && RazorCodeGenerator != null)
            {
                ITextSnapshotLine lineFromLineNumber         = line.Snapshot.GetLineFromLineNumber(line.LineNumber - 1);
                Block             document                   = RazorCodeGenerator.Document;
                System.Web.Razor.Text.ITextBuffer textBuffer = new ShimTextBufferAdapter(lineFromLineNumber.Snapshot);
                TextChange    change = new TextChange(lineFromLineNumber.End, 0, textBuffer, lineFromLineNumber.End, 0, textBuffer);
                Stack <Block> stack  = new Stack <Block>();
                System.Web.Razor.Parser.SyntaxTree.Span span = LocateOwner(document, change, stack);
                if (span.Kind != SpanKind.Code)
                {
                    SyntaxTreeNode syntaxTreeNode = span;
                    while (stack.Count > 0 && !num.HasValue)
                    {
                        Block block = stack.Pop();
                        List <SyntaxTreeNode> list = new List <SyntaxTreeNode>(block.Children);
                        for (int i = 0; i < list.Count; i++)
                        {
                            SyntaxTreeNode syntaxTreeNode2 = list[i];
                            if (!syntaxTreeNode2.IsBlock)
                            {
                                System.Web.Razor.Parser.SyntaxTree.Span span2 = syntaxTreeNode2 as System.Web.Razor.Parser.SyntaxTree.Span;
                                if (span2.Kind == SpanKind.MetaCode)
                                {
                                    ITextSnapshotLine lineFromLineNumber2 = line.Snapshot.GetLineFromLineNumber(span2.Start.LineIndex);
                                    int num2 = 0;
                                    if (i < list.Count - 1)
                                    {
                                        SyntaxTreeNode syntaxTreeNode3 = list[i + 1];
                                        if (syntaxTreeNode3.IsBlock && (syntaxTreeNode3 as Block).Type == BlockType.Markup)
                                        {
                                            num2 = _textView.Options.GetOptionValue <int>(DefaultOptions.IndentSizeOptionId);
                                        }
                                    }
                                    num = new int?(GetIndentLevelOfLine(lineFromLineNumber2) + num2);
                                }
                            }
                            if (syntaxTreeNode2 == syntaxTreeNode)
                            {
                                break;
                            }
                        }
                        syntaxTreeNode = block;
                    }
                }
            }
            if (BaseIndenter != null)
            {
                int?desiredIndentation = BaseIndenter.GetDesiredIndentation(line);
                if (desiredIndentation.HasValue && (!num.HasValue || desiredIndentation > num))
                {
                    num = desiredIndentation;
                }
            }
            return(num);
        }
コード例 #3
0
 private void TextBuffer_OnChanged(object sender, TextContentChangedEventArgs e)
 {
     if (_htmlDocument.IsMassiveChangeInProgress)
     {
         _bufferChangedWithinMassiveEdit = true;
         return;
     }
     if (e.Changes.Count > 0)
     {
         System.Web.Razor.Text.ITextBuffer newBuffer = new ShimTextBufferAdapter(e.After);
         System.Web.Razor.Text.ITextBuffer oldBuffer = new ShimTextBufferAdapter(e.Before);
         ITextChange textChange  = e.Changes[0];
         ITextChange expr_60     = e.Changes[e.Changes.Count - 1];
         int         oldLength   = expr_60.OldEnd - textChange.OldPosition;
         int         newLength   = expr_60.NewEnd - textChange.NewPosition;
         TextChange  textChange2 = new TextChange(textChange.OldPosition, oldLength, oldBuffer, textChange.NewPosition, newLength, newBuffer);
         CheckForStructureChanges(textChange2);
     }
 }
コード例 #4
0
		private void TextBuffer_OnChanged(object sender, TextContentChangedEventArgs e)
		{
			if (_htmlDocument.IsMassiveChangeInProgress)
			{
				_bufferChangedWithinMassiveEdit = true;
				return;
			}
			if (e.Changes.Count > 0)
			{
				System.Web.Razor.Text.ITextBuffer newBuffer = new ShimTextBufferAdapter(e.After);
				System.Web.Razor.Text.ITextBuffer oldBuffer = new ShimTextBufferAdapter(e.Before);
				ITextChange textChange = e.Changes[0];
				ITextChange expr_60 = e.Changes[e.Changes.Count - 1];
				int oldLength = expr_60.OldEnd - textChange.OldPosition;
				int newLength = expr_60.NewEnd - textChange.NewPosition;
				TextChange textChange2 = new TextChange(textChange.OldPosition, oldLength, oldBuffer, textChange.NewPosition, newLength, newBuffer);
				CheckForStructureChanges(textChange2);
			}
		}
コード例 #5
0
		public void ReparseFile()
		{
			System.Web.Razor.Text.ITextBuffer textBuffer = new ShimTextBufferAdapter(_viewBuffer.CurrentSnapshot);
			TextChange textChange = new TextChange(0, textBuffer.Length, textBuffer, 0, textBuffer.Length, textBuffer);
			CheckForStructureChanges(textChange);
		}
コード例 #6
0
 private int? GetDesiredIndentationHelper(ITextSnapshotLine line)
 {
     int? num = null;
     if (IsSmartIndentEnabled() && line.LineNumber > 0 && RazorCodeGenerator != null)
     {
         ITextSnapshotLine lineFromLineNumber = line.Snapshot.GetLineFromLineNumber(line.LineNumber - 1);
         Block document = RazorCodeGenerator.Document;
         System.Web.Razor.Text.ITextBuffer textBuffer = new ShimTextBufferAdapter(lineFromLineNumber.Snapshot);
         TextChange change = new TextChange(lineFromLineNumber.End, 0, textBuffer, lineFromLineNumber.End, 0, textBuffer);
         Stack<Block> stack = new Stack<Block>();
         System.Web.Razor.Parser.SyntaxTree.Span span = LocateOwner(document, change, stack);
         if (span.Kind != SpanKind.Code)
         {
             SyntaxTreeNode syntaxTreeNode = span;
             while (stack.Count > 0 && !num.HasValue)
             {
                 Block block = stack.Pop();
                 List<SyntaxTreeNode> list = new List<SyntaxTreeNode>(block.Children);
                 for (int i = 0; i < list.Count; i++)
                 {
                     SyntaxTreeNode syntaxTreeNode2 = list[i];
                     if (!syntaxTreeNode2.IsBlock)
                     {
                         System.Web.Razor.Parser.SyntaxTree.Span span2 = syntaxTreeNode2 as System.Web.Razor.Parser.SyntaxTree.Span;
                         if (span2.Kind == SpanKind.MetaCode)
                         {
                             ITextSnapshotLine lineFromLineNumber2 = line.Snapshot.GetLineFromLineNumber(span2.Start.LineIndex);
                             int num2 = 0;
                             if (i < list.Count - 1)
                             {
                                 SyntaxTreeNode syntaxTreeNode3 = list[i + 1];
                                 if (syntaxTreeNode3.IsBlock && (syntaxTreeNode3 as Block).Type == BlockType.Markup)
                                 {
                                     num2 = _textView.Options.GetOptionValue<int>(DefaultOptions.IndentSizeOptionId);
                                 }
                             }
                             num = new int?(GetIndentLevelOfLine(lineFromLineNumber2) + num2);
                         }
                     }
                     if (syntaxTreeNode2 == syntaxTreeNode)
                     {
                         break;
                     }
                 }
                 syntaxTreeNode = block;
             }
         }
     }
     if (BaseIndenter != null)
     {
         int? desiredIndentation = BaseIndenter.GetDesiredIndentation(line);
         if (desiredIndentation.HasValue && (!num.HasValue || desiredIndentation > num))
         {
             num = desiredIndentation;
         }
     }
     return num;
 }