Как реализовать в Visual Studio регионы, называемые сворачиванием кода, для JavaScript?
Если в javascript есть сотни строк, будет более понятно использование сворачивания кода с регионами, как в vb / C #.
#region My Code
#endregion
Как реализовать в Visual Studio регионы, называемые сворачиванием кода, для JavaScript?
Если в javascript есть сотни строк, будет более понятно использование сворачивания кода с регионами, как в vb / C #.
#region My Code
#endregion
Ответы:
Запись в блоге здесь объясняет это и этот вопрос MSDN .
Вы должны использовать макросы Visual Studio 2003/2005/2008.
Копировать + вставить из записи блога для верности:
OutlineRegions
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.Collections
Public Module JsMacros
Sub OutlineRegions()
Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection
Const REGION_START As String = "//#region"
Const REGION_END As String = "//#endregion"
selection.SelectAll()
Dim text As String = selection.Text
selection.StartOfDocument(True)
Dim startIndex As Integer
Dim endIndex As Integer
Dim lastIndex As Integer = 0
Dim startRegions As Stack = New Stack()
Do
startIndex = text.IndexOf(REGION_START, lastIndex)
endIndex = text.IndexOf(REGION_END, lastIndex)
If startIndex = -1 AndAlso endIndex = -1 Then
Exit Do
End If
If startIndex <> -1 AndAlso startIndex < endIndex Then
startRegions.Push(startIndex)
lastIndex = startIndex + 1
Else
' Outline region ...
selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
selection.OutlineSection()
lastIndex = endIndex + 1
End If
Loop
selection.StartOfDocument()
End Sub
Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
Dim lineNumber As Integer = 1
Dim i As Integer = 0
While i < index
If text.Chars(i) = vbCr Then
lineNumber += 1
i += 1
End If
i += 1
End While
Return lineNumber
End Function
End Module
Теперь у Microsoft есть расширение для VS 2010, которое предоставляет следующие функции:
Хорошие новости для разработчиков, которые работают с последней версией Visual Studio
В Web Основы приходят с этой функцией.
Примечание. Для VS 2017 используйте регионы JavaScript: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions.
Это легко!
Отметьте раздел, который хотите свернуть, и
CTRL + M + H
А для расширения используйте знак «+» слева от него.
Для тех, кто собирается использовать Visual Studio 2012, существует Web Essentials 2012.
Для тех, кто собирается использовать Visual Studio 2015, существует Web Essentials 2015.3
Использование точно такое же, как спросил @prasad
Отметив часть кода (независимо от каких-либо логических блоков) и нажав CTRL + M + H, вы определите выделение как область, которая является сворачиваемой и расширяемой.
В JSEnhancements плагин для визуальных адресов Studio , это красиво.
Спасибо 0A0D за отличный ответ. Мне с этим повезло. Дарин Димитров также является хорошим аргументом в пользу ограничения сложности ваших JS-файлов. Тем не менее, я нахожу случаи, когда сворачивание функций до их определений значительно упрощает просмотр файла.
Что касается #region в целом, этот вопрос SO охватывает его достаточно хорошо.
Я внес несколько изменений в макрос для поддержки более сложного свертывания кода. Этот метод позволяет вам поместить описание после ключевого слова // # region ala C # и показывает его в коде, как показано:
Пример кода:
//#region InputHandler
var InputHandler = {
inputMode: 'simple', //simple or advanced
//#region filterKeys
filterKeys: function(e) {
var doSomething = true;
if (doSomething) {
alert('something');
}
},
//#endregion filterKeys
//#region handleInput
handleInput: function(input, specialKeys) {
//blah blah blah
}
//#endregion handleInput
};
//#endregion InputHandler
Обновленный макрос:
Option Explicit On
Option Strict On
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Collections.Generic
Public Module JsMacros
Sub OutlineRegions()
Dim selection As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)
Const REGION_START As String = "//#region"
Const REGION_END As String = "//#endregion"
selection.SelectAll()
Dim text As String = selection.Text
selection.StartOfDocument(True)
Dim startIndex As Integer
Dim endIndex As Integer
Dim lastIndex As Integer = 0
Dim startRegions As New Stack(Of Integer)
Do
startIndex = text.IndexOf(REGION_START, lastIndex)
endIndex = text.IndexOf(REGION_END, lastIndex)
If startIndex = -1 AndAlso endIndex = -1 Then
Exit Do
End If
If startIndex <> -1 AndAlso startIndex < endIndex Then
startRegions.Push(startIndex)
lastIndex = startIndex + 1
Else
' Outline region ...
Dim tempStartIndex As Integer = CInt(startRegions.Pop())
selection.MoveToLineAndOffset(CalcLineNumber(text, tempStartIndex), CalcLineOffset(text, tempStartIndex))
selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
selection.OutlineSection()
lastIndex = endIndex + 1
End If
Loop
selection.StartOfDocument()
End Sub
Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer) As Integer
Dim lineNumber As Integer = 1
Dim i As Integer = 0
While i < index
If text.Chars(i) = vbLf Then
lineNumber += 1
i += 1
End If
If text.Chars(i) = vbCr Then
lineNumber += 1
i += 1
If text.Chars(i) = vbLf Then
i += 1 'Swallow the next vbLf
End If
End If
i += 1
End While
Return lineNumber
End Function
Private Function CalcLineOffset(ByVal text As String, ByVal index As Integer) As Integer
Dim offset As Integer = 1
Dim i As Integer = index - 1
'Count backwards from //#region to the previous line counting the white spaces
Dim whiteSpaces = 1
While i >= 0
Dim chr As Char = text.Chars(i)
If chr = vbCr Or chr = vbLf Then
whiteSpaces = offset
Exit While
End If
i -= 1
offset += 1
End While
'Count forwards from //#region to the end of the region line
i = index
offset = 0
Do
Dim chr As Char = text.Chars(i)
If chr = vbCr Or chr = vbLf Then
Return whiteSpaces + offset
End If
offset += 1
i += 1
Loop
Return whiteSpaces
End Function
End Module
В VS 2012 и VS 2015 установите плагин WebEssentials, и вы сможете это сделать.
если вы используете Resharper
Следуйте шагам на этой картинке
затем напишите это в редакторе шаблонов
//#region $name$
$END$$SELECTION$
//#endregion $name$
и назовите его #region
как на этой картинке
надеюсь, это поможет вам
Ни один из этих ответов не работал у меня с Visual Studio 2017.
Лучший плагин для VS 2017: JavaScript Regions
Пример 1:
Пример 2:
Проверено и одобрено:
Регион должен работать без изменения настроек
//#region Optional Naming
var x = 5 -0; // Code runs inside #REGION
/* Unnecessary code must be commented out */
//#endregion
Включение сворачивания области комментариев / ** /
/* Collapse this
*/
Настройки -> Поиск «складывание» -> Редактор: Стратегия складывания -> От «авто» до «отступ».
ТЕГИ: Node.js Nodejs Node js Javascript ES5 ECMAScript комментарий, сворачивание, скрывающая область Код Visual Studio vscode 2018 версии 1.2+ https://code.visualstudio.com/updates/v1_17#_folding-regions
Не только для VS, но почти для всех редакторов.
(function /* RegionName */ () { ... })();
Предупреждение: имеет такие недостатки, как размах.