2021년 7월 (버전 1.59)
업데이트 1.59.1: 이 업데이트는 다음 이슈들을 해결합니다.
이 릴리스는 또한 CVE-2021-26437을 해결합니다.
다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code의 2021년 7월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아할 만한 많은 업데이트가 포함되어 있으며, 주요 하이라이트 중 일부는 다음과 같습니다.
- 확장 프로그램 보기 개선 - 풍부한 확장 프로그램 상세 정보 호버, 새 런타임 상태 탭.
- 설정 편집기 유효성 검사 - 객체 기반 설정의 편집 오류를 빠르게 찾습니다.
- 터미널 끌어다 놓기 - 편집기 및 패널 영역 모두로 창 간에 터미널을 이동합니다.
- 확장된 테마 사용자 지정 - 여러 색상 테마를 한 번에 사용자 지정합니다.
- Jupyter 노트북 기본 지원 - VS Code에서
.ipynb파일을 직접 엽니다. - 노트북 UI 개선 - 축소된 셀의 첫 번째 줄 표시, 셀별 실행 취소/다시 실행.
- 테스트 API 최종 확정 - VS Code 내장 테스트 탐색기에서 테스트 실행을 위한 네이티브 지원.
- 디스어셈블리 보기 미리 보기 - VS Code에서 C++ 코드의 디스어셈블된 내용을 표시합니다.
- 라이브 미리 보기 확장 프로그램 - JavaScript 디버깅 지원으로 VS Code 내에서 실시간 HTML 미리 보기.
- Dev Containers devcontainer CLI - 개발 컨테이너 작업을 위한 명령줄 인터페이스.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
라이브로 참여하세요. 8월 10일 화요일 오전 8시 (태평양 표준시, 런던 오후 4시)에 VS Code 팀의 라이브 스트림에서 이 릴리스의 새로운 기능 데모를 보고 질문할 수 있습니다.
Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.
워크벤치
확장
크기 조정 시 확장 프로그램 보기가 개선되었습니다. 다음 짧은 동영상에서 기본 너비의 확장 프로그램 보기는 모든 세부 정보를 보여줍니다(이전에는 아이콘, 등급 및 설치 수가 표시되지 않았습니다). 보기가 축소됨에 따라 더 작은 확장 프로그램 아이콘이 표시되며, 너비가 더 줄어들면 아이콘과 등급이 숨겨집니다.

확장 프로그램 보기는 이제 확장 프로그램에 대한 사용자 지정 호버를 표시합니다. 이 풍부한 호버에는 확장 프로그램의 전체 설명과 확장 프로그램이 비활성화되거나 권장되는 이유와 같은 기타 유용한 정보가 포함됩니다.

이제 새 런타임 상태 탭에서 확장 프로그램의 런타임 상태를 확인할 수 있습니다. 상태 정보에는 활성화 시간, 시작 시 활성화 여부, 경고 또는 오류가 있는지 여부가 포함됩니다. 이 정보 중 일부는 확장 프로그램 보기 및 해당 호버에 표시됩니다(위 이미지 참조).

확장 프로그램 창의 세부 정보 탭은 이제 카테고리, 리소스 링크 및 확장 프로그램 릴리스 및 업데이트 날짜와 같은 기타 정보를 표시합니다. 카테고리를 선택하면 확장 프로그램 보기에서 해당 카테고리의 다른 확장 프로그램을 표시합니다.

설정 편집기
설정 편집기는 이제 객체에 대한 유효성 검사를 지원합니다. 이 유효성 검사는 JSON 파일을 직접 편집할 때 발생할 수 있는 유형 오류를 확인합니다.

배열 설정은 이제 편집 모드가 아닌 상태에서 드래그 앤 드롭을 지원합니다. 또한 uniqueItems가 true로 설정된 열거형 배열 설정은 드롭다운에서 모든 옵션 대신 남은 옵션만 표시합니다.

설정 편집기는 이제 여러 줄 문자열 설정을 지원하며, 값은 단일 줄 입력 상자 대신 여러 줄 텍스트 영역에 렌더링됩니다.

