實現js代碼折疊


文章:http://www.cnblogs.com/over140/archive/2009/06/15/1503712.html

環境:Microsoft Visual Studio 2008

 1.      打開宏資源管理器:視圖 -> 其他窗口 -> 宏資源管理器

2.      創建一個新模塊

3.  編輯宏:  選中模塊 -> 右鍵編輯

View 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()
        '農民伯伯 --- 自動為"//#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 
                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

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

    注意我加的代碼段,如果不加,並且你的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來[展開/折疊]代碼了,注意關閉之后重新打開需要再啟動一次宏,展開效果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM