как реализовать сворачивание регионов / кода в javascript

StackOverflow https://stackoverflow.com/questions/1921628

Вопрос

Как вы можете реализовать регионы, также известные каксворачивание кода для JavaScript в Visual Studio?

Если в javascript есть сотни строк, это будет более понятно при использовании сворачивания кода с регионами, как в vb / C #.

#region My Code

#endregion
Это было полезно?

Решение

Запись в блоге здесь объясняет это и это вопрос MSDN.

Вам необходимо использовать макросы Visual Studio 2003/2005/2008.

Для верности скопируйте и вставьте запись в блоге:

  1. Открыть проводник макросов
  2. Создать новый макрос
  3. Назови это OutlineRegions
  4. Нажмите «Изменить макрос» и вставьте следующий код 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
  1. Сохраните макрос и закройте редактор.
  2. Теперь давайте назначим ярлык макросу.Перейдите в Инструменты->Параметры->Среда->Клавиатура и найдите свой макрос в текстовом поле «показать команды, содержащие».
  3. теперь в текстовом поле под пунктом «Нажать сочетания клавиш» можно ввести желаемое сочетание клавиш.Я использую Ctrl+M+E.Не знаю почему - я просто ввел его первый раз и использую сейчас :)

Другие советы

У Microsoft теперь есть расширение для ВС 2010 который обеспечивает эту функциональность:

Расширения редактора JScript

Хорошая новость для разработчиков, работающих с последней версией Visual Studio

Тот Самый Веб-основы мы идем с этой функцией .

Посмотри на это

enter image description here

Примечание:Для использования в 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, и вы сможете это сделать.

http://vswebessentials.com/features/javascript

если вы используете Решарпер

выполните действия, показанные на этой картинке

enter image description hereзатем напишите это в редакторе шаблонов

  //#region $name$
$END$$SELECTION$
  //#endregion $name$

и назови это #region как на этой картинкеenter image description here

надеюсь, это поможет вам

Ни один из этих ответов мне не помог в Visual Studio 2017.

Лучший плагин для VS 2017: Регионы JavaScript

Пример 1:

enter image description here

Пример 2:

enter image description here

Протестировано и одобрено:

enter image description here

Для визуальной студии 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 */ () { ... })();

Предупреждение: имеет такие недостатки, как объем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top