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

2018년 3월 (버전 1.22)

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

다운로드: Windows | Mac | Linux 64비트: .tar.gz .deb .rpm | Linux 32비트: .tar.gz .deb .rpm


Visual Studio Code의 2018년 3월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하실 만한 몇 가지 중요한 업데이트가 있으며, 주요 내용은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.
또한, 클라우드 개발자 옹호자인 Brian Clark가 만든 이 1.22 릴리스 하이라이트 동영상을 확인할 수 있습니다.

릴리스 노트는 VS Code의 주요 영역과 관련된 다음 섹션에 배열됩니다. 몇 가지 추가 업데이트입니다.

  • 편집기 - Emmet 성능 및 스마트 일치 개선, 새 스니펫 날짜 변수.
  • 워크벤치 - Windows에서 더 부드러운 스크롤, 검색 및 바꾸기 중 자동 저장.
  • 디버깅 - 향상된 Node.js 프로세스 선택기, launch.json의 postDebugTask.
  • 태스크 - 향상된 명령 및 인자 따옴표 및 이스케이프 지원.
  • 언어 - JSDoc에서의 IntelliSense 개선, CSS 경로 완성.
  • 확장 개발 - 취소 기능이 있는 장기 실행 작업, 진단에 관련 정보 추가.

Insider: 새로운 기능을 최대한 빨리 확인하고 싶으신가요? 야간 Insider 빌드를 다운로드하여 최신 업데이트를 가능한 한 빨리 사용해 볼 수 있습니다.

편집기

구문 인식 코드 접기

HTML, JSON, Markdown, CSS, LESS 및 SCSS의 접기 범위는 이제 기본적으로 언어의 구문을 기반으로 계산되며 더 이상 올바른 들여쓰기에 의존하지 않습니다.

Syntax folding

TypeScript 및 JavaScript에 대한 지원도 사용할 수 있으며, "typescript.experimental.syntaxFolding": true 설정을 통해 활성화할 수 있습니다.

위에 언급된 언어 중 하나(또는 모두)에 대해 들여쓰기 기반 접기로 다시 전환하려면 다음을 사용하십시오.

  "[html]": {
    "editor.foldingStrategy": "indentation"
  },

: 이 기능이 Markdown 파일의 헤더 영역 접기에 어떻게 사용되는지 확인하십시오.

확장을 위한 새로운 API가 제안되어 다른 언어도 구문 인식 접기 공급자를 제공할 수 있도록 했습니다.

파일 간 오류 및 참조 탐색

이번 릴리스에서는 F8 (다음 문제로 이동)를 통해 오류 및 경고를 탐색할 때 보고된 모든 오류를 고려합니다. 단일 파일 내에서 반복하는 대신, 오류가 있는 다음 파일로 이동하고 다시 돌아갑니다.

Visit All Diagnostics

마찬가지로, 참조 검색 결과로 이동하는 새로운 명령이 있습니다. 기호에서 모든 참조 찾기를 트리거하고 이제 F4⇧F4 (Windows, Linux Shift+F4)를 사용하여 각 참조를 방문하십시오. 이렇게 하면 기호를 참조하는 모든 위치에서 편집을 수행할 수 있으며 손가락을 키보드에서 뗄 필요가 없습니다.

Visit All References

편집기 내 힌트

확장 API는 이제 '힌트' 진단을 생성하는 것을 지원합니다. 오류나 경고가 아니라, 특정 리팩토링 실행과 같이 무언가를 더 잘 만들 수 있는 방법에 대한 제안입니다.

힌트 진단은 문제의 단어 시작 부분 아래에 줄임표 ...로 렌더링됩니다.

Hint Diagnostics

확장 작성자는 항상 코드 액션과 함께 힌트를 포함하는 것이 좋습니다. 힌트 진단은 코드 액션을 홍보하는 데 도움이 될 수 있습니다. 그러나 일부 사용자는 편집기에서 힌트를 표시하고 싶지 않을 수 있으므로 비활성화하는 기능도 포함됩니다.

: 이번 릴리스에서는 JavaScript/TypeScript 리팩토링에 대한 여러 힌트가 추가되었습니다.

확장 API는 이제 진단에 관련 정보를 추가하는 것을 지원하며, 이는 진단이 표시되는 모든 곳(호버, 오류 미리 보기 창, 문제 창)에 표시됩니다.

아래 예시에서 반복 할당된 변수가 사용된 첫 번째 위치를 가리키는 관련 정보를 볼 수 있습니다.

Related Diagnostics Information

대용량 파일 열기 용이

이전에는 대용량 파일(~2GB 이상)을 편집기에서 열면 --max-memory=NEWSIZE 플래그를 사용하여 명령줄에서 다시 시작하라는 메시지가 표시되었습니다. 이 마찰을 줄이기 위해, 애플리케이션이 현재 사용하도록 허용된 메모리보다 더 많은 메모리가 필요한 파일을 열려고 하면, 애플리케이션에 더 많은 메모리를 사용할 수 있도록 빠르게 다시 시작할 수 있는 새 알림이 표시됩니다. 다시 시작 후 사용 가능한 최대 메모리는 새 설정 files.maxMemoryForLargeFilesMB로 구성할 수 있으며 기본값은 4096(4GB)입니다.

Large File Notification

구문 강조 표시 최적화

