天天看點

讓Visual Studio 也支援JS代碼折疊 [ Visual Studio | #region | #endregion ]

 1.      打開宏資料總管:視圖 -> 其他視窗 -> 宏資料總管

   

2.      建立一個新子產品

  

3.  編輯宏:  選中子產品 -> 右鍵編輯

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()

        '農民伯伯 --- 自動為"//#endregion"結束的代碼添加最後一行,不然出錯

        If selection.Text.EndsWith(REGION_END) Then

            selection.EndOfLine()

            selection.NewLine()

            selection.SelectAll()

        End If

        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 

讓Visual Studio 也支援JS代碼折疊 [ Visual Studio | #region | #endregion ]

                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)

                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)

                selection.OutlineSection()

                lastIndex = endIndex + 1

        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

            i += 1

        End While

        Return lineNumber

    End Function

End Module

    儲存即可。這裡可以省去建立宏的步驟,他會根據代碼自動給你生成一個宏的。

    注意我加的代碼段,如果不加,并且你的JS最後一行為#endregion,宏将報錯,顯示“值不在預期的範圍内”。 

4.  設定快捷鍵

   

    4.1  工具 -> 選項 - > 環境 -> 鍵盤

    4.2  在顯示指令包含下面的文本框中輸入宏名outli,不用輸全,下面能顯示你建立的宏

    4.3  點一下 按快捷鍵 下面的文本框, 然後自定義快捷鍵組合,我定義的是Ctrl+M,Ctrl+J,點配置設定(别忘了!),點确定。

5.效果

    5.1  輸入代碼:

//aasdsadsad

//#region

//#endregion

    5.2  快捷鍵Ctrl+M,Ctrl+J啟動宏,能看到系統的右下角顯示可愛的小方塊在轉動,js編輯框顯示效果如下:

     

    5.3  之後就可以用快捷鍵Ctrl+M,Ctrl+L來[展開/折疊]代碼了,注意關閉之後重新打開需要再啟動一次宏,展開效果如下:

      

繼續閱讀