当前位置: 首页>>代码示例>>C#>>正文


C# ITextSnapshot.GetLineFromLineNumber方法代码示例

本文整理汇总了C#中ITextSnapshot.GetLineFromLineNumber方法的典型用法代码示例。如果您正苦于以下问题:C# ITextSnapshot.GetLineFromLineNumber方法的具体用法?C# ITextSnapshot.GetLineFromLineNumber怎么用?C# ITextSnapshot.GetLineFromLineNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ITextSnapshot的用法示例。


在下文中一共展示了ITextSnapshot.GetLineFromLineNumber方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateClassification

 private SnapshotSpan? CreateClassification(int sourceLine, string text, ITextSnapshot snapshot)
 {
     int descriptionStartPosition = snapshot.GetLineFromLineNumber(sourceLine).Start.Position;
     int lineNumber = text.Split(new[] { Environment.NewLine }, StringSplitOptions.None).Count() + sourceLine;
     if (snapshot.LineCount <= lineNumber)
         return null;
     int descriptionEndPosition = snapshot.GetLineFromLineNumber(lineNumber).Start.Position;
     var descriptionSpan = new Span(descriptionStartPosition, descriptionEndPosition - descriptionStartPosition);
     return new SnapshotSpan(snapshot, descriptionSpan);
 }
开发者ID:smhabdoli,项目名称:NBehave,代码行数:10,代码来源:GherkinClassifier.cs

示例2: CreateSpan

        public static SnapshotSpan CreateSpan(this IEnumerable<IGherkinFileBlock> changedBlocks, ITextSnapshot textSnapshot)
        {
            VisualStudioTracer.Assert(changedBlocks.Count() > 0, "there is no changed block");

            int minLineNumber = changedBlocks.First().GetStartLine();
            int maxLineNumber = changedBlocks.Last().GetEndLine();

            var minLine = textSnapshot.GetLineFromLineNumber(minLineNumber);
            var maxLine = minLineNumber == maxLineNumber ? minLine : textSnapshot.GetLineFromLineNumber(maxLineNumber);
            return new SnapshotSpan(minLine.Start, maxLine.EndIncludingLineBreak);
        }
开发者ID:ChrisEdwards,项目名称:SpecFlow,代码行数:11,代码来源:GherkinFileScopeExtensions.cs

示例3: GetMarkerLinesForFile

        public List<MarkerLine> GetMarkerLinesForFile(ITextSnapshot textSnapshot)
        {
            var lines = new List<MarkerLine>();

            if (_threadFixPlugin == null || _threadFixPlugin.MarkerLookUp == null)
            {
                return lines;
            }

            var filename = textSnapshot.TextBuffer.GetTextDocument().FilePath.ToLower();
            var markers = new List<VulnerabilityMarker>();

            if(_threadFixPlugin.MarkerLookUp.TryGetValue(filename, out markers) && !string.IsNullOrEmpty(filename))
            {
                foreach (var marker in markers)
                {
                    if (marker.LineNumber.HasValue && marker.LineNumber.Value > 0 && marker.LineNumber.Value < textSnapshot.LineCount)
                    {
                        lines.Add(new MarkerLine(textSnapshot.GetLineFromLineNumber(marker.LineNumber.Value - 1), marker.GenericVulnName));
                    }
                }
            }

            return lines;
        }
开发者ID:yehgdotnet,项目名称:threadfix,代码行数:25,代码来源:MarkerGlyphService.cs

示例4: ConstructAsync

        /// <summary>
        /// Asynchronously constructs a line map from a <paramref name="snapshot"/> and <paramref name="code"/>.
        /// </summary>
        /// <param name="snapshot">The current text snapshot.</param>
        /// <param name="code">The code to derive a line map from.</param>
        /// <param name="cancelToken">Cancellation token.</param>
        /// <returns>
        /// A <see cref="LineMap"/> if <paramref name="code"/> was parsed correctly,
        /// <c>null</c> if there was invalid code or it was canceled.
        /// </returns>
        internal static Task<LineMap> ConstructAsync(ITextSnapshot snapshot, string code, CancellationToken cancelToken)
        {
            if (snapshot == null)
                throw new ArgumentNullException ("snapshot");
            if (code == null)
                throw new ArgumentNullException ("code");

            return Task<LineMap>.Factory.StartNew (() =>
            {
                try
                {
                    var tree = SyntaxTree.Parse (code, cancellationToken: cancelToken);
                    if (tree.Errors.Any (p => p.ErrorType == ErrorType.Error))
                        return null;

                    var identifier = new IdentifyingVisitor();
                    tree.AcceptVisitor (identifier);

                    var spans = new Dictionary<int, ITrackingSpan> (identifier.LineMap.Count);
                    foreach (var kvp in identifier.LineMap)
                    {
                        ITextSnapshotLine line = snapshot.GetLineFromLineNumber (kvp.Value - 1);
                        ITrackingSpan span = snapshot.CreateTrackingSpan (line.Extent, SpanTrackingMode.EdgeExclusive);
                        spans.Add (kvp.Key, span);
                    }

                    return (cancelToken.IsCancellationRequested) ? null : new LineMap (spans);
                }
                catch (OperationCanceledException)
                {
                    return null;
                }
            }, cancelToken);
        }
