Автор XuLun

В Быстрый запуск подключаемых модулей VSCode: выполнение команд мы узнали, как написать подключаемый модуль команд VSCode, который управляет курсором. Для текстового редактора исходного кода команды редактирования очень важны. Однако VSCode в основном используется для написания кода, а не текста. Поэтому в этой части серии руководств мы перейдем непосредственно к той части приложения, которая помогает в написании кода.

Расширения, относящиеся к языку программирования

Давайте сначала посмотрим на рисунок, чтобы увидеть расширения языка программирования, которые позволяет нам реализовать VSCode. Как видно из приведенного ниже рисунка, расширения языка программирования VSCode по функциям можно разделить на две категории: декларативные функции и функции языкового сервера.

Давайте рассмотрим небольшое подмножество языка программирования BASIC, чтобы показать, как расширить язык программирования.

Во-первых, мы добавляем поддержку языковой конфигурации в contributes в package.json:

"languages": [{
            "id": "basic",
            "extensions": [
                ".bas"
            ],
            "configuration": "./language-configuration.json"
        }

Комментарий

В BASIC (') используется для представления однострочных комментариев, а (/' '/) используется для представления многострочных комментариев. Мы можем написать language-configuation.json следующим образом:

"comments": {
        "lineComment": "'",
        "blockComment": [
            "/'",
            "'/"
        ]
    }

Традиционно в языке программирования BASIC для представления комментария используется оператор REM. Мы можем записать это так:

"comments": {
        "lineComment": "REM ",
        "blockComment": [
            "/'",
            "'/"
        ]
    },

После определения мы можем использовать Ctrl+K (Windows) или Cmd-K (Mac) для запуска открытия или закрытия комментариев.

Соответствие кронштейнам

Давайте соединим круглые и квадратные скобки соответственно:

"brackets": [
        [
            "[",
            "]"
        ],
        [
            "(",
            ")"
        ],
    ],

Автоматическое завершение скобок

Функция автоматического заполнения скобок может использоваться для предотвращения пропуска половины скобок:

"autoClosingPairs": [
        {
            "open": "\"",
            "close": "\""
        },
        {
            "open": "[",
            "close": "]"
        },
        {
            "open": "(",
            "close": ")"
        },
        {
            "open": "Sub",
            "close": "End Sub"
        }
    ]

В предыдущем примере, если введено ("), будет добавлена ​​другая половина ("). То же верно и для других скобок.

Скобки в выбранной области

После того, как область выбрана и введена половина скобок, область автоматически будет окружена парой полных скобок, что называется функцией автоматического окружения.

Например:

"surroundingPairs": [
        [
            "[",
            "]"
        ],
        [
            "(",
            ")"
        ],
        [
            "\"",
            "\""
        ],
        [
            "'",
            "'",
        ]
    ],

Сворачивание кода

После добавления дополнительных функций и блоков кода будет трудно читать код. Мы можем свернуть блок кода. Это тоже старая функция со времен Vim и Emacs.

Давайте возьмем пример складывания Sub / End Sub и посмотрим, как складывается код:

"folding": {
        "markers": {
            "start": "^\\s*Sub.*",
            "end": "^\\s*End\\s*Sub.*"
        }
    }

Ниже приводится эффект складывания Sub:

Первоисточник