확장된 테마 사용자 지정 구문
아래에 나열된 색상 사용자 지정 설정을 사용하면 사용자가 현재 테마의 색상을 사용자 지정할 수 있습니다.
workbench.colorCustomizationseditor.tokenColorCustomizationseditor.semanticTokenColorCustomizations
여러 테마를 한 번에 사용자 지정하는 새로운 구문이 있습니다.
"workbench.colorCustomizations": {
"[Abyss][Red]": {
"activityBar.background": "#ff0000"
},
"[Monokai*]": {
"activityBar.background": "#ff0000"
}
},
여러 테마를 나열할 수 있으며, 이름의 시작과 끝에 * 와일드카드 문자를 사용할 수 있습니다.
Jupyter 노트북 지원
이번 달에는 *.ipynb 파일을 읽는 코드를 Jupyter Notebook 확장 프로그램에서 새로운 내장 확장 프로그램으로 이동했습니다. 이는 전체 Jupyter 확장 프로그램을 설치할 필요 없이 VS Code에서 바로 Jupyter 노트북을 열 수 있음을 의미합니다. 그러나 ipywidgets 또는 기타 복잡한 렌더러 유형을 사용하는 셀을 실행하거나 출력을 보려면 Jupyter 확장 프로그램을 설치해야 합니다.
노트북 레이아웃 개선
이번 반복에서 노트북 레이아웃에 몇 가지 개선 사항을 적용했습니다.
- 셀이 축소될 때 셀 입력의 첫 번째 줄이 렌더링됩니다.
- 창의 너비가 충분하지 않아 모든 기본 동작을 렌더링할 수 없을 때 노트북 편집기 도구 모음의 동작이 오버플로 메뉴(...)로 이동합니다.
notebook.undoRedoPerCell의 기본값이 이제true로 변경되었습니다.

코드 셀의 기본 스타일도 업데이트했으며 셀을 구별하는 데 도움이 되는 배경색을 표시합니다. 테마는 이 색상을 사용자 지정하기 위해 notebook.cellEditorBackground를 사용할 수 있습니다.

마지막으로 설정 notebook.globalToolbarShowLabel을 사용하여 노트북 도구 모음의 텍스트 레이블을 토글할 수 있습니다.

상대 경로 복사 시 경로 구분 기호 구성
새로운 설정 explorer.copyRelativePathSeparator를 사용하면 상대 경로 복사 작업을 호출할 때 경로 구분 기호를 명시적으로 설정할 수 있습니다.
사용 가능한 구분 기호 옵션은 다음과 같습니다.
auto(기본값) - 운영 체제별 경로 구분 문자를 사용합니다./- 슬래시를 경로 구분 기호로 사용합니다.\\- 백슬래시를 경로 구분 기호로 사용합니다.
편집기 그룹 간 뷰 상태 공유
편집기 뷰 상태(예: 편집기의 스크롤 위치)를 편집기 그룹 간에 공유하는 방법을 구성하기 위해 새 설정 workbench.editor.sharedViewState가 추가되었습니다.
기본적으로 이 설정은 현재 동작을 유지하기 위해 비활성화되어 있습니다. 편집기를 옆으로 열고 해당 편집기 그룹을 나중에 닫은 다음 다시 옆으로 열어도 새 편집기 그룹을 열기 때문에 뷰 상태가 복원되지 않습니다. 그러나 이 설정을 활성화하면 가장 최근 편집기 뷰 상태가 모든 편집기 그룹에 걸쳐 유지되며, 해당 편집기 그룹에 대한 더 구체적인 뷰 상태가 발견되지 않는 한 사용됩니다.
아래는 package.json 파일을 옆으로 다시 열 때 선택 상태가 유지되는 것을 보여줍니다.

편집기
접기 영역 간 탐색
해당 접기 위치로 커서 위치를 설정하는 새로운 명령이 있습니다.
- 다음 접기 이동 (
editor.gotoNextFold) - 이전 접기 이동 (
editor.gotoPreviousFold) - 부모 접기 이동 (
editor.gotoParentFold)
현재 이 명령에는 기본 키 바인딩이 없지만 기본 설정: 키 바인딩 열기 (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))를 통해 사용자 고유의 바로 가기 키를 추가할 수 있습니다.
가져오기 자동 접기
editor.foldingImportsByDefault 설정을 사용하여 가져오기 문을 자동으로 접습니다. 파일이 한 번 열리면 접기 상태가 저장됩니다. 이 기능은 TypeScript, JavaScript, Java, C#, C++ 및 가져오기 문에 FoldingRangeKind.Imports를 주석으로 추가하는 접기 범위 공급자를 가진 모든 언어에서 작동합니다.
선택 항목에서 검색 문자열 시드
찾기 제어 설정 editor.find.seedSearchStringFromSelection이 비어 있지 않은 선택 항목에서만 검색 문자열을 시드하도록 확장되었습니다. 기본적으로 편집기는 찾기 제어가 표시될 때 선택 항목 또는 빈 선택 항목 주위의 단어를 검색 키보드로 사용합니다.
인라인 제안 개선
인라인 제안 렌더링 방식을 변경했습니다. 이는 많은 버그를 수정했을 뿐만 아니라 단어 줄 바꿈이 인라인 제안을 인식하도록 합니다.
또한, 줄 끝이 아닌 위치에서의 여러 줄 인라인 제안이 지원됩니다.
인레이 힌트 개선
인레이 힌트 렌더링 방식도 변경했습니다. 인라인 제안과 동일한 메커니즘을 사용하여 인레이 힌트도 이제 단어 줄 바꿈에서 고려됩니다. 이 메커니즘은 인레이 힌트 주위에 별도의 커서 정지를 가능하게 합니다.
터미널
창 간 터미널 끌어다 놓기
한 창의 탭 목록 또는 편집기 영역에서 다른 창의 탭 목록, 편집기 영역 또는 패널로 터미널을 끌어다 놓습니다.