开发者ID:ermau,项目名称:Instant,代码行数:44,代码来源:LineMap.cs

示例5: DetermineNewDocumentAsync

        private async Task<Document> DetermineNewDocumentAsync(MemberInsertionCompletionItem completionItem, ITextSnapshot textSnapshot, CancellationToken cancellationToken)
        {
            // The span we're going to replace
            var line = textSnapshot.GetLineFromLineNumber(completionItem.Line);

            var sourceText = textSnapshot.AsText();
            var document = sourceText.GetOpenDocumentInCurrentContextWithChanges();
            Contract.ThrowIfNull(document);

            // Annotate the line we care about so we can find it after adding usings
            var tree = document.GetSyntaxTreeAsync(cancellationToken).WaitAndGetResult(cancellationToken);
            var token = GetToken(completionItem, tree, cancellationToken);
            var annotatedRoot = tree.GetRoot(cancellationToken).ReplaceToken(token, token.WithAdditionalAnnotations(_otherAnnotation));
            document = document.WithSyntaxRoot(annotatedRoot);

            var memberContainingDocument = await GenerateMemberAndUsingsAsync(document, completionItem, line, cancellationToken).ConfigureAwait(false);

            var insertionRoot = PrepareTreeForMemberInsertion(memberContainingDocument, cancellationToken);
            var insertionText = GenerateInsertionText(memberContainingDocument, cancellationToken);

            var destinationSpan = ComputeDestinationSpan(insertionRoot, insertionText);

            var finalText = insertionRoot.GetText(sourceText.Encoding).Replace(destinationSpan, insertionText.Trim());

            document = document.WithText(finalText);
            var newRoot = document.GetSyntaxRootAsync(cancellationToken).WaitAndGetResult(cancellationToken);
            var declaration = GetSyntax(newRoot.FindToken(destinationSpan.End));

            document = document.WithSyntaxRoot(newRoot.ReplaceNode(declaration, declaration.WithAdditionalAnnotations(_annotation)));
            return Formatter.FormatAsync(document, _annotation, cancellationToken: cancellationToken).WaitAndGetResult(cancellationToken);
        }
开发者ID:Eyas,项目名称:roslyn,代码行数:31,代码来源:AbstractMemberInsertingCompletionProvider.cs

示例6: GetGherkinDialect

 private GherkinDialect GetGherkinDialect(ITextSnapshot textSnapshot)
 {
     try
     {
         return projectScope.GherkinDialectServices.GetGherkinDialect(
                 lineNo => textSnapshot.GetLineFromLineNumber(lineNo).GetText());
     }
     catch(Exception)
     {
         return null;
     }
 }
开发者ID:eddpeterson,项目名称:SpecFlow,代码行数:12,代码来源:GherkinTextBufferParser.cs

示例7: SnapshotParser

        public SnapshotParser(ITextSnapshot snapshot, IClassifier classifier)
        {
            Snapshot = snapshot;
            Classifier = classifier;
            ClassificationSpans = Classifier.GetClassificationSpans(new SnapshotSpan(Snapshot, 0, snapshot.Length));
            foreach (ClassificationSpan s in ClassificationSpans)
                SpanIndex.Add(s.Span.Start.Position, s);

            CurrentPoint = Snapshot.GetLineFromLineNumber(0).Start;
            if (SpanIndex.ContainsKey(0))
                CurrentSpan = SpanIndex[0];
        }
开发者ID:Skybladev2,项目名称:C--outline-for-Visual-Studio,代码行数:12,代码来源:SnapshotParser.cs

示例8: GetLinesToAlign

        IEnumerable<ITextSnapshotLine> GetLinesToAlign(ITextSnapshot snapshot)
        {
            int start = snapshot.GetLineNumberFromPosition(m_view.Selection.Start.Position);
            int end   = snapshot.GetLineNumberFromPosition(m_view.Selection.End.Position);

            if (start == end)
            {
                start = 0;
                end   = snapshot.LineCount -1;
            }

            return start.UpTo(end).Select(x => snapshot.GetLineFromLineNumber(x));
        }
