/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/Core/Def/Venus/ContainedLanguage.IVsContainedCode.cs
68 строк
3 KB
Cyrus Najmabadi
Remove unused usings
22 май 2024, 09:09
22 май 2024, 09:09
a7aa293
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System.Collections.Generic; using System.Linq; using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServices.Implementation.Extensions; using Microsoft.VisualStudio.TextManager.Interop; using Microsoft.VisualStudio.Utilities; using VsTextSpan = Microsoft.VisualStudio.TextManager.Interop.TextSpan; namespace Microsoft.VisualStudio.LanguageServices.Implementation.Venus; internal partial class ContainedLanguage : IVsContainedCode { public int HostSpansUpdated() => VSConstants.S_OK; /// <summary> /// Returns the list of code blocks in the generated .cs file that comes from the ASP.NET /// markup compiler. These blocks of code are delimited by #line directives (ExternSource /// directives in VB). The TextSpan that we return is the span of the lines between the /// start #line and ending #line default directives (#End ExternSource in VB), and the /// cookie is the numeric line number given in the #line directive. /// </summary> public int EnumOriginalCodeBlocks(out IVsEnumCodeBlocks ppEnum) { IList<TextSpanAndCookie> result = null; var uiThreadOperationExecutor = ComponentModel.GetService<IUIThreadOperationExecutor>(); uiThreadOperationExecutor.Execute( "Intellisense", defaultDescription: "", allowCancellation: false, showProgress: false, action: c => result = EnumOriginalCodeBlocksWorker(c.UserCancellationToken)); ppEnum = new CodeBlockEnumerator(result); return VSConstants.S_OK; } private IList<TextSpanAndCookie> EnumOriginalCodeBlocksWorker(CancellationToken cancellationToken) { var snapshot = this.SubjectBuffer.CurrentSnapshot; var document = snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document == null) return []; return document.GetVisibleCodeBlocks(cancellationToken) .Select(tuple => new TextSpanAndCookie { CodeSpan = new VsTextSpan { iStartLine = snapshot.GetLineNumberFromPosition(tuple.Item1.Start), iStartIndex = 0, iEndLine = snapshot.GetLineNumberFromPosition(tuple.Item1.End), iEndIndex = tuple.Item1.End - snapshot.GetLineFromPosition(tuple.Item1.End).Start, }, ulHTMLCookie = tuple.Item2, }) .ToArray(); } }