자식 프로세스 추적 및 종료 경고
기존 terminal.integrated.confirmOnExit 설정과 새 terminal.integrated.confirmOnKill 설정은 자식 프로세스 추적을 사용하여 쉘 프로세스 아래에 자식 프로세스가 있는 터미널을 닫으려고 할 때 경고를 표시합니다. 기본적으로 이 추적은 편집기 영역의 터미널에만 영향을 미치지만 이제 모든 터미널 또는 패널 영역의 터미널에 대한 경고를 표시하도록 구성할 수 있습니다.
기여된 터미널 프로필을 기본값으로 설정
확장 프로그램에 의해 기여된 터미널 프로필을 이제 기본 프로필로 설정할 수 있습니다. 기본 터미널 프로필은 터미널 드롭다운에서 기본 접미사로 표시됩니다.

밑줄 및 취소선 지원
통합 터미널이 이제 밑줄 및 취소선 속성을 지원합니다. 예를 들어, Git은 이러한 새 속성을 사용하도록 구성할 수 있습니다.

테마: Sapphire Theme
위 예제는 .gitconfig에서 다음 설정을 사용합니다.
[color "status"]
added = green bold
changed = red bold strike
untracked = cyan
branch = yellow black bold ul
편집기 영역에 터미널 측면 생성
새로운 명령 workbench.action.createTerminalEditorSide를 사용하여 활성 편집기 옆의 편집기 영역에 터미널을 생성할 수 있습니다.
활성 터미널 탭 표시기
이제 테마는 활성 터미널 탭을 표시하기 위해 세로 선의 색상을 테마 키 terminal.tab.activeBorder를 사용하여 설정할 수 있습니다.

terminal.tab.activeBorder가 설정되지 않은 경우 색상은 tab.activeBorder로 대체됩니다.
터미널 탭 아이콘 애니메이션 비활성화
새 설정 terminal.integrated.tabs.enableAnimation은 터미널 탭 아이콘의 애니메이션을 비활성화합니다. 작업의 경우 회전 애니메이션 대신 재생 버튼이 사용됩니다.

디버깅
편집기 제목의 실행/디버그 버튼 개선
2월 릴리스에서는 편집기 제목 영역에 실행 및 디버그 명령을 중앙(및 간결한) 위치에 그룹화하는 드롭다운 버튼을 도입했습니다(1.54 릴리스 노트 참조). 사용자 피드백을 바탕으로 마지막으로 실행된 작업을 기억하도록 드롭다운 버튼을 개선했습니다. 드롭다운 버튼에는 이제 기본 작업(왼쪽) 영역과 드롭다운(오른쪽) 영역의 두 가지 클릭 영역이 있으며, 선택하면 작업이 실행되고 새 기본값으로 기억됩니다.

드롭다운 동작
- 실행 또는 디버그 작업이 하나만 있는 경우 드롭다운 메뉴가 생략됩니다.
- 실행 또는 디버그 작업이 둘 이상 있는 경우 모든 작업이 드롭다운 메뉴에 표시되고 기본 작업은 드롭다운 메뉴의 첫 번째 작업으로 설정됩니다(기억된 작업이 없는 한).
- 기본 작업은 VS Code 다시 시작 시 특정 작업 영역에 대해 유지되며, 편집기당 유지되지 않습니다.
확장 프로그램 기여
라이브 미리보기
지난 달에 릴리스된 라이브 미리 보기 확장 프로그램에는 몇 가지 흥미로운 새 기능이 있습니다. 여기에는 다음이 포함됩니다.
- 외부 미리 보기에 대한 내장 JavaScript 디버거와의 호환성.
- 라이브 미리 보기: 디버그 미리 보기 표시를 실행하여 시도해 보세요!
- "페이지에서 찾기" 지원 및
webvivewDevTools에 대한 빠른 액세스와 같은 내장 브라우저 개선. - 자동 생성 파일에 대한 파일 시스템 감시.
- 그리고 더 많은 기능! 🎉
이번 달의 진행 상황에 대한 자세한 내용은 확장 프로그램의 릴리스 노트를 참조하세요.


