Jak zaimplementować regiony zwane zwijaniem kodu dla JavaScript w programie Visual Studio?
Jeśli w javascript są setki wierszy, będzie to bardziej zrozumiałe przy użyciu zawijania kodu z regionami, jak w vb / C #.
#region My Code
#endregion
Jak zaimplementować regiony zwane zwijaniem kodu dla JavaScript w programie Visual Studio?
Jeśli w javascript są setki wierszy, będzie to bardziej zrozumiałe przy użyciu zawijania kodu z regionami, jak w vb / C #.
#region My Code
#endregion
Odpowiedzi:
Wpis na blogu wyjaśnia to i to pytanie MSDN .
Musisz używać makr Visual Studio 2003/2005/2008.
Kopiuj + wklej z wpisu na blogu dla zachowania wierności:
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
Dobra wiadomość dla programistów pracujących z najnowszą wersją programu Visual Studio
Pakiet Web Essentials będzie dostępny z tą funkcją.
Uwaga: dla VS 2017 użyj regionów JavaScript: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
Firma Microsoft ma teraz rozszerzenie programu VS 2010, które zapewnia następujące funkcje:
To łatwe!
Zaznacz sekcję, którą chcesz zwinąć i
Ctrl + M + H
Aby rozwinąć, użyj znaku „+” po jego lewej stronie.
Dla tych, którzy mają zamiar używać Visual Studio 2012, istnieje Web Essentials 2012
Dla tych, którzy mają zamiar używać Visual Studio 2015, istnieje Web Essentials 2015.3
Użycie jest dokładnie takie, jak pytał @prasad
Zaznaczając sekcję kodu (niezależnie od jakichkolwiek bloków logicznych) i naciskając CTRL + M + H, zdefiniujesz zaznaczenie jako region, który można zwijać i rozszerzać.
W JSEnhancements plugin dla adresów Visual Studio to ładnie.
Dzięki 0A0D za świetną odpowiedź. Miałem z tym szczęście. Darin Dimitrov również przedstawia dobry argument na temat ograniczania złożoności plików JS. Mimo to zdarzają się sytuacje, w których zwijanie funkcji do ich definicji znacznie ułatwia przeglądanie pliku.
Jeśli chodzi o ogólny # region, to pytanie SO obejmuje to całkiem dobrze.
Dokonałem kilku modyfikacji w makrze, aby obsługiwać bardziej zaawansowane zwijanie kodu. Ta metoda umożliwia umieszczenie opisu po słowie kluczowym // # region ala C # i wyświetlenie go w kodzie, jak pokazano:
Przykładowy kod:
//#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
Zaktualizowane makro:
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
Na VS 2012 i VS 2015 zainstaluj wtyczkę WebEssentials i będziesz w stanie to zrobić.
jeśli używasz Resharper
odłóż kroki na tym zdjęciu
następnie zapisz to w edytorze szablonów
//#region $name$
$END$$SELECTION$
//#endregion $name$
i nazwij to #region
jak na tym obrazku
mam nadzieję, że to ci pomoże
Żadna z tych odpowiedzi nie zadziałała w moim przypadku w Visual Studio 2017.
Najlepsza wtyczka dla VS 2017: Regiony JavaScript
Przykład 1:
Przykład 2:
Przetestowane i zatwierdzone:
Region powinien działać bez zmiany ustawień
//#region Optional Naming
var x = 5 -0; // Code runs inside #REGION
/* Unnecessary code must be commented out */
//#endregion
Aby włączyć zwijany obszar komentarza / ** /
/* Collapse this
*/
Ustawienia -> Wyszukaj „składanie” -> Edytor: Strategia składania -> Od „auto” do „wcięcia”.
TAGI: Node.js Nodejs Node js Javascript ES5 ECMAScript komentarz składany ukryty region Visual studio code vscode 2018 wersja 1.2+ https://code.visualstudio.com/updates/v1_17#_folding-regions
Nie tylko dla VS, ale prawie dla wszystkich redaktorów.
(function /* RegionName */ () { ... })();
Ostrzeżenie: ma wady, takie jak zasięg.