이번 릴리스에서는 뷰포트의 범위를 기반으로 파일을 연 직후 뷰포트의 구문 강조 표시를 수행합니다. 이는 사용자가 정의로 이동 명령을 사용하여 새 파일을 열 때 볼 수 있듯이 훨씬 빠른 색상화를 초래합니다.

왼쪽: VS Code 1.21 오른쪽: VS Code 1.22

Syntax highlighting optimization

대용량 파일에 대한 검색 및 바꾸기 개선

지난 릴리스에서 새 텍스트 버퍼 구현을 출시했으며(블로그 게시물 참조), 대용량 파일에 대한 검색 및 바꾸기 최적화를 계속 진행했습니다.

저장 시 포맷 시간 초과 구성 가능

VS Code는 파일을 디스크에 저장하기 직전에 포맷터를 실행할 수 있으므로 속도가 중요합니다. 느린 확장 프로그램은 저장을 느리게 만들 수 있습니다. 이러한 이유로 VS Code는 저장에 매우 엄격하며 저장 시 포맷 요청을 750ms 후에 취소합니다. 일부 확장 프로그램, 특히 대용량 파일을 다룰 때는 시간이 충분하지 않으므로, 시간 초과를 구성하기 위한 새 설정 "editor.formatOnSaveTimeout"을 추가했습니다. 언어 확장 프로그램이 포맷에 더 많은 시간이 필요하다는 것을 알고 있다면, 기본 언어별 설정으로 시간 초과를 수정할 수 있습니다.

저장을 모니터링하기 위해 이제 상태 표시줄에 진행률 표시기가 있습니다.

Save Participant

더 많은 스니펫 변수

현재 날짜 및 시간을 참조하기 위한 새로운 스니펫 변수가 있습니다. 예를 들어 숫자 28/3/2018 외에도 이제 '3월 28일'과 같은 이름을 사용할 수 있습니다. 새로운 변수는 다음과 같습니다.

  • ${CURRENT_DAY_NAME} - 요일 이름('월요일').
  • ${CURRENT_DAY_NAME_SHORT} - 요일의 짧은 이름('월').
  • ${CURRENT_MONTH_NAME} - 월의 전체 이름('7월').
  • ${CURRENT_MONTH_NAME_SHORT} - 월의 짧은 이름('7월').

Emmet

줄 바꿈 약어 미리 보기

Emmet: 줄 바꿈 또는 Emmet: 개별 줄 줄 바꿈 명령을 사용할 때, 줄 바꿈된 텍스트가 어떻게 보일지에 대한 미리 보기를 볼 수 있습니다.

Wrap text with abbreviation preview

더 빠른 약어 확장

대용량 CSS/SCSS/Less 파일에서 Emmet 약어 확장이 훨씬 빨라졌습니다. 이는 Emmet 약어 확장에 대한 현재 위치가 유효한지 여부를 결정할 때 전체 파일을 구문 분석하는 대신 커서 주변의 작은 영역만 구문 분석하여 달성됩니다.

더 스마트한 스니펫 일치

스타일시트의 Emmet 약어는 미리 정의된 스니펫과 퍼지 일치되어 가장 가까운 일치 결과를 제공합니다. emmet.preferencescss.fuzzySearchMinScore 설정을 변경하여 퍼지 일치 정확도를 제어할 수 있습니다. css.fuzzySearchMinScore는 일치하는 것으로 간주되기 위해 스니펫이 필요한 최소 점수를 설정합니다. 점수를 높이면 일치 수가 줄어들지만 정확도가 높아집니다. 기본값은 0.3이며 0에서 1 사이의 값을 제공할 수 있습니다.

"emmet.preferences": {
    "css.fuzzySearchMinScore": 0.3
}

워크벤치

Windows에서의 자동 백그라운드 업데이트

Windows의 Insiders 사용자에게 자동 백그라운드 업데이트를 꽤 오랫동안 제공해 왔습니다. 3월 릴리스에서는 모든 사용자에게 이 기능을 제공하기로 결정했습니다.

가장 오래 걸리는 업데이트 프로세스가 이제 백그라운드에서 실행될 수 있습니다. 준비가 되면 최종 업데이트를 적용하라는 알림을 받게 되며, 이는 훨씬 짧은 단계입니다. 따라서 최신 VS Code로 업데이트할 때 더 오랫동안 작업할 수 있습니다!

기존 동작으로 돌아가고 싶거나 새 업데이트 절차가 해당 시스템에서 문제가 있는 경우 update.enableWindowsBackgroundUpdates 구성 설정을 사용하여 이 기능을 비활성화할 수 있습니다.

Windows: 스크롤 지연에 대한 해결 방법

일부 장치에서 Windows의 스크롤이 매우 느리고 부드럽게 움직이지 않는다는 보고를 받았습니다(이슈 13612 참조). 부드러운 스크롤을 위한 해결 방법으로, 새 설정 window.smoothScrollingWorkaroundtrue로 설정할 수 있습니다. 이것은 해결 방법이며 창을 작업 표시줄에서 복원할 때마다 깜박임이 발생할 수 있으므로 기본적으로 활성화되지 않습니다. 설정을 활성화하더라도 다른 부작용은 없을 것입니다.

VS Code를 인수 없이 시작할 때 빈 창 열기