GitHub Pull Requests 및 Issues
풀 요청 및 이슈 작업을 수행하고, 생성하고, 관리할 수 있는 GitHub Pull Requests and Issues 확장 프로그램에 대한 작업이 계속 진행 중입니다. 이번 달의 주요 내용 중 하나는 이슈에 대한 작업 시작이 현재 리포지토리 외부의 이슈에 대해 작업할 수 있도록 확장되었다는 것입니다.
새로운 기능과 업데이트에 대해 자세히 알아보려면 확장 프로그램의 0.29.0 릴리스에 대한 전체 변경 로그를 참조하세요.
Jupyter
Jupyter 확장 프로그램에 대한 작업이 계속 진행 중입니다. 새로운 기능과 업데이트에 대해 자세히 알아보려면 확장 프로그램의 7월 릴리스에 대한 전체 변경 로그를 읽어보세요.
VS Code의 네이티브 노트북 지원 활성화 경로에 대해 더 자세히 알고 싶으시면 최근 노트북의 시대 블로그 게시물을 읽어보세요.
대화형 창
Jupyter 대화형 창은 노트북 인터페이스 대신 텍스트 파일을 사용하여 Jupyter 노트북을 빌드하고 작업할 수 있는 대안을 제공합니다. 지난 달에는 테마, 사용자 지정 키 바인딩, 스니펫, 확장 프로그램과의 호환성 등을 포함하여 더 깊은 워크벤치 통합을 특징으로 하는 업그레이드된 Jupyter 대화형 창을 미리 보았습니다. 미리 보기 경험에 대한 GitHub 이슈를 통해 피드백을 제공해 주신 사용자분들께 감사드립니다. 내장 대화형 창이 이제 1.59에서 기본 인터페이스입니다. 이전 인터페이스는 설정 "jupyter.enableNativeInteractiveWindow": false 뒤에 계속 사용할 수 있으며 다음 릴리스에서 제거될 예정입니다. 여러분의 피드백을 기다립니다.

줄 단위 실행
Jupyter 노트북에서 "줄 단위 실행" 기능을 지원하기 위해 노력하고 있습니다. 이 기능은 본질적으로 복잡한 디버그 UI 없이 셀 코드를 줄 단위로 단계별로 실행할 수 있는 간소화된 디버그 모드입니다. 아직 실험 단계이지만 "jupyter.experimental.debugging": true를 설정하고 선택한 커널에 ipykernel 버전 6을 설치한 다음 셀 도구 모음에서 줄 단위 실행 버튼을 선택하여 시도해 볼 수 있습니다.

Python
Python 확장 프로그램에서는 Python 인터프리터 목록의 정렬을 개선했습니다. 과거에는 가상 환경이 목록 맨 아래에 표시되어 많은 스크롤 및/또는 검색이 필요했습니다. 이제 프로젝트 루트에 있는 가상 환경이 먼저 표시되고 전역적으로 설치된 환경이 그 뒤를 따릅니다.

Dev Containers devcontainer CLI
VS Code 내에서 Docker 컨테이너 작업을 위한 Dev Containers 확장 프로그램은 이제 폴더를 dev 컨테이너 내에서 열기(devcontainer open) 또는 dev 컨테이너 이미지 빌드(devcontainer build)를 위한 devcontainer 명령줄 인터페이스를 포함합니다.
새로운 원격 개발 확장 기능 및 버그 수정에 대한 자세한 내용은 원격 개발 릴리스 노트에서 확인할 수 있습니다.
미리보기 기능
새 파일의 자동 언어 감지
무제출 파일의 자동 언어 감지 초기 미리 보기를 발표하게 되어 기쁩니다. 이 기능은 머신 러닝을 사용하여 코딩 중인 언어를 감지하고 무제출 파일의 언어 모드를 자동으로 설정합니다. 이 기능은 오픈 소스 ML 라이브러리인 Tensorflow.js와 GitHub 사용자 @yoeo의 Guesslang에서 제공하는 ML 모델을 사용합니다.
이 릴리스에서는 이 기능이 기본적으로 비활성화되어 있지만 다음 반복에서 기본값으로 설정할 계획입니다. 활성화하려면 다음 설정을 적용하세요.
"workbench.editor.untitled.experimentalLanguageDetection": true
기능을 작동하는 것을 보려면 무제출 파일을 열고(파일 > 새 파일) 편집기에 소스 코드를 붙여넣으세요.
Python 코드의 자동 감지 예시는 다음과 같습니다.

테마: Panda Theme
추가로, 언어 선택기를 열어 감지되고 있는 언어를 확인할 수 있습니다.

