언어 확장 개요
Visual Studio Code는 언어 확장을 통해 다양한 프로그래밍 언어에 대한 스마트 편집 기능을 제공합니다. VS Code는 핵심 편집기에 내장 언어 지원을 제공하지 않지만, 풍부한 언어 기능을 사용할 수 있도록 하는 API 세트를 제공합니다.
예를 들어, HTML 확장은 이러한 API를 사용하여 HTML 파일에 대한 구문 강조 표시를 보여줍니다. 마찬가지로, console.을 입력할 때 IntelliSense에 log가 표시된다면, 이는 Typescript 언어 기능 확장의 작동 방식입니다.
VS Code는 이러한 확장 중 일부를 편집기에 포함하여 처음부터 풍부한 언어 지원을 제공합니다.
언어 기능은 대략 두 가지 범주로 나눌 수 있습니다.
선언적 언어 기능
선언적 언어 기능은 구성 파일에 정의됩니다. 예로는 VS Code에 포함된 html, css 및 typescript-basic 확장이 있으며, 다음은 선언적 언어 기능의 하위 집합을 제공합니다.
- 구문 강조
- 스니펫 완성
- 괄호 일치
- 괄호 자동 닫기
- 괄호 자동 감싸기
- 주석 전환
- 자동 들여쓰기
- 접기 (마커 기준)
선언적 언어 기능을 제공하는 언어 확장을 작성하는 데는 세 가지 가이드가 있습니다.
- 구문 강조 가이드: VS Code는 구문 강조를 위해 TextMate 문법을 사용합니다. 이 가이드에서는 간단한 TextMate 문법을 작성하고 VS Code 확장으로 변환하는 과정을 안내합니다.
- 스니펫 완성 가이드: 이 가이드에서는 스니펫 세트를 확장으로 묶는 방법을 설명합니다.
- 언어 구성 가이드: VS Code는 확장이 모든 프로그래밍 언어에 대한 **언어 구성**을 정의할 수 있도록 합니다. 이 파일은 주석 전환, 괄호 일치/감싸기 및 영역 접기(레거시)와 같은 기본 편집 기능을 제어합니다.
프로그래밍 방식 언어 기능
프로그래밍 방식 언어 기능에는 자동 완성, 오류 검사 및 정의로 이동이 포함됩니다. 이러한 기능은 종종 동적 기능을 제공하기 위해 프로젝트를 분석하는 프로그램인 언어 서버에 의해 구동됩니다. 한 가지 예는 VS Code에 포함된 typescript-language-features 확장입니다. TypeScript 언어 서비스를 활용하여 다음과 같은 프로그래밍 방식 언어 기능을 제공합니다.
- 호버 정보 (
vscode.languages.registerHoverProvider) - 자동 완성 (
vscode.languages.registerCompletionItemProvider) - 정의로 이동 (
vscode.languages.registerDefinitionProvider) - 오류 검사
- 서식
- 리팩터링
- 폴딩
다음은 프로그래밍 방식 언어 기능의 전체 목록입니다.

언어 서버 프로토콜
언어 서버(정적 코드 분석 도구)와 언어 클라이언트(일반적으로 소스 코드 편집기) 간의 통신을 표준화하는 언어 서버 프로토콜을 통해 확장 작성자는 하나의 코드 분석 프로그램을 작성하여 여러 편집기에서 재사용할 수 있습니다.
프로그래밍 방식 언어 기능 목록에서 VS Code의 모든 언어 기능과 언어 서버 프로토콜 사양에 대한 매핑을 찾을 수 있습니다.
VS Code에서 언어 서버 확장을 구현하는 방법을 설명하는 자세한 가이드를 제공합니다.

특별 사례
다중 루트 작업 영역 지원
사용자가 다중 루트 작업 영역을 열 때 언어 서버 확장을 적절히 조정해야 할 수 있습니다. 이 항목에서는 다중 루트 작업 영역을 지원하는 여러 접근 방식을 논의합니다.
내장 언어
내장 언어는 웹 개발에서 흔히 볼 수 있습니다. 예를 들어, HTML 내의 CSS/JavaScript, JavaScript/TypeScript 내의 GraphQL. 내장 언어 항목에서는 내장 언어에 언어 기능을 제공하는 방법을 논의합니다.