VS Code를 인수 없이 시작할 때 마지막 활성 인스턴스에 포커스를 맞출지 새 빈 창을 열지 여부를 제어하는 새 설정 window.openWithoutArgumentsInNewWindow가 도입되었습니다. Windows 및 Linux에서는 플랫폼 동작과 더 잘 일치하도록 이 설정이 기본적으로 활성화됩니다. 활성화된 경우 데스크톱에서 VS Code 아이콘을 두 번 클릭하거나 명령줄에서 인수 없이 VS Code를 실행하면 새 빈 창이 열립니다. 작업 표시줄 아이콘을 가운데 클릭하거나 Shift+클릭할 때 Windows에서도 마찬가지입니다. window.openWithoutArgumentsInNewWindowoff로 명시적으로 설정하여 이 동작을 비활성화하십시오.

검색 및 바꾸기 시 자동 저장

이제 검색 결과 전체를 바꾸려면 모두 저장하고 모두 닫기할 필요가 없습니다. 바꾸기 작업은 이제 변경 사항을 바꾸고 저장합니다.

검색 포함/제외 패턴

검색 보기의 포함 및 제외 패턴 상자가 단일 상자로 결합되었습니다. 기능은 정확히 동일하지만, 제외 패턴은 !로 접두사가 붙어야 합니다. 예를 들어, !*.js는 .js 확장명을 가진 파일을 검색하지 않습니다.

Combined search patterns inputs

트리: 가로 스크롤 지원

워크벤치 전반의 여러 트리 위젯에 대해 가로 스크롤을 활성화하는 새 전역 설정 workbench.tree.horizontalScrolling이 있습니다. 파일 탐색기에서 깊은 파일 시스템 계층과 같이 넓은 트리 요소의 가독성을 높이기 위해 사용하십시오.

통합 터미널

여러 줄에 걸친 경로 및 URL이 이제 링크로 작동합니다.

Multiline terminal links

구현에 여전히 몇 가지 문제가 있습니다. 특히 창 크기를 조정할 때 그렇습니다. 이러한 문제는 리플로우를 구현할 때 해결될 것입니다.

명령 추적

터미널에 이제 "명령 추적" 기능이 있습니다. 이 기능은 명령이 실행될 때를 추측하고 명령 간의 쉬운 탐색 및 선택을 허용합니다.

Terminal command tracking

이 기능은 macOS에서 다음과 같은 기본 키 바인딩을 가집니다.

  • 이전 명령으로 스크롤: Cmd+Up*
  • 다음 명령으로 스크롤: Cmd+Down*
  • 이전 명령으로 선택: Cmd+Shift+Up
  • 다음 명령으로 선택: Cmd+Shift+Down

* 참고: 한 줄 위/아래로 스크롤은 Cmd+Alt+PgUp/Cmd+Alt+PgDown으로 이동했습니다.

Windows 및 Linux에서는 keybindings.json 파일에 다음을 추가하여 이 명령에 대한 사용자 지정 키 바인딩을 구성할 수 있습니다.

{ "key": "ctrl+down",       "command": "workbench.action.terminal.scrollToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+up",         "command": "workbench.action.terminal.scrollToPreviousCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+down", "command": "workbench.action.terminal.selectToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+up",   "command": "workbench.action.terminal.selectToPreviousCommand",
                               "when": "terminalFocus" },

더 자연스러운 스크롤

터미널 애플리케이션 내 스크롤이 이제 더 자연스럽게 느껴질 것입니다. 픽셀, 줄 또는 페이지 단위로 스크롤할지 여부를 정의하는 OS 스크롤 설정이 이제 고려되기 때문입니다.

VS Code를 Git 편집기로 사용한 후 터미널에 다시 포커스

VS Code를 Git 편집기로 사용하고 통합 터미널에서 Git을 트리거할 때, 메시지 작성이 완료된 후 포커스가 터미널로 돌아갑니다.

디버깅

로그 포인트

이 마일스톤에는 로그포인트에 대한 첫 번째 작업이 포함됩니다. 로그포인트는 디버거를 "중단"하지 않고 콘솔에 메시지를 기록하는 중단점의 변형입니다. 로그포인트는 중지할 수 없는 프로덕션 서버를 디버깅할 때 로깅을 삽입하는 데 특히 유용합니다.

로그포인트는 "다이아몬드" 모양 아이콘으로 표시됩니다. 로그 메시지는 일반 텍스트이지만 중괄호('{}') 내에서 평가될 표현식을 포함할 수 있습니다.

Logpoints

일반 중단점과 마찬가지로 로그포인트는 활성화 또는 비활성화할 수 있으며 조건 및/또는 히트 수로 제어할 수도 있습니다.

로그포인트는 현재 VS Code의 내장 Node.js 디버거에서 지원되지만, 다른 디버그 확장 프로그램도 곧 지원할 것으로 예상합니다.

launch.json의 postDebugTask

launch.jsonpostDebugTask 지원을 추가했습니다. 이 태스크는 디버그 세션이 완료된 후 실행됩니다. preLaunchTask와 유사하게 tasks.json의 태스크를 이름으로 참조할 수 있습니다. postDebugTask를 사용하는 launch 구성의 예는 다음과 같습니다.

{
  "name": "Attach to node server",
  "type": "node",
  "request": "attach",
  "port": 8008,
  "preLaunchTask": "Start Server",
  "postDebugTask": "Stop Server"
}

