이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2021년 2월 (버전 1.54)

업데이트 1.54.1: 이 업데이트는 확장 프로그램 종속성과 관련된 이슈를 해결합니다.

업데이트 1.54.2: 이 업데이트는 다음 이슈들을 해결합니다.

업데이트 1.54.3: 이 업데이트는 다음 이슈를 해결합니다.

다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code 2021년 2월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하시기를 바라는 여러 업데이트가 포함되어 있으며, 주요 내용은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.

라이브 참여 - 3월 11일 목요일 오전 8시(태평양 표준시, 런던 오후 4시)에 VS Code 팀 라이브스트림에 참여하여 이번 릴리스의 새로운 기능 데모를 보고 실시간으로 질문하세요.

Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.

Apple Silicon

이번 반복 주기에서 안정 버전 Apple Silicon 빌드의 첫 릴리스를 발표하게 되어 기쁩니다. M1 칩이 탑재된 Mac 사용자는 이제 Rosetta 에뮬레이션 없이 VS Code를 사용할 수 있으며, VS Code 실행 시 성능 향상과 배터리 수명 연장을 체감할 수 있습니다. 이번 반복 주기 초기에 Insiders 빌드를 자체 호스팅하고 이슈를 보고해 준 커뮤니티에 감사드립니다.

macOS용 VS Code의 기본 다운로드는 이제 모든 Mac에서 네이티브로 실행되는 Universal 빌드입니다. 다운로드 페이지에서 Intel 또는 Apple Silicon용 아키텍처별 빌드에 대한 추가 링크를 찾을 수 있으며, 이는 Universal 패키지에 비해 다운로드 크기가 작습니다.

Website showing the new downloads view for Apple Silicon builds

Website showing the default download for macOS

접근성

도구 모음 및 탭이 하나의 탭 정지점 차지

이제 워크벤치의 모든 도구 모음은 표준 탐색 동작을 따르므로, 도구 모음은 탭 순서에서 단일 위치만 차지하며 화살표 키로 탐색할 수 있습니다. 도구 모음에 포커스가 맞춰지면 화살표 키를 사용하여 도구 모음의 특정 항목으로 포커스를 이동해야 합니다. 이 변경으로 인해 워크벤치의 탭 정지점이 훨씬 줄어들어 모든 부분에서 탐색하기가 더 쉬워졌습니다.

일관성을 위해 탭 영역에도 동일한 변경이 적용되었습니다. 따라서 전체 탭 영역은 단일 탭 정지점이며, 탭 간 키보드 탐색은 좌우 화살표 키로 수행해야 합니다.

Windows에서 단어 탐색

Windows에서 단어 탐색이 개선되어 Windows의 화면 읽기 프로그램이 Electron 기반 애플리케이션에서 기대하는 방식과 일치하도록 했습니다. 이제 단어 탐색을 사용할 때 각 단어가 화면 읽기 프로그램에 의해 올바르게 읽힙니다.

이 변경으로 인해 다음 명령은 사용 중단됩니다. 계속 작동하지만 향후 제거될 수 있습니다.

  • cursorWordAccessibilityLeft
  • cursorWordAccessibilityLeftSelect
  • cursorWordAccessibilityRight
  • cursorWordAccessibilityRightSelect

Windows가 아닌 플랫폼은 이미 예상대로 작동했으므로 변경되지 않았습니다.

뷰 및 버튼에 대한 역할 개선

사용자 피드백을 기반으로 워크벤치 전체의 여러 뷰와 버튼에 대한 역할이 개선되었습니다. 활동 표시줄, 측면 표시줄, 패널에 이제 role:none이 적용되어 화면 읽기 프로그램이 덜 장황해집니다. 활동 표시줄 안의 관리계정 버튼은 이제 팝업이 있음을 올바르게 알립니다.

통합 터미널

창 새로고침 시 터미널 프로세스 유지

이제 확장 프로그램 설치로 인해 새로고침이 필요한 경우와 같이 창을 새로고침할 때 로컬 터미널 프로세스가 복원됩니다. 터미널이 다시 연결되고 활성 탭 및 분할 터미널의 상대적 차원을 포함한 터미널의 UI 상태가 복원됩니다.

