Friday, May 17, 2024
147
rated 0 times [  149] [ 2]  / answers: 1 / hits: 149747  / 15 Years ago, thu, december 17, 2009, 12:00:00

How can you implement regions a.k.a. code collapse for JavaScript in Visual Studio?



If there are hundreds of lines in javascript, it'll be more understandable using code folding with regions as in vb/C#.



#region My Code

#endregion

More From » visual-studio

 Answers
6

Blog entry here explains it and this MSDN question.



You have to use Visual Studio 2003/2005/2008 Macros.



Copy + Paste from Blog entry for fidelity sake:




  1. Open Macro Explorer

  2. Create a New Macro

  3. Name it OutlineRegions

  4. Click Edit macro and paste the following VB code:



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



  1. Save the Macro and Close the Editor

  2. Now let's assign shortcut to the macro. Go to Tools->Options->Environment->Keyboard and search for your macro in show commands containing textbox

  3. now in textbox under the Press shortcut keys you can enter the desired shortcut. I use Ctrl+M+E. I don't know why - I just entered it first time and use it now :)


[#98051] Sunday, December 13, 2009, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
acaciac

Total Points: 317
Total Questions: 117
Total Answers: 128

Location: France
Member since Thu, Oct 27, 2022
2 Years ago
;