[Перевод] Все июльские обновления VS Code 2022

bu7l0i4lwflwjwqef8ajguiio8c.png

Работа с Python в VS Code 1.70 стала проще, точность определения конфликтов слияния Git — выше, а ещё появились доработки интеграции с интерактивными блокнотами Jupyter. К старту нашего флагманского курса по Data Science делимся подробностями.


Содержание



В обновлении 1.70.1 устраняются эти проблемы.

Добро пожаловать в июльский выпуск Visual Studio Code. В этой версии много обновлений. Надеемся, они вам понравятся. Вот ключевые из них:

Прочитать эти заметки о выпуске можно в разделе обновлений на сайте code.visualstudio.com.


Послушайте обсуждение новых функций в команде VS Code: запись есть на нашем YouTube-канале.

Инсайдеры: загрузите ночную сборку инсайдеров и пробуйте последние обновления функций в момент их появления.

Рабочее место


Упрощённая настройка строки заголовков


Обладатели пользовательской строки заголовков (по умолчанию в Windows, macOS и вебе), возможно, заметили: мы добавили в неё интерактивного контента. Да, уже имеются настройки, которые позволяют скрыть каждый из этих элементов по отдельности. Но теперь, нажав правую кнопку мыши в строке заголовков, можно попасть в контекстное меню и переключиться между строкой меню (не отображается на рабочем столе macOS), командным центром и управлением макетами окон.

Контекстное меню строки заголовков

Пользователям Windows привычно контекстное меню системы. Его всё ещё можно вызвать, нажав правую кнопку мыши на значке VS Code в левом верхнем углу окна или сочетанием клавиш Alt+Space. В последнем случае для определения поведения используется положение мыши, поэтому пользовательское меню появится, если она будет поверх строки заголовков.

Контекстное меню системы

