/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/VisualBasic/EndConstructGeneration/EndConstructExtensions.vb
38 строк
2 KB
Cyrus Najmabadi
Enable new option
15 июн 2021, 22:20
15 июн 2021, 22:20
1bf187c
Код
Авторство
О чём код?
' 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. Imports System.Runtime.CompilerServices Imports System.Text Imports Microsoft.VisualStudio.Text Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.EndConstructGeneration Friend Module EndConstructExtensions <Extension()> Public Function GetAligningWhitespace(snapshot As ITextSnapshot, position As Integer) As String If snapshot Is Nothing Then Throw New ArgumentNullException(NameOf(snapshot)) End If Dim line = snapshot.GetLineFromPosition(position) Dim precedingText = snapshot.GetText(Span.FromBounds(line.Start, position)) ' To generate the aligning whitespace, we take the preceding text and simply replace any non-tab with a ' space. This is to guarantee we behave properly in the case of tabs and spaces, as well as cases where the ' user is mixing tabs and spaces and expects it to align in any tab width. (Trust me, most other "obvious" ' ways to implement this are wrong.) Dim builder As New StringBuilder For Each c As Char In precedingText If c = vbTab Then builder.Append(vbTab) Else builder.Append(" ") End If Next Return builder.ToString() End Function End Module End Namespace