In a local window, two split terminals are created and resized. On reload, the layout appears unchanged.

이 기능은 terminal.integrated.enablePersistentSessions를 false로 설정하여 비활성화할 수 있습니다.

Windows 성능 향상

새로운 터미널 프로세스 레이아웃 덕분에 터미널 프로세스의 빈번한 pty 데이터 이벤트가 이제 더 빠르게 처리됩니다. 이는 Windows의 conpty가 제공하는 더 작은 이벤트로 인해 다른 플랫폼보다 Windows에 더 큰 영향을 미칠 것으로 예상됩니다.

환경 변경이 필요한 터미널 자동 다시 시작

최근 확장 프로그램이 터미널 환경에 영향을 미칠 수 있도록 하는 새로운 기능이 출시되었습니다. 이는 다양한 언어 확장 프로그램 및 기본 git 확장 프로그램에서 VS Code를 로그인할 필요성을 없애는 git 인증 제공자로 사용됩니다. 이전에는 이 기능에 대한 UX가 터미널 환경이 최신 상태가 아님을 나타내기 위해 오른쪽 상단 모서리에 미묘한 ⚠️ 아이콘을 표시했습니다. 환경 변경이 중요할 수도 있고 그렇지 않을 수도 있었기 때문에 표시기가 미묘했습니다.

이것을 조정하여 아직 상호 작용한 적이 없는 터미널의 최신 상태가 아닌 환경을 자동으로 다시 시작하도록 했습니다. 약간의 깜박임이 발생할 수 있지만 확장 프로그램 터미널 통합이 훨씬 더 원활해졌습니다. 예를 들어, Git 인증 오류가 표시되지 않고 터미널 입력 전에 다시 시작이 발생하면 WSL 창의 첫 번째 터미널에서 더 이상 Git 인증 오류가 표시되지 않습니다.

워크벤치

Emmet

축약으로 감싸기개별 줄을 축약으로 감싸기 명령이 혼동을 줄이기 위해 단일 축약으로 감싸기 명령으로 병합되었습니다. 또한, 축약으로 감싸기 명령이 미리보기 공백을 올바르게 표시합니다.

emmet.extensionsPath 설정은 이제 문자열뿐만 아니라 경로 배열도 받을 수 있습니다. 따라서 Settings Sync와 함께 사용하면 머신별로 설정을 업데이트하지 않고도 머신에 따라 다른 스니펫 파일을 가리킬 수 있습니다.

제품 아이콘 테마

첫 번째 제품 아이콘 테마가 확장 프로그램 마켓플레이스에 출시되었습니다. 훌륭한 작업을 수행한 테마 작성자들에게 감사드립니다!

테마를 선택하거나 찾으려면 명령 팔레트 또는 설정 기어에서 기본 설정: 제품 아이콘 테마 명령을 사용하세요.

Product icon themes in the Extension Marketplace

컨텍스트 키에 대한 IntelliSense

VS Code는 when 절을 사용하여 키 바인딩을 활성화 및 비활성화합니다. 확장 프로그램도 when 절을 사용하여 메뉴 기여를 제어합니다. 에디터가 이러한 when 절에 대한 완성을 제공하므로 이제 이러한 when 절을 작성하는 것이 훨씬 쉬워졌습니다.

keybindings.json에서 컨텍스트 키에 대한 IntelliSense 테마: GitHub Light Theme, 글꼴: FiraCode

열린 편집기 새 빈 파일 작업

이제 열린 편집기 뷰 제목 영역에 새 빈 파일 작업이 있습니다.

New untitled file in Open Editors view

애플리케이션 메뉴 설정 업데이트

애플리케이션 메뉴 가시성을 위한 window.menuBarVisibility 설정이 옵션을 더 잘 반영하도록 업데이트되었습니다. 두 가지 주요 변경 사항이 있었습니다.

첫째, 설정의 default 옵션 이름이 classic으로 변경되었습니다.

둘째, 애플리케이션 메뉴 바의 메뉴 표시줄 표시 항목이 classiccompact 옵션 간에 전환됩니다. 완전히 숨기려면 설정을 업데이트하거나 compact 모드일 때 활동 표시줄의 컨텍스트 메뉴를 사용할 수 있습니다.