테마: Panda Theme
참고: 언어 감지가 충분히 확실하지 않으면 현재 언어 모드로 유지되며, 언어 감지에 더 확신이 생길 때까지 언어 선택기에 결과가 표시되지 않습니다.
이 설정은 또한 자동 전환되지 않도록 하려는 언어 모드를 지정하기 위해 언어 재정의를 제공할 수 있습니다.
Markdown 파일 자동 감지를 하지 않는 예시는 다음과 같습니다.
"workbench.editor.untitled.experimentalLanguageDetection": true
"[markdown]": { "workbench.editor.untitled.experimentalLanguageDetection": false }
위 설정을 사용하면 Markdown 파일이 아닌 무제출 파일을 편집하는 동안 자동 언어 감지가 실행되지 않습니다. 그러나 다른 종류의 무제출 파일을 수정하면 해당 파일의 내용으로 자동 언어 감지가 실행됩니다.
ML 모델과 상호 작용하는 코드를 별도의 라이브러리로 분리하여 npm 패키지로 릴리스했으며, vscode-languagedetection repo에 있습니다.
무제출 파일의 자동 언어 감지가 어떻게 작동하는지 알려주세요!
TypeScript 4.4
이 릴리스에는 곧 출시될 TypeScript 4.4 릴리스에 대한 지원이 포함됩니다. TypeScript 4.4의 새로운 언어 기능 및 개선 사항에 대한 자세한 내용은 TypeScript 블로그에서 읽어볼 수 있습니다. 몇 가지 도구 하이라이트:
- JavaScript 및 TypeScript 파일 모두에서 매개변수 이름 및 유형에 대한 인레이 힌트.
- 일반 JavaScript 파일의 기본 철자 제안. TypeScript 언어 서비스가 오류와 수정 사항을 확신하는 경우에만 표시됩니다.
TypeScript 4.4 야간 빌드를 사용하려면 TypeScript Nightly 확장 프로그램을 설치하세요.
피드백을 공유하고 TypeScript 4.4에서 버그가 발견되면 알려주세요.
디스어셈블리 보기
Microsoft C++ 팀의 대규모 기여 덕분에 이번 마일스톤에 디버그 디스어셈블리 보기 미리 보기를 포함하게 되어 기쁩니다.
디스어셈블리 보기는 편집기의 컨텍스트 메뉴에서 열어 활성 스택 프레임의 디스어셈블된 소스를 표시할 수 있으며, 어셈블리 명령을 단계별로 실행하고 개별 명령에 중단점을 설정할 수 있습니다.
디스어셈블리 보기는 활성 디버그 세션에 있을 때와 기본 디버그 확장 프로그램이 지원하는 경우에만 사용할 수 있습니다. 현재 Microsoft C++ 및 Mock Debug 확장 프로그램만 디스어셈블리 보기에 데이터를 제공할 수 있습니다.

기술적으로 VS Code의 디스어셈블리 보기 구현은 디버그 어댑터 프로토콜의 네 가지 추가 기능을 지원합니다.
- 메모리 위치에 대한 디스어셈블된 소스를 제공하는
disassembly요청. - 스택 프레임의
instructionPointerReference속성. - 단계 요청의
granularity속성. - 명령어 중단점 및
setInstructionBreakpoints요청.
확장 프로그램 작성
테스트 API
지난 가을에 VS Code에서 네이티브 테스트 실행 지원을 추가하기 시작했으며, 이번 달에 첫 번째 테스트 관련 API 세트가 최종 확정되었습니다. 이 API는 이전에 확장 프로그램에서 발견된 것보다 더 나은 유연성, 성능 및 풍부한 UX를 제공합니다. 테스트 확장 프로그램 작성에 대한 안내를 확인하여 자세히 알아보세요.

테마: codesong
기존 Test Explorer UI 확장 프로그램 사용자는 testExplorer.useNativeTesting을 true로 설정하여 네이티브 경험을 얻을 수 있습니다. 그러나 변환은 Test Explorer UI 확장 프로그램의 기존 API를 반영하므로 풍부한 diff 지원과 같은 일부 기능은 포함되지 않습니다.
테스트 API를 채택한 첫 번째 확장 프로그램 중 하나는 Java용 확장 팩에 포함된 Microsoft Test Runner for Java였습니다.

새 파일 메뉴 기여 지점
노트북이나 사용자 지정 편집기와 같이 새 파일 편집기를 만드는 방법을 제공하는 확장 프로그램은 이제 새 file/newFile 메뉴 기여 지점에 명령을 기여할 수 있습니다. 이 메뉴는 환영 페이지 또는 파일 메뉴의 새 파일... 항목에서 액세스할 수 있습니다.

풍부한 상태 표시줄 호버
이제 상태 표시줄 항목 StatusBarItem.tooltip: string | IMarkdownString에 링크 및 아이콘을 포함한 풍부한 호버가 지원됩니다.

