как реализовать сворачивание регионов / кода в javascript
-
20-09-2019 - |
Вопрос
Как вы можете реализовать регионы, также известные каксворачивание кода для JavaScript в Visual Studio?
Если в javascript есть сотни строк, это будет более понятно при использовании сворачивания кода с регионами, как в vb / C #.
#region My Code
#endregion
Решение
Запись в блоге здесь объясняет это и это вопрос MSDN.
Вам необходимо использовать макросы Visual Studio 2003/2005/2008.
Для верности скопируйте и вставьте запись в блоге:
- Открыть проводник макросов
- Создать новый макрос
- Назови это
OutlineRegions
- Нажмите «Изменить макрос» и вставьте следующий код VB:
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
- Сохраните макрос и закройте редактор.
- Теперь давайте назначим ярлык макросу.Перейдите в Инструменты->Параметры->Среда->Клавиатура и найдите свой макрос в текстовом поле «показать команды, содержащие».
- теперь в текстовом поле под пунктом «Нажать сочетания клавиш» можно ввести желаемое сочетание клавиш.Я использую Ctrl+M+E.Не знаю почему - я просто ввел его первый раз и использую сейчас :)
Другие советы
У Microsoft теперь есть расширение для ВС 2010 который обеспечивает эту функциональность:
Хорошая новость для разработчиков, работающих с последней версией Visual Studio
Тот Самый Веб-основы мы идем с этой функцией .
Примечание:Для использования в VS 2017 Регионы JavaScript : https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
Это легко!
Отметьте раздел, который хотите свернуть, и
Ctrl+М+Ч
А чтобы развернуть, используйте знак «+» слева.
Для тех, кто собирается использовать Visual Studio 2012, существует Основы веб-2012
Для тех, кто собирается использовать Visual Studio 2015, существует Основы веб-2015.3
Использование точно такое, как спросил @prasad.
Выделив раздел кода (независимо от каких-либо логических блоков) и нажав CTRL + M + H, вы определите выделение как область, которую можно свернуть и расширить.
Тот Самый Достижения плагин для Visual Studio прекрасно решает эту проблему.
Благодаря 0A0D за отличный ответ.Мне повезло с этим. Дарин Димитров также является хорошим аргументом в пользу ограничения сложности ваших файлов JS.Тем не менее, я встречаю случаи, когда свертывание функций в соответствии с их определениями значительно упрощает просмотр файла.
Что касается #региона в целом, то это ТАК вопрос покрывает это довольно хорошо.
Я внес несколько изменений в макрос для поддержки более сложного свертывания кода.Этот метод позволяет вам поместить описание после ключевого слова //#region в стиле 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
Теперь это изначально в VS2017:
//#region fold this up
//#endregion
Пробелы между // и # не имеют значения.
Я не знаю, в какой версии это было добавлено, так как не могу найти упоминания об этом в журналах изменений.Я могу использовать его в версии 15.7.3.
В VS 2012 и VS 2015 установите плагин WebEssentials, и вы сможете это сделать.
если вы используете Решарпер
выполните действия, показанные на этой картинке
затем напишите это в редакторе шаблонов
//#region $name$
$END$$SELECTION$
//#endregion $name$
и назови это #region
как на этой картинке
надеюсь, это поможет вам
Ни один из этих ответов мне не помог в Visual Studio 2017.
Лучший плагин для VS 2017: Регионы JavaScript
Пример 1:
Пример 2:
Протестировано и одобрено:
Для визуальной студии 2017.
//#region Get Deactivation JS
.
.
//#endregion Get Deactivation JS
Раньше это не работало, поэтому я скачал расширение с здесь
Регион должен работать без изменения настроек
//#region Optional Naming
var x = 5 -0; // Code runs inside #REGION
/* Unnecessary code must be commented out */
//#endregion
Чтобы включить сворачивание области комментариев /**/
/* Collapse this
*/
Настройки -> Поиск "сворачивание" -> Редактор:Стратегия сворачивания -> От "автоматического" к "отступу".
Теги:Node.js Nodejs Узел js Javascript ES5 ECMAScript сворачивание комментариев область скрытия Visual Studio code vscode 2018 версия 1.2+ https://code.visualstudio.com/updates/v1_17#_folding-regions
Не только для VS, но почти для всех редакторов.
(function /* RegionName */ () { ... })();
Предупреждение: имеет такие недостатки, как объем.