애플리케이션 메뉴의 메뉴 표시줄 표시 항목 테마: GitHub Light Theme

웹뷰 캐싱 개선

웹뷰 내부의 로컬 파일에 대한 캐싱이 개선되었습니다. 웹뷰가 디스크에서 파일을 새로고침하는 경우, 파일이 변경되지 않았다면 파일을 다시 읽지 않도록 ETag을 사용합니다. 이를 통해 데이터 전송을 줄이고, 특히 원격 워크스페이스의 응답 시간을 개선할 수 있습니다.

이 캐싱은 현재 기존 웹뷰가 리소스를 새로고침할 때만 적용됩니다. 이전에 유사한 웹뷰를 생성했던 확장 프로그램에 속하더라도 새로 생성된 웹뷰에는 적용되지 않습니다.

워크스페이스 검색 작업 변경

기존 workbench.view.search를 수정하여 선택한 텍스트를 검색 입력란에 넣는 대신 입력란을 열도록 했습니다. 선택한 텍스트를 사용하여 search.mode 설정을 존중하는 새 검색을 만들려면 workbench.action.findInFiles를 사용해야 합니다.

수정자만 있는 키 바인딩

이제 중복 수정자(예: shift shift, alt alt, ctrl ctrl 또는 cmd cmd / meta meta / win win)에 대한 키 바인딩을 정의할 수 있습니다. 이러한 키 바인딩은 keybindings.json에 수동으로 입력할 수 있습니다.

{ "key": "shift shift", "command": "workbench.action.quickOpen" }

목록/트리 UI 업데이트

네이티브 포커스 및 선택 표시기와 일치하도록 목록/트리 스타일을 업데이트했습니다. 이제 포커스된 요소는 외곽선 색상으로 렌더링됩니다.

List/tree UI showing focused element

호환성 변경

테마 게시자는 list.focusBackground 색상 사용자 지정을 quickInput.list.focusBackground 색상으로 전환하여 이 스타일을 채택하는 것이 좋습니다. 예는 이 커밋을 참조하세요.

테이블 위젯

기존 목록 위젯 위에 구축된 새로운 테이블 위젯을 도입하여 목록 요소와 동일한 성능으로 테이블 데이터를 렌더링할 수 있습니다. 현재는 원격 기능에 대한 포트 뷰에 사용됩니다.

Table widget view of remote Ports

시작하기

시작 시 표시될 "시작하기" 편집기를 실험하고 있습니다. 이는 VS Code의 일부 기능을 새로운 사용자에게 더 쉽게 접근하도록 하기 위한 것입니다. 일부 Insiders 사용자는 이미 이를 보았을 수 있으며, 이번 반복 주기 동안 더 많은 안정 버전 사용자에게 점진적으로 출시될 것입니다. workbench.startupEditor 설정을 gettingStarted로 또는 gettingStarted에서 벗어나도록 수정하여 새 동작을 항상 선택하거나 해제할 수 있습니다.

Getting Started experience walkthrough

타임라인 보기

이제 선택하여 비교선택한 항목과 비교 명령을 사용하여 Git 기록 타임라인 항목 간의 변경 사항을 비교할 수 있습니다. 이는 탐색기 뷰에서 파일을 비교하는 것과 유사합니다. 이 기능을 사용하면 Git 파일 기록의 두 커밋 간의 모든 변경 사항을 빠르게 확인할 수 있습니다.

Select for Compare command in context menu

기본 새시(sash) 호버 테두리 색상

1.52 릴리스에서 새시(sash)에 대한 호버 테두리 색상 토큰(sash.hoverBorder)을 도입했지만 기본값은 설정하지 않았습니다. 이제 모든 테마에 기본적으로 이 색상이 표시됩니다.

Sash hover border color

디버깅

중단점 뷰 개선

중단점 제거를 위한 새 인라인 작업

중단점 뷰에서 중단점을 제거하기 위한 인라인 작업 X를 추가했습니다. 이 작업을 통해 중단점을 더 쉽게 제거할 수 있습니다.

Breakpoints view showing X next to selected breakpoint

예외 필터에 대한 도움말 텍스트 지원

최근 중단점 뷰에서 예외 필터의 조건을 편집하는 지원을 추가했습니다.