Node 디버깅

Node.js 프로세스에 자동 연결

VS Code의 Node.js 디버거에 새로운 자동 연결 기능의 첫 번째 버전이 추가되었습니다. 활성화되면 Node 디버거는 VS Code의 통합 터미널에서 디버그 모드로 시작된 Node.js 프로세스에 자동으로 연결됩니다.

Auto Attach

기능을 활성화하려면 자동 연결 전환 작업을 사용하거나, Node 디버거가 이미 활성화된 경우 자동 연결 상태 표시줄 항목을 사용하십시오.

"디버그 모드"인지 여부는 프로그램 인수를 분석하여 결정됩니다. 현재 --inspect, --inspect-brk, --inspect-port, --debug, --debug-brk, --debug-port(선택적으로 '=' 및 포트 번호가 뒤따름) 패턴을 감지합니다.

참고: 이 기능은 'tmux'와 같은 터미널 멀티플렉서에서는 작동하지 않습니다(시작된 프로세스가 VS Code의 통합 터미널의 자식이 아님).

향상된 프로세스 선택기

이전 릴리스에서는 Node.js 프로세스에 대한 프로세스 선택기가 launch 구성 내에서 사용할 수 있는 "대화형 변수"로만 제공되었습니다.

이번 릴리스에서는 launch 구성 없이 사용할 수 있는 Node 프로세스에 연결 작업으로 선택기를 사용할 수 있게 했습니다.

선택기 및 새 작업을 더 유용하게 만들기 위해, 프로세스 ID를 통한 연결 외에도 디버그 포트를 통한 Node.js 프로세스 연결을 지원합니다.

Node.js 프로세스 외에도 선택기는 이제 --debug 또는 --inspect 인수의 다양한 형태 중 하나로 시작된 모든 프로그램을 표시합니다. 이를 통해 Electron 또는 VS Code의 헬퍼 프로세스에 연결할 수 있습니다.

Node.js Process Picker

선택기에 나열된 개별 프로세스 항목은 프로세스 ID 외에 디버그 포트와 감지된 프로토콜을 표시합니다.

작업

향상된 인자 따옴표

bash 또는 PowerShell과 같은 셸에서 실행될 때 인자와 명령 자체를 어떻게 따옴표로 묶을지에 대한 사용자 제어를 개선하기 위해 태스크가 업데이트되었습니다. shell 유형의 태스크는 이제 명령과 해당 인자를 별도로 제공하는 것을 지원합니다. 아래는 folder with spaces라는 폴더의 디렉터리를 나열하는 태스크의 예입니다(이름에 공백이 있음을 유의).

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": ["folder with spaces"]
}

셸 태스크가 인자를 별도로 지정하므로 VS Code는 이를 'dir' 명령에 대한 단일 인수로 전달해야 한다는 것을 알고 해당 셸을 기반으로 인자를 따옴표로 묶습니다. cmd.exe의 경우 VS Code는 "를 사용하고, PowerShell의 경우 '를, Linux 및 macOS 셸의 경우에도 '를 사용합니다. 인자를 따옴표로 묶는 방법을 제어하려면 인자가 값과 따옴표 스타일을 지정하는 리터럴일 수 있습니다. 예를 들어

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": [
    {
      "value": "folder with spaces",
      "quoting": "escape"
    }
  ]
}

이렇게 하면 PowerShell 아래의 백틱, bash 아래의 \가 셸의 이스케이프 문자를 사용하여 인자의 공백을 이스케이프합니다. 셸이 문자 이스케이프를 지원하지 않는 경우 강력한 따옴표가 사용됩니다.