MarkdownString.supportThemeIcons가 true이면$(iconName)구문을 사용하여 아이콘을 사용할 수 있습니다.MarkdownString이 신뢰되면 명령 링크를 추가할 수도 있습니다. 구문:([test](command:vscode.newWindow)).
상태 표시줄 경고 색상
경고를 나타내는 상태 표시줄 항목은 새로 추가된 색상 statusBarItem.warningBackground 및 statusBarItem.warningForeground를 사용할 수 있습니다.
additionalProperties가 없는 객체 설정
객체가 설정 편집기에서 지원되려면 객체 설정에 additionalProperties가 false로 설정되어야 합니다. 그렇지 않으면 설정 편집기는 설정을 임의의 모양을 가질 수 있는 복잡한 설정으로 해석하고 사용자에게 설정 JSON 파일을 안내합니다.
여러 줄 문자열 설정
설정 편집기에 여러 줄 문자열 설정을 지원하려면 문자열 설정에 키-값 쌍으로 "editPresentation": "multilineText"를 추가합니다. 문자열 설정을 여러 줄로 변경하면 설정 편집기는 단일 줄 입력 상자 대신 여러 줄 텍스트 영역에 설정 값을 렌더링합니다.
업데이트된 코드 아이콘
저희는 코드 아이콘 라이브러리에 다음의 새로운 아이콘을 추가했습니다.
![]()
azurecompass-activecompass-activecompass-dotcompassdebug-alldebug-coveragegit-pull-request-closedgit-pull-request-draftissue-draftlayers-activelayers-dotlayers
텍스트 문서 변경 이유
workspace.onDidChangeTextDocument 이벤트가 발생할 때 이벤트 객체의 새 속성 reason은 텍스트 변경이 실행 취소 또는 다시 실행 작업으로 인해 발생했는지 여부를 나타냅니다.
언어 서버 프로토콜
새로운 버전의 언어 서버 프로토콜과 해당 npm 모듈이 게시되었습니다. 3.17 버전에는 VS Code 자체의 최신 변경 사항과 일치하는 완료 항목 레이블 세부 정보에 대한 제안이 포함되어 있습니다.
디버그 어댑터 프로토콜
최종 확정된 "writeMemory" 요청 및 "memory" 이벤트 제안
writeMemory 요청이 최종 확정되었으며 이제 디버그 어댑터 프로토콜 버전 1.48 및 해당 npm 모듈에서 사용할 수 있습니다. 디버그 어댑터에 supportsWriteMemoryRequest 기능이 있는 경우 클라이언트는 writeMemory 요청을 사용하여 주어진 위치의 메모리에 바이트를 쓸 수 있습니다.
memory 이벤트에는 다음 마일스톤에 DAP에 추가될 제안이 있습니다.
제안된 확장 API
모든 마일스톤에는 새로운 제안 API가 제공되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 원합니다. 제안된 API를 사용하려면 다음을 수행해야 합니다.
- 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
- 확장의
package.json파일에 이 줄이 있어야 합니다:"enableProposedApi": true. vscode.proposed.d.ts파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.
제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.
TaskGroup의 isDefault
group 속성은 tasks.json 파일에 정의된 작업에 존재하며 작업 API를 통해 노출됩니다. group 속성에는 isDefault 속성이 있지만 API에서는 이전까지 사용할 수 없었습니다. 이 제안은 TaskGroup에 isDefault 속성을 읽기 전용으로 노출하여 확장 프로그램이 그룹의 기본값을 읽을 수 있도록 하지만, 그룹의 기본값을 설정하여 사용자의 구성을 재정의할 수는 없습니다.
AuthenticationGetSessionOptions의 forceRecreate
지금까지 인증 세션 객체를 가져오는 데 사용되는 getSession API는 사용자에게 로그인하도록 요청할 수 있는 기능이 없었습니다. SAML/Single Sign On(SSO)을 사용하는 GitHub와 같은 인증 서비스에는 SSO 세션이 만료되면 리소스에 대한 액세스가 결국 손실되는 액세스 토큰이 필요하므로 로그인 프롬프트가 필요합니다. 이 제안은 AuthenticationGetSessionOptions에 forceRecreate라는 속성을 추가하여 사용자에게 다시 로그인하도록 요청할 수 있습니다. createIfNone을 지정할 때와 유사한 모달 환경이 사용자에게 표시됩니다.
엔지니어링
iframe 기반 웹뷰가 이제 데스크톱에서 모든 곳에 사용됨
이번 달에 Electron의 웹뷰 태그 요소를 일반 <iframe> 요소 기반 웹뷰로 전환하는 작업을 완료했습니다. 이는 데스크톱과 웹 간의 VS Code 웹뷰 구현을 더 잘 정렬하며, 불필요해진 많은 코드를 삭제할 수 있습니다.
Electron 13 업데이트
이번 마일스톤에서 Electron 13을 VS Code에 번들링하는 탐색을 완료했으며, Insiders를 테스트하고 자체 호스팅한 모든 분들께 감사드립니다. 이것은 주요 Electron 릴리스이며 Chromium 91.0.4472.124와 함께 제공됩니다. 이 릴리스에서는 Node.js 버전에 변경 사항이 없으며 v14.16.0으로 유지됩니다.
Electron 샌드박스 지원을 위한 진행 상황
VS Code 워크벤치를 Electron의 샌드박스 활성화 준비가 계속됨에 따라 Linux에서 혼합 샌드박스 모드를 활성화하고 싶었으며, 배포된 패키지(deb, rpm, snap 및 tar 아카이브)에 --no-sandbox CLI 인수를 사용하지 않을 것입니다. Chromium에는 Linux에서 다층 샌드박싱 모델이 있습니다. Chromium이 레이어-1에 네임스페이스 샌드박스를 사용할 수 없으면 애플리케이션 바이너리와 함께 제공되는 도우미 바이너리 chrome-sandbox를 통해 setuid 샌드박스를 사용하려고 시도합니다. setuid 바이너리가 작동하려면 다음 조건을 충족해야 합니다.
- 샌드박스 바이너리는 Chromium 프로세스에서 실행 가능해야 합니다.
- SUID여야 하며 다른 사용자도 실행할 수 있어야 합니다.
deb 및 rpm 패키지의 경우 이러한 조건을 유지할 수 있었습니다. 현재 snap에 대해 이러한 권한을 달성하는 것은 불가능하며, 향후 snap 패키지를 해결하기 위한 추적 이슈 #127140가 있습니다.
tar 아카이브를 사용하는 경우, 네임스페이스 샌드박스를 사용할 수 없는 경우(컨테이너 내에서 실행할 때 발생할 수 있음) 다음과 같은 오류가 발생합니다.
FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that chrome-sandbox is owned by root and has mode 4755.
이 경우 다음 두 가지 옵션 중 하나를 사용하여 작동하도록 할 수 있습니다.
-
setuid도우미의 권한 수정sudo chown root <path-to-vscode>/chrome-sandbox sudo chmod 4755 <path-to-vscode>/chrome-sandbox -
--no-sandbox플래그로 실행
연기 테스트 개선
각 빌드에서 트리거되는 연기 테스트 세트를 실행하여 VS Code(데스크톱 및 웹 모두)를 시작하고 다양한 UI 요소를 실행하여 올바른 기능을 보장합니다. 이번 마일스톤에서는 릴리스 체크리스트에서 수동 연기 테스트를 제거할 수 있도록 이 인프라에 투자했습니다.
연기 테스트는 이제 모든 플랫폼(macOS, Linux 및 Windows)에서 실행됩니다. 또한 마지막 Stable 버전 VS Code와 새 릴리스 간의 회귀를 구체적으로 확인하는 복잡한 연기 테스트 스위트 중 하나가 각 커밋에서 실행되도록 자동화되었습니다.
마지막으로, 자동화된 웹 연기 테스트에 사용하는 훌륭한 Playwright 라이브러리 덕분에 추적 기능을 활성화하여 추적 뷰어 도구를 사용하여 실패한 연기 테스트를 재생할 수 있게 되었습니다.
주요 수정 사항
- 26425: 변경 사항 없음에도 변경 사항 열기 버튼 표시
- 100815: 원격 WSL에 연결 시 외부 터미널 깨짐
- 106981: 창 확대/축소 레벨이 -1로 설정된 경우 터미널 커서 고스팅
- 127959: 디버거 일시 중지 시 디버그 창 열림
- 129059: 설정 편집기의 객체 위젯 설명 렌더링 안 됨
- 129070: OK 버튼만 눌러 드롭다운 설정 값 수정 불가
- 129415: 단일 파일 모드에서 사용자 작업 실행 불가
감사합니다
마지막으로, 이번 달 VS Code에 기여해주신 다음 분들께 진심으로 감사드립니다.
이슈 추적에 대한 기여
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- @CodeCrazy-ywt
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
vscode 기여
- @71 (Grégoire Geis): platform/configuration: 빈 키가 구성 파서에서 무시되는 문제 수정 PR #128909
- @adaex (Aex): eslintrc.json seti-ui 아이콘 지원 추가 PR #123404
- @alanrenmsft (Alan Ren)
- 최대 호출 스택 크기 초과 문제 수정 PR #119929
- 접근성 요구 사항 충족을 위해 드롭다운 화살표 크게 만들기 PR #127839
- @alielbashir (Ali Elbashir): github spaces 링크 오타 수정 PR #128120
- @andrewbranch (Andrew Branch): [typescript-language-features] suggest.allowIncompleteCompletions 추가 및 TS 서버에 트리거 종류 전달 PR #127673
- @door-bell (Tim): 편집기 및 터미널 외부 목록 스크롤 감도에 대한 설정 추가 PR #110059
- @galexite (George White):
.ixx를 가능한 C++ 확장으로 추가 PR #127962 - @headerjson: TaskGroup API에 isDefault 추가 PR #128596
- @jeanp413 (Jean Pierre)
- '열린 편집기' 및 '소스 제어' 보기에서 키보드 다중 선택 작동하지 않는 문제 수정 PR #128284
- 탐색기 트리에서 폴더를 터미널로 드래그하면 더 이상 폴더 경로가 복사되지 않는 문제 수정 PR #128419
- 터미널에서 파이썬 파일 실행 시, 터미널 편집기를 사용해도 패널이 열리는 문제 수정 PR #128866
- @joshspicer (Josh Spicer): welcomePage.contribution.ts의 오타 수정 PR #127893
- @karolz-ms (Karol Zadora-Przylecki): dockercompose 언어에 대한 기본값 개선 PR #128550
- @kieranlblack (Kieran Black): 복사 구분 기호 수정 설정 추가 PR #101197
- @kilbouri (Isaac Kilbourne): 커밋 메시지 PR #127849
- @Kingwl (Wenlu Wang)
- ts 인라인 힌트 추가 PR #113412
- monaco를 위한 인라인 힌트 API 노출 PR #127391
- 인라인 힌트의 기본값으로 editor.fontFamily 사용 PR #128181
- import 구문에 대한 자동 접기 추가 PR #128978
- @movermeyer (Michael Overmeyer)
- 시간 기반 스니펫 변수 모두 동일한 시간을 사용하여 해결 PR #128571
- 생성자에서 private 필드 제거 PR #128857
- @nickdelja (Nick Delja): 사소한 오타 수정 PR #129439
- @NSExceptional (Tanner Bennett): macOS에서 더 구체적인 파일 형식 설명 제공 PR #117713
- @shantaram3013 (Siddharth Singh): walkthrough: 지원 중단된 속성 이름 업데이트 PR #129041
- @SNDST00M (SNDST00M: M.U.N.I.N): 확장된 테마 사용자 지정 구문 PR #122969
- @ssigwart (Stephen Sigwart): Fold Jumping (부모 및 동일 레벨의 다음/이전) 추가 PR #128450
- @suema0331: Fix#122454: 긴 터미널 제목 잘라내기 PR #122620
- @timfenney (Tim Fenney): 키보드 단축키에 복사 명령 레이블 추가. PR #125563
- @usjpin (Utkarsh Singh): 입력 중 활동 표시줄 호버 숨기기 PR #128362
- @xisui-MSFT
- 디스어셈블리 보기 PR #125737
- 디스어셈블리 보기에서 포커스 문제 수정 PR #129616
- 디스어셈블리 보기의 초기 뷰 크기 증가 PR #129651
- 디스어셈블리 보기 열기 메뉴가 존재하지만 비활성화된 상태여야 함 PR #129726
vscode-extension-samples 기여
- @gjsjohnmurray (John Murray): fix #400 tree-view-sample: package.json, package-lock.json 업데이트 PR #401
- @jabbera (Mike): launch.json에 --enable-proposed-api 추가 PR #346
- @james1293: 추가 parseTree 제거 PR #406
vscode-languageserver-node에 기여
- @perrinjerome (Jérome Perrin): 해제할 수 없는 "요청 실패" 대화 상자 수정 PR #787
vscode-pull-request-github 기여
- @binsee: fork 세부 정보 확인 수정 PR #2806
- @iChenLei (ChenLei): chore: deprecated vscode-test를 @vscode/test-electron으로 교체 PR #2842
vscode-vsce 기여
- @legomushroom (Oleg Solomka):
azure-devops-node-api버전 업데이트 PR #589
debug-adapter-protocol에 기여
- @NipunaRanasinghe (Nipuna Ransinghe ): Ballerina 디버그 어댑터 정보 업데이트 PR #201
language-server-protocol 기여
- @leegbestand: jsonrpcReservedErrorRangeEnd 주석 업데이트 PR #1315
monaco-editor 기여
- @Surm4 (Marcin): playground에서 노출된 색상 샘플 업데이트. PR #2561
monaco-languages에 대한 기여
- @alefragnani (Alessandro Fragnani): Pascal 언어에
strict키워드 추가 PR #153 - @jonatanklosko (Jonatan Kłosko): GitHub 스타일 코드 블록에서 닫는 펜 토큰화 수정 PR #149
- @lofcz (Matěj Štágl): razor + liquid에서 대시 기호가 있는 태그 렌더링 수정 PR #150