이러한 조건들을 더 쉽게 발견하고 구문이 자체 설명되도록 하기 위해, VS Code는 이제 예외 필터에 대한 호버와 조건 텍스트 상자의 자리 표시자 텍스트를 표시합니다.

둘 다 정보는 기본 디버그 확장 프로그램에서 제공하므로, 일반적인 메시지보다 훨씬 구체적(따라서 유용)할 수 있습니다.

이 새로운 기능은 디버그 어댑터 프로토콜에 대한 추가 기능을 기반으로 하므로 (아래 참조) 디버그 확장 프로그램의 옵트인이 필요합니다. 이번 릴리스에서는 VS Code의 기본 JavaScript 디버거만 새로운 기능을 지원합니다.

Breakpoint placeholder

새로운 설정 및 기타 개선 사항

디버그 콘솔에서 동일한 줄 접기

디버그 콘솔에서 동일한 줄을 접고 배지를 사용하여 여러 번 발생한 경우를 표시할지 여부를 제어하는 새 설정 debug.console.collapseIdenticalLines가 있습니다. 기본값은 접기입니다.

디버깅 전 저장할 편집기 제어

디버깅 시작 전에 저장할 편집기를 제어하는 새 설정 debug.saveBeforeStart가 있습니다. 이 설정에는 다음 값이 있습니다.

  • allEditorsInActiveGroup: 활성 그룹의 모든 편집기를 저장합니다. 기본값입니다.
  • nonUntitledEditorsInActiveGroup: 활성 그룹의 제목 없는 편집기를 제외한 모든 편집기를 저장합니다.
  • none: 편집기를 저장하지 않습니다.

이 설정은 PowerShell 디버거가 저장되지 않은 파일을 디버깅하는 것을 지원하므로 PowerShell 디버깅에 유용합니다.

프레임 다시 시작 작업의 사용 가능 여부 개선

디버그 어댑터 프로토콜에 새로운 추가 기능이 제공되어 디버그 확장 프로그램은 선택한 스택 프레임에서 "프레임 다시 시작" 작업을 사용할 수 있는지 VS Code UI에 전달할 수 있습니다. VS Code는 이제 다시 시작할 수 없는 스택 프레임에 대해 호출 스택 뷰에서 프레임 다시 시작 인라인 작업을 비활성화합니다.

예를 들어 JS-Debug 확장 프로그램이 이를 채택했으며 이제 비동기 스택 추적은 프레임 다시 시작 작업을 비활성화합니다.

언어

TypeScript 4.2

VS Code는 이제 TypeScript 4.2.2를 함께 제공합니다. 이 주요 업데이트에는 많은 TypeScript 언어 개선 사항과 JavaScript 및 TypeScript 도구에 대한 많은 개선 및 버그 수정이 포함됩니다.

TypeScript 4.2에 대한 자세한 내용은 TypeScript 블로그에서 확인할 수 있습니다.

누락된 함수를 선언하는 빠른 수정

새로운 누락된 함수 선언 추가 빠른 수정은 누락된 함수를 스텁 처리합니다. 예를 들어, 누락된 함수 add 호출이 있다고 가정해 보겠습니다.

const x: number = add(1, 2);

add누락된 함수 선언 추가를 사용하면 다음과 같이 됩니다.

const x: number = add(1, 2);
function add(arg0: number, arg1: number): number {
  throw new Error('Function not implemented.');
}

이 빠른 수정을 사용하여 코드를 작성하면서 호출 서명을 기반으로 함수를 빠르게 스텁 처리할 수 있습니다.

JavaScript에서 이 빠른 수정을 사용하려면 형식 검사를 활성화해야 합니다.

JS Doc 템플릿이 이제 @returns를 생성합니다.

JS Doc 템플릿은 이제 함수에 return 문이 포함된 경우 자동으로 @returns를 포함합니다. 예를 들어, getViz 함수에 대해

function getViz(el) {
  return el?.viz;
}

생성된 JSDoc 템플릿은 다음과 같습니다.

/**
 *
 * @param {*} el
 * @returns
 */
function getViz(el) {
  return el?.viz;
}