开发者ID:modulexcite,项目名称:UntabifyReplacement,代码行数:13,代码来源:UntabifyCommandFilter.cs

示例9: GetRoxygenBlockPosition

 private static Span? GetRoxygenBlockPosition(ITextSnapshot snapshot, int definitionStart) {
     var line = snapshot.GetLineFromPosition(definitionStart);
     for (int i = line.LineNumber - 1; i >= 0; i--) {
         var currentLine = snapshot.GetLineFromLineNumber(i);
         string lineText = currentLine.GetText().TrimStart();
         if (lineText.Length > 0) {
             if (lineText.EqualsOrdinal("##")) {
                 return new Span(currentLine.Start, currentLine.Length);
             } else if (lineText.EqualsOrdinal("#'")) {
                 return null;
             }
             break;
         }
     }
     return new Span(line.Start, 0);
 }
开发者ID:Microsoft,项目名称:RTVS,代码行数:16,代码来源:RoxygenBlock.cs

示例10: GetFunctionDeclarationLineNumber

        /// <summary>
        /// Returns the line on which the word "function" or other function initializers appear.
        /// </summary>
        /// <param name="capture">The text snapshot.</param>
        /// <param name="lineNumber">The line that should contain the open curlybrace for the function if one exists
        /// in the context of the comment, or the first line of the function itself.</param>
        /// <returns>Returns the line of the function declaration. -1 if one is not found that corresponds to the given
        /// line number.</returns>
        public static int GetFunctionDeclarationLineNumber(ITextSnapshot capture, int lineNumber, bool isAboveFunction = false)
        {
            string lineText = capture.GetLineFromLineNumber(lineNumber).GetText();
            string unCommentedLine = RemoveComments(lineText);

            //Ignore inline functions if this is an "inside-the-function" doc (i.e, vsdoc)
            if (!isAboveFunction && !unCommentedLine.Trim().EndsWith("{")) return -1;

            if (capture.ContentType.TypeName == "TypeScript")
            {
                return GetTypeScriptFunctionLine(capture, lineNumber, isAboveFunction, lineText);
            }
            else
            {
                return GetJavaScriptFunctionLine(capture, lineNumber, isAboveFunction, lineText);
            }
        }
开发者ID:mazong1123,项目名称:DocStubsJs,代码行数:25,代码来源:StubUtils.cs

示例11: GetNonEmptyPreviousLine

        public static ITextSnapshotLine GetNonEmptyPreviousLine(ITextSnapshot snapshot, ITextSnapshotLine currentLine)
        {
            do
            {
                var previousLine = snapshot.GetLineFromLineNumber(Math.Max(currentLine.LineNumber - 1, 0));

                // first line in the file
                if (previousLine.LineNumber == currentLine.LineNumber)
                {
                    return currentLine;
                }

                if (previousLine.IsEmptyOrWhitespace())
                {
                    // keep goes up until it find non empty previous line
                    currentLine = previousLine;
                    continue;
                }

                return previousLine;
            }
            while (true);
        }
开发者ID:CAPCHIK,项目名称:roslyn,代码行数:23,代码来源:CommonFormattingHelpers.cs

示例12: TokenizeLine

        internal LineTokenization TokenizeLine(ITextSnapshot snapshot, object previousLineState, int lineNo, int lineOffset)
        {
            ITextSnapshotLine line = snapshot.GetLineFromLineNumber(lineNo);
            SnapshotSpan lineSpan = new SnapshotSpan(snapshot, line.Start + lineOffset, line.LengthIncludingLineBreak - lineOffset);

            var tcp = new SnapshotSpanTextContentProvider(lineSpan);
            var scriptSource = _engine.CreateScriptSource(tcp, null, SourceCodeKind.File);

            _categorizer.Initialize(previousLineState, scriptSource, new SourceLocation(lineOffset, lineNo + 1, lineOffset + 1));
            var tokens = new List<TokenInfo>(_categorizer.ReadTokens(lineSpan.Length)).ToArray();
            return new LineTokenization(tokens, _categorizer.CurrentState);
        }
开发者ID:TerabyteX,项目名称:main,代码行数:12,代码来源:DlrClassifier.cs

示例13: CreateSnapshotSpans

        private static IList<SnapshotSpan> CreateSnapshotSpans(ITextSnapshot snapshot, LineSpan lineSpan)
        {
            var result = new List<SnapshotSpan>();
            for (int i = lineSpan.Start; i < lineSpan.End; i++)
            {
                var line = snapshot.GetLineFromLineNumber(i);
                result.Add(line.Extent);
            }

            return result;
        }