이스케이프 외에도 다음 값을 지원합니다.

  • strong: 셸의 강력한 따옴표 메커니즘을 사용하여 문자열 내의 모든 평가를 억제합니다. PowerShell 및 Linux 및 macOS 셸의 경우 단일 따옴표(')가 사용됩니다. cmd.exe의 경우 "가 사용됩니다.
  • weak: 셸의 약한 따옴표 메커니즘을 사용하여 문자열 내의 표현식(예: 환경 변수)을 여전히 평가합니다. PowerShell 및 Linux 및 macOS 셸의 경우 이중 따옴표(")가 사용됩니다. cmd.exe는 약한 따옴표를 지원하지 않으므로 VS Code도 "를 사용합니다.

명령 자체에 공백이 포함된 경우 VS Code는 기본적으로 명령도 강력하게 따옴표로 묶습니다. 인자와 마찬가지로 사용자는 동일한 리터럴 스타일을 사용하여 명령의 따옴표를 제어할 수 있습니다.

참고: command 속성에 전체 명령줄을 가지는 이전 스타일은 여전히 지원됩니다.

동일한 지원이 태스크 API에 추가되어 태스크 공급자도 따옴표 및 이스케이프를 완벽하게 제어할 수 있습니다.

언어

제목 수준별 Markdown 접기

이제 제목별로 Markdown 문서를 접을 수 있습니다.

Markdown folding

헤더를 접으면 해당 헤더 아래의 모든 콘텐츠와 하위 제목이 축소됩니다.

TypeScript 2.8

VS Code는 이제 TypeScript 2.8과 함께 제공됩니다. 이 업데이트는 몇 가지 멋진 새로운 언어 기능을 지원하며, 수많은 중요한 버그 수정 및 도구 개선 사항을 제공합니다.

JSDoc의 빠른 제안 개선

VS Code가 JSDoc 유형에 대한 IntelliSense를 제공한다는 것을 알고 계셨습니까? 이 기능은 몇 번의 릴리스 전에 추가되었지만 수동으로 호출해야만 IntelliSense가 표시되었기 때문에 인지하지 못했을 수 있습니다. VS Code 1.22에서는 JSDoc 유형에서 빠른 제안이 기본적으로 활성화됩니다. IntelliSense가 작동하도록 입력을 시작하십시오.

JSDoc suggestions

JavaScript 및 TypeScript에 대한 제안 코드 액션

JavaScript 및 TypeScript 제안 코드 액션의 검색 가능성도 개선했습니다. 이들은 소스 코드를 신속하게 개선하거나 정리하는 데 도움이 되는 제안된 변경 사항입니다. 이들은 전구 위젯을 사용하여 표시되지만, 빠른 수정과는 달리 소스 코드의 특정 오류나 경고를 처리하지는 않습니다. 예시 제안 코드 액션에는 ES5 클래스를 ES6 클래스로 변환하고 CommonJS 모듈을 ES6 모듈로 변환하는 것이 포함됩니다.

제안 코드 액션은 이제 편집기에서 ...으로 표시됩니다.

Triple dots in the editor indicate a suggested Code Action

커서를 ... 위로 이동하고 전구 아이콘을 클릭하거나 ⌘. (Windows, Linux Ctrl+.)를 눌러 사용 가능한 코드 액션을 표시하십시오.

Hovering over a suggestion indicator

Clicking on the lightbulb

After applying the Code Action

추가 제안을 계속 추가할 계획입니다. 보고 싶은 제안이 있다면 알려주십시오.

제안 코드 액션은 JavaScript 및 TypeScript에서 기본적으로 활성화됩니다. "typescript.suggestionActions.enabled": false 또는 "javascript.suggestionActions.enabled": false로 설정하여 비활성화할 수 있습니다.

CSS 경로 완성

HTML 외에도 이제 CSS에서도 경로 완성이 가능합니다.

CSS Path Completion

확장 프로그램 작성

취소 지원이 있는 알림으로 장기 실행 작업 표시

알림 센터에 취소 지원이 있는 장기 실행 작업을 표시하는 새 API를 추가했습니다. 여기에 장기 실행 작업을 표시하는 이점은 다음과 같습니다.

  • 여러 작업이 동시에 진행 상황을 보고할 수 있습니다.
  • 작업 진행률을 표시할 수 있습니다.
  • 사용자는 작업을 취소할 수 있습니다.

long running task

새로운 진행률 위치 ProgressLocation.Notification으로 window.withProgress를 호출하십시오. 취소 버튼을 표시하고 제공된 콜백의 CancellationToken에서 취소를 확인하려면 cancellabletrue로 설정하십시오. 진행률을 표시하려면 진행률을 보고할 때 increment 값을 활용하십시오. 이 새 API를 사용하는 확장의 진행률 샘플을 참조하십시오.

진단에 대한 관련 정보를 제공하는 API(DiagnosticRelatedInformation)를 추가했습니다. 예를 들어, 변수 이름을 범위 내에서 재사용하여 컴파일러 오류가 발생하는 경우를 생각해 보십시오. 실제 오류는 "심볼 'Foo'의 중복 정의는 허용되지 않습니다"이고 불법 선언을 가리킵니다. 진단에 관련 정보를 포함하면 심볼 'Foo'의 첫 번째 선언도 가리킬 수 있어 오류를 더 쉽게 이해하고 수정할 수 있습니다.

CancellationTokenSource를 dispose해도 토큰이 더 이상 취소 상태로 설정되지 않음

이전에는 CancellationTokenSource에서 dispose()를 호출하면 토큰이 취소되고 취소 이벤트가 트리거되었습니다. 토큰을 취소하지 않고 dispose할 수 있도록 동작을 변경했습니다. 토큰의 취소에 의존하는 경우 cancel() 메서드를 호출하십시오.

단순 편집기는 확장에 전달되지 않음

디버그 REPL 입력과 같이 편집기를 사용하는 입력은 더 이상 편집기로 확장에 전달되지 않습니다. 이는 onDidChangeActiveTextEditor가 사용자 포커스가 디버그 REPL로 이동할 때 트리거되지 않고, onDidChangeTextDocument도 발생하지 않는다는 것을 의미합니다. REPL 입력은 구현 세부 정보로 편집기를 사용하고 확장은 "실제 편집기"가 아니기 때문에 알림을 받지 않아야 하므로 이 변경이 이루어졌습니다.

사용자 지정 보기

TreeView

새로운 TreeView API를 사용하여 사용자 지정 보기에 대한 작업을 수행할 수 있습니다. viewIdTreeDataProvider를 제공하는 새 API createTreeView를 사용하여 액세스할 수 있습니다.

const customView = vscode.window.createTreeView<string>('customView', {
  treeDataProvider: new CustomViewDataProvider<string>()
});

참고: 기존 registerTreeDataProvider API는 여전히 보기에 데이터를 제공하는 데 지원됩니다. TreeDataProvider를 제공하기 위해 registerTreeDataProvider 또는 createTreeView 중 하나를 사용할 수 있지만 둘 다 사용할 수는 없습니다.

표시

현재 TreeView는 보기를 표시하고 항목을 선택하기 위한 reveal 메서드를 노출합니다.

customView.reveal('element');

기본적으로 표시될 항목이 선택됩니다. 항목을 선택하지 않으려면 select 옵션을 false로 설정하십시오. 예:

customView.reveal('element', { select: false });

더 많은 TreeView 예제는 여기에서 찾을 수 있습니다.

참고: reveal API를 사용하려면 제공된 TreeDataProvidergetParent 메서드를 구현해야 합니다.

새로운 테마 색상

새로운 '힌트' 진단을 위한 두 가지 색상이 있습니다.

  • editorHint.foreground: 편집기에서 힌트의 전경색입니다.
  • editorHint.border: 편집기에서 힌트의 테두리 색상입니다.

편집기 표시 범위

편집기 표시 범위 API가 이제 안정 버전으로 승격되었습니다.

export interface TextEditor {
  /**
   * The current visible ranges in the editor (vertically).
   * This accounts only for vertical scrolling, and not for horizontal scrolling.
   */
  readonly visibleRanges: Range[];
}

export namespace window {
  /**
   * An [event](#_Event) which fires when the selection in an editor has changed.
   */
  export const onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>;
}

디버그 어댑터 프로토콜

로그포인트 지원

새롭게 도입된 로그포인트는 SourceBreakpoint의 새 속성 logMessage와 새 기능 supportsLogPoints로 디버그 어댑터 프로토콜에 노출됩니다. 로그포인트를 지원하는 디버그 어댑터는 supportsLogPoints 기능에 대해 true를 반환하고, 비어 있지 않은 logMessage 속성에 대해 '중단'(중지)하지 않고 메시지를 기록합니다. 중괄호('{...}') 내의 표현식은 평가되며 결과는 로그 메시지의 '{...}'를 대체합니다.

initialize 요청에 대한 새 clientName 속성

프론트엔드는 initialize 요청의 새 선택적 속성 clientName을 사용하여 프론트엔드의 사람이 읽을 수 있는 이름을 디버그 어댑터에 전달할 수 있습니다.

새로운 terminateThreads 요청

새로운 terminateThreads 요청은 프론트엔드가 하나 이상의 스레드를 종료하는 데 사용할 수 있습니다. 해당 supportsTerminateThreadsRequest 기능은 디버그 어댑터가 요청을 지원함을 나타냅니다.

새로운 setExpression 요청

새로운 setExpression 요청은 할당 가능한 표현식(일명 "l-값")에 값을 할당하는 데 사용할 수 있습니다. 해당 supportsSetExpression 기능은 디버그 어댑터가 요청을 지원함을 나타냅니다.

stopped 이벤트의 새 preserveFocusHint

stopped 이벤트의 trueish preserveFocusHint는 중지 이벤트가 포커스를 변경해서는 안 된다는 것을 프론트엔드에 제안합니다.

다중 선택 QuickPick

사용자가 여러 항목을 선택할 수 있는 새로운 UI를 통해 선택한 항목 목록을 반환하는 옵션을 QuickPick API에 추가했습니다.

Multi-select QuickPick

기존 window.showQuickPick API 함수와 함께 사용하려면 QuickPickOptions.canPickMany 옵션과 QuickPickItem.picked 플래그를 참조하십시오.

제안된 확장 API

이 마일스톤에는 몇 가지 새로운 제안 확장 API가 추가되었습니다. 충분히 확신이 서면 향후 마일스톤에 이 API를 안정 버전으로 추가할 계획입니다. 확장 프로그램에 대해 어떻게 작동하는지에 대한 모든 피드백을 환영합니다.

참고: 이 API는 아직 제안 중이므로 사용하려면 package.json"enableProposedApi": true를 추가하여 옵트인해야 하며 vscode.proposed.d.ts를 확장 프로그램 프로젝트로 복사해야 합니다. 또한 enableProposedApi 속성을 사용하는 확장은 Marketplace에 게시할 수 없다는 점에 유의하십시오.

접기 공급자 API

확장이 언어 인식 접기 범위를 제공할 수 있도록 새로운 공급자 API가 제안되었습니다.

export namespace languages {
  /**
   * Register a folding provider.
   *
   * Multiple folding can be registered for a language. In that case providers are sorted
   * by their [score](#_languages.match) and the best-matching provider is used. Failure
   * of the selected provider will cause a failure of the whole operation.
   *
   * @param selector A selector that defines the documents this provider is applicable to.
   * @param provider A folding provider.
   * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
   */
  export function registerFoldingProvider(
    selector: DocumentSelector,
    provider: FoldingProvider
  ): Disposable;
}

전체 API는 여기에서 확인할 수 있습니다.

해당 API는 언어 서버 프로토콜에 대한 프로토콜 확장으로 여기에 제안되었습니다. 피드백을 환영합니다!

태스크 API

이제 다음을 지원하는 새로운 태스크 API가 있습니다.

  • 시스템의 모든 기존 태스크 쿼리.
  • 프로그래밍 방식으로 태스크 실행.
  • 실행 중인 태스크 종료.
  • 태스크 시작 및 종료 이벤트 수신.

제안된 API는 여기에서 찾을 수 있습니다.

새 API는 태스크 공급자를 통해 이전에 반환되지 않은 태스크를 실행하는 것도 지원합니다. 아래 예시는 간단한 echo 태스크를 실행합니다.

let task = new vscode.Task(
  {
    type: 'myCustomTask'
  },
  'echo',
  'myExtension',
  new vscode.ShellExecution('echo', ['Hello World'])
);
vscode.workspace.executeTask(task);

서비스 용이성

이제 VS Code 내에서 확장에 대한 이슈를 신고할 수 있습니다. 이슈 보고서에는 이제 VS Code 자체 또는 확장 프로그램에 대한 이슈를 신고할지 여부를 선택할 수 있는 드롭다운이 포함됩니다. 확장에 GitHub에 저장소가 있는 경우 유사한 이슈 검색 및 GitHub에서 미리 보기 제출 버튼이 해당 저장소를 사용합니다.

report on extensions

미리보기 기능

미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.

JavaScript 및 TypeScript용 가져오기 구성

새로운 가져오기 구성 명령()은 사용되지 않는 가져오기를 제거하고 나머지 가져오기를 정렬합니다.

Organize Imports

이 명령은 JavaScript 및 TypeScript 모두에 대해 ES6 모듈에서 작동합니다.

Electron 2.0 탐색

이번 마일스톤 동안 Electron 2.0.0을 VS Code에 번들로 묶는 것을 탐색했습니다. 이것은 주요 Electron 릴리스이며 Chrome 61 및 Node.js 8.x(현재 버전인 Chrome 58 및 Node.js 7.x에 비해 상당한 도약)와 함께 제공됩니다. 추가 피드백을 수집하기 위해 4월 초에 Insiders 사용자에게 업데이트를 제공할 계획입니다. 도움을 주고 싶다면 VS Code Insiders를 설치하십시오.

주요 변경 사항

  • 13905: Windows: 작업 표시줄 아이콘을 마우스 가운데 클릭하면 새 창이 열리지 않음
  • 35675: Linux에서 글꼴 렌더링이 보기 흉하게 보임
  • 36307: Experimental File Watcher - "순환" 심볼릭 링크에서 높은 CPU 사용량
  • 42401: 출력 채널의 더 스마트한 그룹화
  • 42402: 채널 내에서 로그를 표시하는 옵션 추가
  • 43813: 업데이트 후 확장 프로그램 불완전
  • 44411: 확인 불가능한 변수에 대한 실행 중단
  • 44554: 여러 루트 폴더 드래그 앤 드롭 허용
  • 45872: 로컬라이제이션 팩 설치 후 UI 언어 변경 사용자에게 알림
  • 45972: 탐색기: isEqualOrParent 호출 횟수 줄이기

감사합니다

마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.

vscode 기여

vscode-extension-vscode에 대한 기여

  • Danny Tuppeny (@DanTup):
    • 폴더만 확인하는 대신 코드 실행 파일의 존재 여부 확인 (#_95) PR #95
    • .vs-test의 insiders/stable 하위 폴더 안에 VS Code 배치 (#_97) PR #97
    • Windows에서 매번 Code를 다운로드하지 않기 (#_102) PR #102
    • Mocha의 forbidOnly 지원 추가 (#_103) PR #103

vscode-nls에 대한 기여

language-server-protocol 기여

vscode-css-languageservice에 대한 기여

vscode-html-languageservice에 대한 기여

node-jsonc-parser에 대한 기여

vscode-generator-code에 대한 기여

vscode-languageserver-node에 기여

vscode-loader에 기여

vscode-azurecli에 대한 기여

vscode-azure-account에 대한 기여

vscode-chrome-debug 기여

  • AJ Richardson (@aj-r): Windows에서 Chrome 세션 복원 프롬프트 수정 PR #606
  • Chance An (@changsi-an)
    • 실행 요청에 대한 추가 원격 분석 속성을 추가하기 위해 원격 분석 수집기 사용. PR #631
    • setExpression 요청 구현. PR #612
    • Windows에서 `wmic call create`를 사용하여 Chrome을 권한 없는 상태로 실행. PR #619
  • @digeff
    • 원격 분석에 브라우저 버전 추가 PR #621
    • 이제 시작 실패 이유를 제공합니다. PR #630
    • 대상 버전 정보가 포함된 이벤트 추가 PR #627
    • 사용자에게 페이지를 표시하고 실행할 때까지 발생하는 다양한 작업의 시간 보고 PR #610
  • Chris Wells (@msft-cwells)
    • 불필요한 파일을 제거하기 위한 msbuild 서명 프로젝트 변경 PR #622
    • msbuild 서명 프로젝트 단순화 PR #624
    • 서명 마이크로빌드 프로젝트에 LOC 파일 추가 PR #615
    • 서명 msbuild 파일 추가 PR #614
  • Raghav Katyal (@rakatyal)
    • breakonload가 비활성화된 경우에도 시작 페이지 사용 PR #613
    • Pinezorro에서 전달된 로케일 존중 PR #616

vscode-chrome-debug-core 기여

  • Chance An (@changsi-an)
    • 원격 분석 수집기 도입. PR #314
    • 원격 분석 이벤트 일괄 전송 메커니즘 도입. PR #292
    • UI에 오류 메시지가 전달되는 방식 변경. PR #303
    • 일부 이벤트 알림에 대한 원격 분석 일괄 전송. PR #300
  • @digeff
    • 누락된 await 추가 PR #306
    • 전역 원격 분석 속성이 준비되기 전에 원격 분석 전송 대기 중지 PR #310
    • 원격 분석에 버전 추가 PR #307
    • 이제 시작 타이밍 이벤트에 실패 이유를 포함할 수 있습니다. PR #316
    • 이제 일부 오류에 대해 더 많은 원격 분석 정보를 보냅니다. PR #319
    • 사용자에게 페이지를 표시하고 실행할 때까지 발생하는 다양한 작업의 시간 보고 PR #301
    • 시작 타이밍 이벤트의 모든 원격 분석 속성을 문장 대소문자로 보냅니다. PR #313
    • 일부 설명되지 않는 중단점 동작 수정 PR #296
    • break on load를 사용할 때 onScriptPaused 대신 onScriptParsed에서 보류 중인 중단점 해결 PR #290
  • Raghav Katyal (@rakatyal): 여러 제거 이벤트 전송을 피하기 위해 컨텍스트 지우기… PR #318

vscode-node-debug2에 대한 기여

vscode-recipes에 기여

localization 기여

이번 달은 2017년 4월 10일 VS Code 커뮤니티 현지화가 Transifex에서 시작된 지 1주년이 되는 달입니다.

  • Transifex VS Code 프로젝트 팀에는 800명 이상의 회원이 있으며, 매월 약 100명의 활발한 기여자가 활동하고 있습니다.
  • 커뮤니티의 기여 덕분에 9개 핵심 언어에 대한 월간 업데이트를 성공적으로 국제 사용자에게 릴리스했습니다.
  • 또한, 커뮤니티 회원이 완전히 현지화하여 Language Pack VS Code 확장 프로그램으로 릴리스된 4개 언어가 있습니다. 곧 더 많은 언어가 추가될 예정입니다.
  • VS Code 커뮤니티 현지화 기여자 여러분께 감사드립니다!!!

다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.

  • 프랑스어: Antoine Griffard, Adrien Clerbois, Smrman.
  • 이탈리아어: Alessandro Alpi, Piero Azi, Aldo Donetti, Simone Chiaretta, Emilie Rollandin, Francesco Mugnai.
  • 독일어: Dejan Dinic, Jakob von der Haar, Carsten Kneip, Jakob, Ettore Atalan.
  • 스페인어: Alberto Poblacion, José M. Aguilar, David Silva, Alejandro M, Andy Gonzalez, AlanThinks, David Triana, Santiago Porras Rodríguez, Carlos Mendible, Jorge Serrano Pérez.
  • 일본어: Shunya Tajima, Yuichi Nukiyama, Hiroyuki Mori, Takashi Takebayashi, Seiji Momoto, yoshioms, Yuki Ueda, 小島 富治雄, Satoshi Kajiura.
  • 중국어(간체): Joel Yang.
  • 중국어(번체): Duran Hsieh, Winnie Lin, Poy Chang, balduran, Will 保哥.
  • 한국어: ChangJoon Lee, Ian Y. Choi.
  • 러시아어: Ivan, Andrei Makarov.
  • 불가리아어: Любомир Василев.
  • 헝가리어: Tar Dániel.
  • 포르투갈어(브라질): Roberto Fonseca, Matheus Palu, Rodrigo Crespi, Danilo Dantas, Douglas Ivatiuk Martim, Alessandro Fragnani, Kayky de Brito dos Santos.
  • 포르투갈어(포르투갈): Diogo Barros, Ruben Mateus, António Lourenço, João Mata, Gustavo Silva.
  • 터키어: Adem Coşkuner, Ömer Büyükçelik, Mustafa Turhan, Tuğrul Kaşıkcı.
  • 보스니아어: Bahrudin Hrnjica, Muharem Basanovic, Ismar Bašanović, Almir Vuk.
  • 체코어: Michal Vondracek, Vít Staniček, Filip Vlček, Vojtěch Habarta, Ferdinand Prantl.
  • 네덜란드어: Maurits Kammer, Gerald Versluis, Marco van den Hout.
  • 핀란드어: Feetu Nyrhinen, Petri Niinimäki.
  • 그리스어: Dimitris Trachiotis.
  • 인도네시아어: Joseph Aditya P G, Najih Azkalhaq, Adrian M. R., Wildan Mubarok, G-RiNe Project, Lundy Orlando, Azhe-kun, Febrian Setianto, Riwut Libinuko, Laurensius Dede Suhardiman, Mulia Arifandi Nasution, Herman Prawiro.
  • 라트비아어: Pēteris Kļaviņš, Simone Chiaretta, kozete, Lafriks.
  • 리투아니아어: Martynas Jusys.
  • 폴란드어: Patryk Brejdak, Joanna Skurzyńska, Paweł Sołtysiak, KarbonKitty.
  • 세르비아어: Марко М. Костић, Nikola Radovanović.
  • 스웨덴어: Joakim Olsson, Kalle Wallin, Johan Hedén.
  • 태국어: Sirisak Lueangsaksri, Phongphan Bunlom, ภูมิไผท จันทรศรีวงศ์.
  • 우크라이나어: Андрій Іванченко, R.M., Max Plotitsyn, Svitlana Galianova.
  • 베트남어: Hung Nguyen.
© . This site is unofficial and not affiliated with Microsoft.