javascript.suggest.jsdoc.generateReturnstypescript.suggest.jsdoc.generateReturns를 사용하여 JSDoc 주석에서 @returns를 비활성화할 수 있습니다.

사용 중단된 DOM API가 이제 표시됩니다.

사용 중단된 DOM 메서드가 이제 제안 및 코드에서 사용 중단된 것으로 표시됩니다.

document.clear being marked as deprecated in code

editor.showDeprecated: false를 설정하여 편집기에서 사용 중단된 속성 및 함수 표시를 비활성화할 수 있습니다.

노트북

노트북 자동 새로고침

이제 노트북은 파일이 디스크에서 변경되고 저장되지 않은 변경 사항이 없을 때 자동으로 새로고침됩니다. 이렇게 하면 버전 관리 중인 노트북으로 작업하는 것이 훨씬 쉬워집니다.

대형 셀에 대한 포커스 개선

대형 노트북 셀에 포커스가 맞춰지면 셀의 위쪽과 아래쪽이 보이지 않을 때도 어떤 셀에 포커스가 맞춰져 있는지 더 잘 알 수 있습니다. 이제 포커스된 셀의 왼쪽과 오른쪽에 테두리가 표시됩니다.

Notebook focus for a large cell

CSS/LESS/SCSS 및 HTML의 호버

HTML 및 CSS에서 호버의 내용을 미세 조정할 수 있습니다.

  • MDN의 설명서 표시 안 함
  • MDN 페이지 링크 표시 안 함

css.hover.documentationcss.hover.references 설정을 사용하여 CSS에 대한 호버를 변경합니다. csshtml, css, scss 또는 less로 바꿔 해당 언어에 대한 설정을 변경합니다.

미리 보기 기능

노트북을 위한 확장 가능한 Markdown 렌더러

이번 반복 주기에서는 노트북 셀에 대한 Markdown 렌더러를 확장 가능하게 만드는 것을 탐구했습니다. 예를 들어 아래 스크린샷에서는 VS Code의 Markdown 렌더러를 확장하여 노트북 셀에 수학 공식을 표시하도록 했습니다.

A math formula being rendered in a notebook cell

Markdown 렌더러를 확장 가능하게 만들기 위해 모든 노트북 Markdown을 렌더링하기 위해 Markdown It을 사용하는 것을 탐구했습니다. 또한 렌더링된 Markdown을 노트북의 백 레이어 웹뷰로 이동하는 것을 탐구했습니다.

아직 공식 API를 공개할 준비는 되지 않았지만, 3월에 이 탐구를 계속할 계획입니다. 또한 문서화되지 않은 notebook.experimental.useMarkdownRenderer: true 설정을 사용하여 오늘날 새로운 확장 가능한 Markdown 렌더러를 사용해 볼 수 있습니다.

확장 프로그램 기여

Brackets

Brackets 소스 코드 편집기에서 온 개발자는 Brackets Keymap 확장을 사용하여 VS Code에서 동일한 키보드 단축키를 계속 사용할 수 있습니다. CSS 작업을 위한 확장 프로그램과 라이브 미리보기를 생성하는 확장 프로그램을 번들로 제공하는 Brackets Extension Pack도 있습니다.

Brackets Extension Pack in the Marketplace

GitHub Pull Requests 및 Issues

풀 요청 및 문제를 작업, 생성 및 관리할 수 있는 GitHub 풀 요청 및 문제 확장 프로그램에 대한 작업이 계속 진행 중입니다.

새로운 기능 및 업데이트에 대해 알아보려면 확장 프로그램 0.24.0 릴리스의 전체 변경 로그를 참조하세요.

원격 개발

컨테이너, 원격 머신 또는 Linux용 Windows 하위 시스템(WSL)을 전체 기능 개발 환경으로 사용할 수 있는 원격 개발 확장에 대한 작업이 계속 진행 중입니다.

1.54의 주요 기능은 다음과 같습니다.

  • 포트 뷰 테이블 레이아웃
  • 원격 - SSH: X11 포워딩
  • WSL: WSL 2 지원 개선

원격 개발 릴리스 노트에서 새로운 확장 프로그램 기능과 버그 수정에 대해 알아볼 수 있습니다.

확장 프로그램 작성