开发者ID:tgjones,项目名称:HlslTools,代码行数:11,代码来源:IProjectionBufferFactoryServiceExtensions.cs

示例14: UpdateAdornments_Performance

		void UpdateAdornments_Performance(
			ITextSnapshot snapshot,
			ITextViewModel viewModel,
			ITextViewLine firstVisibleLine,
			IEnumerable<LineSpan> analysisLines
		) {
#endif
			double spaceWidth = firstVisibleLine.VirtualSpaceWidth;
			if (spaceWidth <= 0.0) return;
			double horizontalOffset = firstVisibleLine.TextLeft;

			var unusedLines = new HashSet<LineSpan>(Lines.Keys);

			var caret = CaretHandlerBase.FromName(Theme.CaretHandler, View.Caret.Position.VirtualBufferPosition, Analysis.TabSize);

			object perfCookie = null;
			PerformanceLogger.Start(ref perfCookie);
#if DEBUG
			var initialCount = Lines.Count;
#endif
			foreach (var line in analysisLines.Concat(GetPageWidthLines()))
			{
				double top = View.ViewportTop;
				double bottom = View.ViewportBottom;
				double left = line.Indent * spaceWidth + horizontalOffset;

				Line adornment;
				unusedLines.Remove(line);

				if (line.Type == LineSpanType.PageWidthMarker)
				{
					line.Highlight = (Analysis.LongestLine > line.Indent);
					if (!Lines.TryGetValue(line, out adornment))
					{
						Lines[line] = adornment = CreateGuide(Canvas);
					}
					UpdateGuide(line, adornment, left, top, bottom);
					continue;
				}

				if (Lines.TryGetValue(line, out adornment))
				{
					adornment.Visibility = Visibility.Hidden;
				}

				caret.AddLine(line, willUpdateImmediately: true);

				if (line.FirstLine >= 0 && line.LastLine < int.MaxValue)
				{
					var firstLineNumber = line.FirstLine;
					var lastLineNumber = line.LastLine;
					ITextSnapshotLine firstLine, lastLine;
					try
					{
						firstLine = snapshot.GetLineFromLineNumber(firstLineNumber);
						lastLine = snapshot.GetLineFromLineNumber(lastLineNumber);
					}
					catch (Exception ex)
					{
						Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
						continue;
					}

					if (firstLine.Start > View.TextViewLines.LastVisibleLine.Start ||
						lastLine.Start < View.TextViewLines.FirstVisibleLine.Start)
					{
						continue;
					}

					while (
						!viewModel.IsPointInVisualBuffer(firstLine.Start, PositionAffinity.Successor) &&
						++firstLineNumber < lastLineNumber
					)
					{
						try
						{
							firstLine = snapshot.GetLineFromLineNumber(firstLineNumber);
						}
						catch (Exception ex)
						{
							Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
							firstLine = null;
							break;
						}
					}

					while (
						!viewModel.IsPointInVisualBuffer(lastLine.Start, PositionAffinity.Predecessor) &&
						--lastLineNumber > firstLineNumber
					)
					{
						try
						{
							lastLine = snapshot.GetLineFromLineNumber(lastLineNumber);
						}
						catch (Exception ex)
						{
							Trace.TraceError("In GetLineFromLineNumber:\n{0}", ex);
							lastLine = null;
							break;
//.........这里部分代码省略.........
开发者ID:iccfish,项目名称:indent-guides-mod,代码行数:101,代码来源:IndentGuide.cs

示例15: GetMatchingComments

        private IList<LineCommentInfo> GetMatchingComments(
            ITextSnapshot snapshot,
            LineCommentInfo toMatch,
            int lineNumberStart,
            int lineNumberLimit)
        {
            var list = new List<LineCommentInfo>();

            var up = lineNumberLimit >= lineNumberStart;
            var delta = up ? 1 : -1;

            for (
                var lineNumber = lineNumberStart;
                up ? lineNumber < lineNumberLimit : lineNumber >= lineNumberLimit;
                lineNumber += delta)
            {
                var line = snapshot.GetLineFromLineNumber(lineNumber);
                var info = LineCommentInfo.FromLine(line, this.view.Options, this.classifier);

                // TODO: treat lines with code (non-comment) as non-matching so
                // that behavior is better?
                if (!toMatch.Matches(info))
                {
                    break;
                }

                list.Add(info);
            }

            if (!up)
            {
                list.Reverse();
            }

            return list;
        }
开发者ID:k4gdw,项目名称:Commentator,代码行数:36,代码来源:AutoWrapper.cs


注:本文中的ITextSnapshot.GetLineFromLineNumber方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。