В Linux (из-за проблемы #156397), если нажать на свободное место в строке заголовков, контекстное меню не откроется. Нужно нажать правую кнопку мыши на одном из элементов строки заголовков, тогда он скроется.

Улучшено свёртывание строки меню


Чтобы освободить место для командного центра, мы попытались сжать строку меню до меню-гамбургера. Но, получив обратную связь от пользователей, вернулись к прежнему поведению строки меню при свёртывании, свернули бóльшую часть меню и только после этого перешли на меню-гамбургер.

Адаптивное свёртывание строки меню

Доступно изменение масштаба строки заголовков на macOS


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

Изменение масштаба строки заголовков на macOS

Выбор областей свёртывания


Командой Ctrl+K Ctrl+, Create Manual Folding Ranges from Selection создаётся диапазон свёртывания, который и сворачивается. Этими диапазонами ручного свёртывания дополняются те, что вычисляются автоматически.

Командой Ctrl+K Ctrl+.Remove Manual Folding Ranges диапазоны ручного свёртывания можно снова «развернуть».

Диапазоны ручного свёртывания

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

Сохранение свёртываемых диапазонов


Теперь в VS Code свёртываемые диапазоны сохраняются, даже не будучи больше частью тех, что вычисляются не вручную. Типичный пример: пользователь выполняет закомментирование файла, начинает строковый литерал или допускает синтаксическую ошибку, что делает невозможным создание всех диапазонов. Такие свёртываемые диапазоны становятся «возвращаемыми». Они удаляются после возвращения на то же место вычисляемых не вручную диапазонов или с помощью команды Remove Manual Folding Ranges.

Возвращаемые диапазоны свёртывания

Скрытие элементов управления свёртыванием


Элементы управления свёртыванием в «желобке» (gutter) теперь можно скрыть через настройку "editor.showFoldingControls": "never". Диапазоны свёртывания по-прежнему можно развернуть и свернуть с помощью команд и сочетаний клавиш.

Улучшения редактора трёхстороннего слияния


Мы продолжили работу над новым редактором трёхстороннего слияния и включили его по умолчанию в этом выпуске. Открывается он нажатием на конфликтующий файл во вкладке Source Control.

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

Кроме того, чтобы повысить точность конфликтов слияния, мы начали изучать альтернативные алгоритмы выявления несовпадений. Если вы столкнулись с неоптимальным выделением или выравниванием изменений в редакторе несовпадений или редакторе слияния, эти случаи нам хотелось бы записать в нашем трекере ошибок GitHub!

Параметр командной строки merge


Теперь открыть редактор слияния можно с помощью параметров командной строки:

-m --merge     Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.


И использовать VS Code в качестве инструмента слияния для Git, например чтобы настроить в .gitconfig это:

[merge]
  tool = code
[mergetool "code"]
  cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED


Оформление поиска по файлам


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

Оформление поиска по файлам

Множественное выделение при поиске


Во вкладке Search теперь поддерживается множественное выделение. Любые действия (например, «отклонить» или «заменить») над одним результатом поиска будут выполняться и с другими результатами.

Множественное выделение во вкладке Search с действиями по исключению и принятию

Средство управления поиском в древовидных представлениях


В древовидных представлениях, таких как «Проводник», теперь поддерживается средство управления поиском. Оно вызывается нажатием Ctrl+F и может применяться для выделения соответствующих элементов или переключения кнопки Filter, чтобы скрыть все элементы, которые не соответствуют поисковому запросу.

Поиск и фильтрация с помощью средства управления поиском в древовидном представлении

Примечание: если вы привыкли открывать средство управления поиском в редакторе нажатием Ctrl+F, когда «Проводник» в фокусе, можете соответствующим образом настроить привязки клавиш:

{
  "key": "cmd+f", // "ctrl+f" on Windows/Linux
  "command": "-list.find",
  "when": "listFocus && listSupportsFind"
}


Создание произвольных файлов с помощью New File


Теперь, чтобы создать произвольный файл, вместо File > New File… (или ссылка New File… на странице Get Started, можно в поле быстрого ввода ввести имя файла, и он будет создан на диске.

Поле ввода с введённым в него test.js inputted into it and the entry New File(test.js) selected

Терминал


Интеграция с оболочкой включена по умолчанию


Автоматическое внедрение интеграции с оболочкой, которое убрали из предварительной версии в прошлом выпуске, теперь включено по умолчанию. Для поддерживаемых настроек оболочки (большинство конфигураций bash, zsh и pwsh) всё это должно работать без каких-либо изменений и с таким оформлением команд:

Когда включена интеграция с оболочкой, рядом с выполняемыми в терминале командами появляются синие, красные и серые кружки

Тема: Sapphire

Примечание: в Windows для поддержки интеграции с оболочкой понадобится PowerShell 7 (pwsh). Устанавливается через https://aka.ms/PSWindows.


Если функции интеграции с оболочкой не активируются автоматически, придётся выполнить ручную установку, которая в этом выпуске упрощена.

Автоматическое внедрение интеграции включается, когда параметр terminal.integrated.shellIntegration.enabled установлен в true. Чтобы отключить эту функцию, добавьте в файл settings.json следующее:

"terminal.integrated.shellIntegration.enabled": "false"


Будет отключено внедрение интеграции с оболочкой только в VS Code. Если в вашей настройке включена интеграция с оболочкой для другого терминала, предназначенного для работы с VS Code, в нём она будет приниматься. Если вам не нравится оформление команд и/или полосы прокрутки, можно отключить только их отображение, продолжая пользоваться преимуществами дополнительной функциональности интеграции с оболочкой.

Упрощена ручная установка интеграции с оболочкой


Раньше она проходила в несколько этапов и зависела от платформы и оболочки. Теперь для извлечения скрипта интеграции с оболочкой в ней используется CLI code; интеграция выполняется кросс-платформенно и при подключении к удалённому окну, то есть при синхронизации в dotfiles всё должно работать.

# Manual install on bash
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"


Как установить интеграцию для других оболочек, читайте в Terminal shell integration.

Дополнительные варианты настройки интеграции с оболочкой


Благодаря новому параметру terminal.integrated.shellIntegration.decorationsEnabled можно отображать оформление команд в gutter, overviewRuler либо ни там, ни там. Ради удобства доступа этот параметр можно изменить с помощью Configure Command Decorations в контекстном меню при нажатии на оформлении. Чтобы увидеть выпадающий список параметров, выберите Toggle visibility.

Эта новая опция Configure Command Decorations содержится в контекстном меню оформления команд

Можно также настроить значки из выпадающего списка: default, success или error.

Стандартные настройки цвета и значков вкладок


Значок и цвет вкладок терминала по умолчанию можно задать для каждой папки с помощью terminal.integrated.tabs.defaultIcon и terminal.integrated.tabs.defaultColor.

Расширенные привязки клавиш PowerShell


Благодаря интеграции с оболочкой имеются дополнительные привязки клавиш PowerShell, такие как Ctrl+Space. Раньше их не было из-за отсутствия кодировки VT. Теперь, когда есть интеграция с оболочкой в pwsh, должны работать следующие привязки клавиш:

  • Ctrl+Space — по умолчанию MenuComplete только на Windows.
  • Alt+Space — по умолчанию SetMark.
  • Shift+Enter — по умолчанию AddLine.
  • Shift+End — по умолчанию SelectLine.
  • Shift+Home — по умолчанию SelectBackwardsLine.


Это относится ко всем платформам, даже Linux и macOS, где эти привязки клавиш обычно невозможны. Значения по умолчанию всегда можно сбросить в профиле pwsh с помощью Set-PSReadLineKeyHandler. Если вы ожидали другие привязки клавиш, напишите нам.

Запуск последней команды как замена обратного поиска


Когда включена интеграция с оболочкой, наша цель — чтобы запуск последней команды был упрощённой кросс-оболочной заменой обратного поиска оболочки (Ctrl+R). Существует новый режим непрерывного поиска, при запуске команды это режим по умолчанию. Его поведение в большинстве оболочек подобно Ctrl+R, с возможностью возвращения к нечёткому поиску:

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

Доступен новый ключ контекста inTerminalRunCommandPicker, чтобы настроить привязку клавиш подобно Ctrl+R для перехода к следующему соответствию. Например, следующие привязки клавиш —  это теперь фактически полная замена обратного поиска оболочки, а Ctrl+Alt+R — резервный вариант старого поведения:

{ "key": "ctrl+r",     "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" },
{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" },
{ "key": "ctrl+r",     "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" },
{ "key": "ctrl+c",     "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" },


Многострочными командами теперь, где необходимо, отображается символ новой строки, а до и после вставляемого текста будут добавляться escape-последовательности. То есть с этими командами обращаются так, как если бы они вставлялись для поддержки оболочек. Как правило, это означает, что все они будут добавляться в ту же командную строку, а не выполняться по отдельности.

При запуске последней команды теперь показывается символ возврата ⏎ для визуализации новых строк, который имеет номер знака в Юникоде U+23CE

Другие улучшения интеграции с оболочкой


Вот ещё небольшие улучшения интеграции с оболочкой:

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

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

  • Доступна новая команда workbench.action.terminal.copyLastCommand, чтобы привязкой клавиш копировать вывод последней команды (сочетание клавиш Ctrl/Cmd+Shift+Up, Ctrl/Cmd+C, Escape, Ctrl/Cmd+End).
  • Интеграция с оболочкой Bash:
    • Поддерживается больше форматов $PROMPT_COMMAND.
    • Уже применяется вспомогательное средство bash-preexec, а значит, интеграция с оболочкой должна быть ещё лучше.


Улучшения рендеринга


Ряд улучшений внесён в рендеринг терминала при включённом ускорении GPU:

  • Полукруглые символы Powerline теперь настраиваются. Как и стрелочки в предыдущем выпуске, они должны гармонично сочетаться с соседними ячейками, растягиваясь по высоте ячейки и даже по высоте строки.

    Для отображения полукруглых символов Powerline настройка шрифта теперь не нужна

  • В символах отрисовки рамок с закруглёнными углами (, , , ) кривая стала плавней.

    Эти символы с закругленными углами теперь отображаются как ¼ идеальной окружности

  • Улучшена обрезка глифов при изменении цвета фона, которая часто происходила при выводе в npm предупреждения.

    Широкие символы, такие как W, иногда исчезают из фона ячейки. Например, когда фон текста жёлтый, слева от символа W слова WARN  неожиданно появлялись жёлтые пиксели. На изображении справа показано, что теперь это исправлено

  • Похожая проблема была при сглаживании, когда некоторые глифы накладывались на другие символы, отчего ухудшался внешний вид элементов. Проще проиллюстрировать это на примере с фоном. Пиксель в символе k слова Fork мог выйти за пределы ячейки и в другом направлении. Этот пиксель больше не появится в глифе, ведь он почти того же цвета, что и фон.

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


Контроль версий


Улучшения управляющей кнопки


Мы продолжили работу с управляющей кнопкой в Source Control на основе обратной связи от пользователей:

  • Управляющая кнопка Sync Changes отображается, только когда локальная ветвь с высокой степенью достоверности находится либо впереди, либо позади ветви удалённого отслеживания.
  • Управляющая кнопка Commit включается только на основе списка изменённых ресурсов с учётом параметров интеллектуальной фиксации:
    • git.enableSmartCommit
    • git.suggestSmartCommit
    • git.smartCommitChanges

  • Значок управляющей кнопки Commit обновляется исходя из параметров защиты ветви:
    • git.branchProtection
    • git.branchProtectionPrompt


Улучшено разрешение конфликтов при перемещении изменений


На этом этапе мы устранили небольшие проблемы в потоке перемещения изменений при разрешении конфликтов слияния. Теперь пользователи смогут продолжить операцию перемещения изменений из одной ветви в другую с помощью кнопки Commit во вкладке Source Control после разрешения всех конфликтов слияния.

Проверка орфографии в поле ввода коммита


На этом этапе мы подтвердили, что доступны все необходимые API расширений для поддержки проверки орфографии в поле ввода коммитов. Мы связались с авторами двух популярных расширений для проверки орфографии и отправили им несколько пул-реквестов (запросов на включение изменений в репозиторий проекта), чтобы показать, как обновить их расширения для включения проверки орфографии текста описания коммита.

Отладка


Отладка на JavaScript


Когда вы создаёте конфигурацию запуска для отладки программы на JavaScript/TypeScript, можете установить "console": "integratedTerminal", чтобы запустить эту программу в терминале (а не создавать процесс напрямую). Несколько месяцев назад мы заметили, что "args" в конфигурации launch.json частично, но не полностью переместились в оболочку. Это означало, что при попытке передать аргумент в программу в оболочке случайно может быть вызвано особое поведение. Мы разобрались с этим, а затем поняли, что было бы неплохо устанавливать аргументы, в которых есть символы с особым значением для оболочки, и что часть пользователей применяют это поведение.

Мы обсудили, как правильно исправить, и решили, что это поведение нужно включить и что требуются изменения в Debug Adapter Protocol. Внеся это изменение, мы внедрили его в VS Code и js-debug. На очереди и другие адаптеры отладки.

Вот как использовать новое поведение в конфигурации запуска узла:

{
    "type": "node",
    "console": "integratedTerminal",
    ...

    // If you pass args as a single string, the characters will not be escaped for the terminal,
    // so the command in backticks will be evaluated, and output will be redirected to "outfile".
    // The user is responsible for knowing the type of shell that this will be run in,
    // and doing any escaping necessary.
    "args": "`echo hello` > outfile",

    // If you pass args as an array, the characters will be escaped for the terminal,
    // so that the program receives them verbatim.
    "args": ["`echo hello` > outfile"]
}


Выбор сеансов отладки


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

При выделении сеанса в средстве выбора фокус ввода перемещается на сеанс отладки во вкладке Call Stack. Действия при отладке, например Pause, Step, Restart, Stop, выполняются в сеансе отладки с фокусом ввода. При выделении сеанса также отображается консоль отладки сеанса.

Демоверсия средства выбора сеанса отладки

Задачи


Поддержка фильтров для команды Run Task


При действии Tasks: Run Task (workbench.action.tasks.runTask) поддерживается фильтрация по имени и типу задач для более лаконичного и настраиваемого способа их выбора и выполнения.

Например:

{
  "key": "ctrl+h",
  "command": "workbench.action.tasks.runTask",
  "args": {
    "task": "VS Code - Build",
    "type": "npm"
  }
}


Улучшен поток автоматических задач


Благодаря функционалу Trusted Workspace в VS Code поток автоматических задач упрощён. По умолчанию автоматические задачи выполняются, если папка доверенная. В противном случае по каждой папке получается запрос их выполнения. Это поведение настраивается с помощью параметра task.allowAutomaticTasks (по умолчанию auto): спрашивать перед запуском автоматической задачи всегда (on) или никогда (off).

Языки


Сохранение символов новой строки при форматировании JSON


Теперь можно сохранять исходное положение строки при её форматировании в документах JSON. Например, значения в одной строке массива после форматирования сохранятся в той же строке. Дополнительные разрывы строк (символы новой строки) в файлах JSON также сохраняются. Чтобы включить эту функцию, задайте в редакторе настроек параметр JSON > Format: Keep Lines.

Блокноты


Переход к последней ячейке с ошибкой


Теперь есть кнопка перехода к последней запущенной ячейке с ошибкой. Это же действие выполняется и при запуске Notebook: Go to Most Recently Failed Cell.

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

Демонстрация перехода к последней ячейке с ошибкой

Предварительный просмотр блокнота Markdown с вложением


Теперь в Jupyter Notebook можно отображать встроенные изображения формата base64.

Изображения, вставленные в Jupyter notebook, на которые ссылаются через ![image alt-text](attachment:image.png), теперь отображаются в блокнотах VS Code, как и было задумано.

Следующий исходный код Markdown:

Исходный код ячейки Markdown блокнота со ссылкой на изображение

Будет отображаться как:

Предварительный просмотр ячейки Markdown блокнота с вложением

Общий доступ к ссылкам на блокнот


В команде Copy vscode.dev Link подменю Share теперь поддерживаются ссылки на блокнот.

VS Code для веба


Установка языка интерфейса


Теперь с помощью кнопки Set Display Language можно задать язык интерфейса браузера. Кнопка доступна в расширении языкового пакета во вкладке Extensions.

Кнопка Set Display Language в языковом пакете во вкладке Extensions

Убрать язык интерфейса можно с помощью кнопки Clear Display Language в расширении языкового пакета установленного в данный момент языка.

Кнопка Clear Display Language в текущем языковом пакете во вкладке Extensions

Улучшения расширений


Python


Начало работы


В «пошаговом разборе» в расширении для Python теперь осуществляется постепенный переход пользователей к установке, если необходимо, и выбору Python. Если Python не установлен, открывается Microsoft Store или значок пошагового руководства и пользователи могут автоматически запустить отображаемые инструкции. Любые подсказки, связанные с интерпретаторами, отображаются не при запуске, а только когда они нужны для выполнения действия пользователя. Кроме того, подсказки пользовательского интерфейса стали точнее в отношении ошибок и предлагаемых изменений.

Начало работы с Python. Пошаговое руководство

Баннер
Прокачаем вас в Python или поможем освоить самые востребованные IT-профессии:

Информация об интерпретаторе в строке состояния


Добавлен новый параметр python.interpreter.infoVisibility, с помощью которого определяется, когда информация о выбранном интерпретаторе отображается в строке состояния. По умолчанию информация об интерпретаторе отображается, только когда связанные с Python файлы открыты (onPythonRelated). Параметру можно задать значение always, чтобы возвращаться к старому поведению, при котором выбранный интерпретатор отображается независимо от того, какой файл открыт. Статус предупреждения (warning) добавляется для указания на ситуации, когда выбранный интерпретатор недопустим:

Информация об интерпретаторе в строке состояния

Автоматические конфигурации отладки


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

В расширении распознаются проекты на Django, Flask и FastApi, а также простые файлы Python.

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

Автоматическая конфигурация отладки на Flask

Расширение WWBD


Появилось новое экспериментальное расширение WWBD как песочница для идей рабочего процесса среды Python. Теперь есть команда Create Environment для настройки новой виртуальной среды (все детали и другой функционал расширения см. на странице WWBD). С другими рассматриваемыми идеями, в том числе поддержки conda, можно ознакомиться в разделе категорий идей репозитория проекта.

Jupyter


Копирование графических изображений в буфер обмена


Теперь в расширении Jupyter можно копировать в буфер обмена графические объекты из вывода ячеек. Убедитесь, что выбрана подходящая презентация, поскольку пока поддерживается только вывод в формате PNG:

Выберите изображение/png при копировании графического объекта в буфер обмена

Чтобы скопировать в буфер обмена, нажмите кнопку справа вверху:

Кнопка для копирования графических объектов

Веб-расширение


В веб-версию расширения Jupyter перенесён следующий функционал:

  • средство просмотра графиков;
  • средство просмотра фреймов данных.


Чтобы с ними поэкспериментировать, запустите Jupyter с локального компьютера:

jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net


А затем подключитесь из vscode.dev с помощью команды Jupyter: Specify Jupyter server for connections.

Чтобы получить дополнительную информацию и прокомментировать, см. это обсуждение.

Восстановление интерактивного окна


Сеансы интерактивного окна теперь можно восстановить при перезагрузке окна VS Code, включив параметр interactiveWindow.restore.

Восстановление интерактивного окна

Ограничения: исходные состояния ядра не являются постоянными при перезагрузке окна (см. подробнее в этом обсуждении). Если использовать удалённый сервер Jupyter, интерактивное окно подключается к предыдущим сеансам ядра при перезагрузках.

Загрузка переменных окружения из файлов .env


В загрузку переменных окружения из файлов .env внесён ряд исправлений, в том числе обнаружение в этих файлах изменений. В ядрах Python переменные окружения теперь загружаются из файла, определённого в параметре python.envFile.

Запросы на включение изменений и вопросы GitHub


Достигнут прогресс в расширении GitHub Pull Requests and Issues, которое позволяет работать с запросами на включение изменений и вопросами GitHub, создавать их и управлять ими. Вот основные улучшения этого выпуска:

  • Новая кнопка для отображения только изменений, внесённых в pull request с момента последнего просмотра.
  • Новое действие Commit & Create Pull Request во вкладке Source Control позволяет сделать гит коммит и сразу перейти ко вкладке Create PR.
  • Параметр githubPullRequests.pullRequestDescription можно использовать для настройки исходного текста описаний pull request.


Другие улучшения смотрите в логе изменений для версии расширения 0.48.0.

Удалённая разработка


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

Узнайте о новом функционале расширения и об исправлении багов в заметках о выпуске, в разделе Remote Development.

Предварительный просмотр


Редактор с «липкой» прокруткой


Теперь можно отображать пользовательский интерфейс с областью, где находится пользователь во время прокрутки. В пользовательском интерфейсе с «липкой» прокруткой показывается, в каком классе / интерфейсе / пространстве имён / функции / методе / конструкторе находится верхняя часть редактора, помогая определить местоположение в документе. Включите «липкую» прокрутку с помощью параметра editor.experimental.stickyScroll.enabled.

«Липкая» прокрутка и показ области исходного кода файла TypeScript

Поддержка TypeScript 4.8


В это обновление включена поддержка предстоящего выпуска TypeScript 4.8. Чтобы узнать подробнее, над чем сейчас работают в команде TypeScript, смотрите план рабочего цикла разработки TypeScript 4.8.

Чтобы начать использовать ночные сборки TypeScript 4.8, установите расширение TypeScript Nightly.

Профили параметров


Последние пару месяцев мы работали над поддержкой Settings Profiles в VS Code — одним из самых популярных запросов сообщества. Эта функция доступна для предпросмотра в выпуске Insiders с помощью параметра workbench.experimental.settingsProfiles.enabled. Попробуйте её и дайте обратную связь, создав вопросы в репозитории VS Code или оставив комментарий в проблеме #116740.

На этом этапе мы также добавили поддержку Settings Profiles в VS Code для веба. Можете попробовать её с помощью insiders.vscode.dev и того же параметра workbench.experimental.settingsProfiles.enabled.

Демо профилей параметров с показом темы, положения панели действий, уровня масштаба, которые меняются при переключении профиля

Тема: светло-розовая

Переподключение к задаче


При перезагрузке окна к задачам наблюдения можно переподключиться, активировав task.experimental.reconnection. В итоге — быстрее возвращение к работе после изменения расширения или обновления версии VS Code.

Действия в коде


Мы работаем над улучшением Code Actions в VS Code. Code Actions включают Refactorings, действия с исходным кодом и быстрые исправления.

Новый, экспериментальный элемент управления Code Actions можно открыть из контекстного меню выбрав Refactor или Source Action из lightbulb или через Quick Fix. Попробуйте с помощью параметра editor.experimental.useCustomCodeActionMenu. Дайте обратную связь, создав вопросы в репозитории VS Code или оставив комментарий в проблеме #152913.

Из нового элемента управления Code Action также доступны предпросмотры рефакторинга для действий в коде. Чтобы ознакомиться с предпросмотром, наведите курсор на включённые элементы. Для выбора действий в коде, а также предпросмотра этого выбора поддерживаются пользовательские привязки клавиш.

Демо элемента управления Code Action с показом доступа к нему из контекстного меню, lightbulb и Quick Fix.

На этом этапе мы также добавили поддержку пользовательских привязок клавиш для действий в коде Code Actions, в том числе быстрое исправление Quick Fix (Ctrl+). Можете протестировать её, добавив в keybindings.json следующий фрагмент кода с желаемыми сочетаниями клавиш:

[
  {
    "key": "ctrl+k",
    "when": "CodeActionMenuVisible",
    "command": "focusPreviousCodeAction"
  },
  {
    "key": "ctrl+j",
    "when": "CodeActionMenuVisible",
    "command": "focusNextCodeAction"
  }
]


Сеансы редактирования в VS Code для веба и рабочего стола


Продолжается работа над Edit Sessions, в ходе которых вносятся незафиксированные изменения при работе с репозиторием в VS Code для веба или рабочего стола. Вот основные улучшения:

  • Теперь можно удалить из облака все сохранённые сеансы редактирования, отключив соответствующую функциональность.
  • Теперь поддерживается вход с проверкой подлинности Microsoft.
  • При проблемах с нахождением сеансов редактирования всех их можно просмотреть с помощью команды Edit Sessions: Show Edit Sessions.


Чтобы попробовать сеансы редактирования, установите в настройках workbench.experimental.editSessions.enabled и используйте команду Edit Sessions: Store Current Edit Session, войдя через GitHub или проверку подлинности Microsoft. Затем восстановите рабочее содержимое всех изменённых файлов в рабочей области. Для этого в репозитории на другом компьютере или экземпляре VS Code задействуйте команду Edit Sessions: Resume Latest Edit Session. Из сеансов редактирования можно в любой момент выйти с помощью команды Edit Sessions: Sign Out.

Мы продолжаем работать над сеансами редактирования, опробуйте их и дайте обратную связь, оставив комментарий в проблеме #141293.

Разработка расширения


Оператор 'not in' для конструкций 'when'


Оператор для конструкций when уже существует. Это in, который позволяет выполнять динамический поиск значения одного контекстного ключа в другом с помощью массива или значения типа-объекта. Мы добавили новый оператор not in, с которым проверяется противоположное условие. Подробнее см. в документации по контекстам конструкции when.

Точка расширения htmlLanguageParticipants


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

Примером может служить встроенное расширение handlebars, которое теперь добавляется к htmlLanguageParticipants в своём package.json:

"contributes": {
  "htmlLanguageParticipants": [
     {
       "languageId": "handlebars"
      }
    ]
}


В расширении Quarkus точка расширения уже применяется. С ней функционал HTML прирастает дополнительными возможностями для встроенного языка HTML-шаблонов Qute:

Qute: участник HTML

API перетаскивания в редактор


API перетаскивания текстового редактора позволяет расширениям работать с перемещением файлов или другого содержимого в текстовые редакторы. Эти события перемещения могут проистекать из VS Code, например при перетаскивании файла из обозревателя VS Code в текстовый редактор, или генерироваться перетаскиванием файла из операционной системы в VS Code.

Применение API перетаскивания в редактор для вставки изображения в Markdown путём пе
    
            <p class=© Habrahabr.ru