편집기 제목 메뉴 및 "실행" 하위 메뉴에 대한 제한

편집기 도구 모음(editor/title)의 공간은 제한적입니다. 따라서 우리는

  • 오버플로우 동작을 구현했습니다. 기본 그룹(즉, 아이콘으로 렌더링되는 작업 그룹)이 9개 이상의 명령을 초과하면 추가 명령은 모두 ... 메뉴로 오버플로우됩니다.
  • editor/title/run 하위 메뉴를 추가했습니다. 이전 릴리스에서 권장했던 것처럼 이제 확장 프로그램 작성자에게 실행 및 디버그 명령을 editor/title 메뉴가 아닌 이 메뉴에 기여하도록 요청합니다. 또한 명령이 올바른 위치에 표시되도록 하기 위해 마법 그룹 값 1_run@101_run@20을 사용할 필요가 더 이상 없습니다.

Run dropdown menu

또한 실행 하위 메뉴는 동적이며, 유일한 자식일 경우 첫 번째 자식으로 대체된다는 점에 유의하세요.

인증 공급자 API

이제 다른 확장 프로그램에서 서비스에 대한 인증을 수행하는 데 사용할 수 있는 인증 공급자를 등록할 수 있습니다.

확장 프로그램 마켓플레이스에 대한 새 피드백 채널

확장 프로그램 마켓플레이스와 관련된 이슈에 대한 새로운 공개 저장소가 있습니다. 기술적인 문제, 피드백 또는 기능 요청이 있는 경우 이슈를 여세요.

업데이트된 코드 아이콘

저희는 코드 아이콘 라이브러리에 다음의 새로운 아이콘을 추가했습니다.

  • debug-rerun
  • gather
  • git-pull-request-create
  • notebook-template
  • run-above
  • run-below
  • type-hierarchy
  • type-hierarchy-sub
  • type-hierarchy-super
  • variable-group

Codicons for tasks

또한 일관성을 위해 다음 아이콘을 업데이트했습니다.

  • debug-alt-small
  • debug-alt
  • debug-rerun
  • play-circle
  • play
  • run-above
  • run-all
  • run-below

Consistent codicons

제안된 확장 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 원합니다. 제안된 API를 사용하려면 다음을 수행해야 합니다.

  • 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
  • 확장의 package.json 파일에 이 줄이 있어야 합니다: "enableProposedApi": true.
  • vscode.proposed.d.ts 파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.

아이콘 기여 포인트

아이콘 기여 포인트는 확장 프로그램이 ID와 기본 아이콘으로 새 아이콘을 정의할 수 있도록 합니다. 이 아이콘 ID는 확장 프로그램(또는 확장 프로그램에 의존하는 다른 확장 프로그램)에서 ThemeIcon을 사용할 수 있는 곳(예: Markdown 문자열 (예: "$(distro-ubuntu)" Ubuntu 20.04") 및 ThemeIcon을 받는 모든 장소(예: new ThemeIcon("distro-ubuntu"))에서 사용할 수 있습니다.

제품 아이콘 테마는 아이콘 ID를 알고 있다면 아이콘을 개별적으로 재정의할 수 있습니다.

자세한 내용은 이슈 114942에서 자세한 내용을 확인하고 피드백을 제공하세요.

인라인 값 제공자 API

오늘날 VS Code 디버거의 인라인 값 표시 기능은 VS Code 코어의 일반적인 구현을 기반으로 하며 설정을 통한 사용자 정의 또는 확장 프로그램을 통한 확장성을 제공하지 않습니다. 결과적으로 모든 언어에 완벽하게 맞지 않으며, 기본 소스 언어를 이해하지 못하기 때문에 잘못된 값을 표시하는 경우가 있습니다. 이러한 이유로 내장 구현을 완전히 대체하거나 사용자 지정 코드로 구현의 일부를 대체할 수 있는 확장 API를 개발하고 있습니다.

이번 마일스톤에서는 제안된 API의 첫 번째 구현을 사용할 수 있게 되었습니다.

인라인 값 제공자 API를 요약하면 다음과 같습니다.

  • InlineValuesProvider는 언어에 대해 등록되어야 합니다.
  • 주어진 문서에 대해 InlineValuesProvider는 인라인 값을 표시해야 하는 모든 언어 요소를 찾아야 합니다.
  • 각 요소에 대해 VS Code에 표시할 정보를 지시하는 InlineValue 설명자 객체를 반환해야 합니다. 현재 세 가지 유형의 InlineValue 객체가 지원됩니다.
    • InlineValueText: 표시할 전체 텍스트,
    • InlineValueVariableLookup: VS Code가 VARIABLES 뷰에서 해당 값을 찾으려고 시도할 변수의 이름입니다. 이름과 값은 "이름 = 값" 형식으로 표시됩니다.
    • InlineValueEvaluatableExpression: VS Code가 평가를 위해 디버거로 보낼 표현식입니다. 표현식과 결과는 "표현식 = 결과" 형식으로 표시됩니다.

다음 스니펫( Mock Debug에서 발췌)은 "markdown" 파일에 대한 최소한의 인라인 값 제공자를 보여주며, 정규 표현식을 사용하여 "변수"를 찾고 VS Code가 **변수 뷰**를 통해 해당 값을 찾도록 지시합니다.

vscode.languages.registerInlineValuesProvider('markdown', {
  provideInlineValues(
    document: TextDocument,
    viewport: Range,
    context: InlineValueContext
  ): ProviderResult<InlineValue[]> {
    const allValues: InlineValue[] = [];
    for (let l = 0; l <= context.stoppedLocation.end.line; l++) {
      const line = document.lineAt(l);
      var regExp = /local_[ifso]/gi; // match variables of the form local_i, local_f, Local_i, LOCAL_S...
      do {
        var match = regExp.exec(line.text);
        if (match) {
          const varName = match[0];
          const varRange = new Range(l, match.index, l, match.index + varName.length);
          allValues.push(new InlineValueVariableLookup(varRange, varName));
        }
      } while (match);
    }
    return allValues;
  }
});

그리고 이제 작동하는 인라인 값 제공자

Debugger shows inline values

이 제안된 API에 대한 피드백을 제공하려면 이 이슈에 댓글을 추가해 주세요.

테스트

VS Code에서의 테스트에 계속해서 진전을 보이고 있습니다. 이번 달에는 VS Code 및 확장 API의 기본 경험을 개선하는 데 중점을 두었습니다. 또한 테스트에 대한 잠정 문서를 게시했으며, API가 계속 안정화됨에 따라 이를 확장할 것입니다.

언어 서버 프로토콜

곧 출시될 3.17 릴리스에 대해 진단 풀 모델에 대한 첫 번째 제안이 구현되었습니다. 이 제안은 향후 버전의 VS Code LSP 라이브러리에서 사용할 수 있습니다.

디버그 어댑터 프로토콜

ExceptionBreakpointsFilter에 대한 추가 도움말 텍스트 속성

ExceptionBreakpointsFilter에 두 개의 선택적 UI 속성 descriptionconditionDescription이 추가되었습니다.

이러한 속성을 통해 클라이언트는 예외 중단점에 대한 추가 정보를 표시할 수 있습니다. description 속성은 호버에 표시될 수 있고 conditionDescription은 조건을 편집할 수 있는 텍스트 상자의 자리 표시자 텍스트로 사용될 수 있습니다.

setExceptionBreakpoints 요청에 대한 설명 개선

사용자가 잘못된 예외 중단점 조건을 입력한 경우 어댑터가 어떻게 해야 하는지에 대한 지침을 추가하여 setExceptionBreakpoints 요청에 대한 설명을 개선했습니다.

스택 프레임에 대한 새 canRestart 속성

스택 프레임에 새로운 선택적 부울 속성 canRestart가 추가되었습니다. 이는 restart 요청으로 스택 프레임을 다시 시작할 수 있는지 여부를 나타냅니다. 이 정보를 바탕으로 클라이언트는 프레임 다시 시작 컨텍스트 메뉴 작업을 활성화하거나 비활성화할 수 있습니다.

엔지니어링

Electron 샌드박스 진행 상황

이번 마일스톤에서는 Electron의 샌드박스컨텍스트 격리 기능을 활성화하기 위해 VS Code 창을 계속 준비했습니다.

구체적으로

  • 렌더러에 있는 일부 네이티브 모듈 요구 사항을 다른 프로세스로 이동할 수 있었습니다.
  • MessagePort 통신 채널은 샌드박스가 활성화된 상태에서 작동하도록 구현되었습니다.

새로운 터미널 프로세스 레이아웃

터미널 프로세스는 이제 창 프로세스 대신 새로운 "pty 호스트" 프로세스 아래에서 생성됩니다. 이 변경 사항은 Electron 샌드박스의 일부일 뿐만 아니라 터미널의 안정성과 성능을 향상시켜야 합니다.

Windows 패키지 관리자에 게시된 Windows 설치 프로그램

x86x64용 Windows 사용자 및 시스템 설치 프로그램이 이제 Windows 패키지 관리자에 게시됩니다. winget 도구를 사용하여 모든 Visual Studio Code 설치 프로그램을 검색하고(winget search vscode), 게시된 설치 프로그램을 설치할 수 있습니다.

TypeScript 4.3을 사용하여 VS Code 빌드

VS Code는 이제 TypeScript 4.3의 나이트리 빌드를 사용하여 빌드됩니다. 이를 통해 TypeScript 팀의 최신 작업을 검증하고 새로운 변경 사항에 대한 피드백을 제공할 수 있습니다.

가장 최신 TypeScript 버전은 조건부에서 await를 누락한 몇 가지 사례를 이미 발견하는 데 도움이 되었습니다.

yarn.lock 변경 방지

이제 공급망 보안을 개선하기 위해 yarn.lock 파일에 대한 PR을 방지하는 CI가 있습니다.

기본 브랜치: main

모든 리포지토리의 기본 브랜치를 main으로 이름 변경하기 시작했으며, 여기에는 microsoft/vscode도 포함됩니다. 이 작업은 약 60% 완료되었습니다.

문서

교실에서의 VS Code와 Python

Harvey Mudd College의 컴퓨터 과학 교수가 Python을 사용하는 입문 CS 수업에서 VS Code를 사용하는 사례 연구를 읽어보세요. 학생들에게 추천하는 설정과 유용한 확장 프로그램, 무료 자체 속도 Python 및 데이터 과학 레슨에 대해 알아보세요.

확장 프로그램 문제 해결 블로그 게시물

누구나 VS Code 확장 프로그램을 설치하고 사용하는 것을 좋아합니다. 그러나 많은 확장 프로그램을 설치하면 편집기가 "이상하게" 작동하기 시작할 수 있으며, 해당 동작이 특정 확장 프로그램 때문인지 아는 것이 좋습니다. 확장 프로그램 bisect 유틸리티의 이전 발표를 놓치셨다면, "bisect를 사용한 확장 프로그램 문제 해결" 블로그 게시물을 읽어보세요. 이 게시물에서는 "잘못된" 확장 프로그램을 빠르게 문제 해결하고 확장 프로그램 작성자에게 피드백을 제공하는 방법을 설명합니다.

주요 수정 사항

  • 100151: 탐색기에서 잘못된 항목에 적용된 메뉴 키
  • 112055: 디버그가 각 Python 세션에 대해 새 통합 터미널을 엽니다.
  • 114881: 폴더 또는 파일을 복사할 때 심볼릭 링크 보존
  • 114933: "작업을 추적할 수 없음"에 대한 불만
  • 115922: 파일 탐색기에서 필터링할 때 커서 키가 작동하지 않음
  • 116037: 디버그 콘솔의 출력에 대한 링크 호버가 표시되지 않음
  • 116101: 영어 설명이 사라져 명령 검색에서 대상 명령을 찾을 수 없습니다.
  • 116932: 기여된 명령 실행에서 사용자 지정 예외를 throw하면 암호화된 오류 팝업이 표시됩니다.

감사합니다

마지막으로, 이번 달 VS Code에 기여해주신 다음 분들께 진심으로 감사드립니다.

이슈 추적에 대한 기여

vscode 기여

language-server-protocol 기여

vscode-languageserver-node에 기여

vscode-emmet-helper에 대한 기여

vscode-html-languageservice에 대한 기여

vscode-js-debug 기여

vscode-textmate에 기여

vscode-vsce 기여

© . This site is unofficial and not affiliated with Microsoft.