Skip to content

Latest commit

 

History

History
executable file
·
142 lines (105 loc) · 10.1 KB

File metadata and controls

executable file
·
142 lines (105 loc) · 10.1 KB
layout parent title nav_order description
default
Language Extensions
Overview
1

언어 익스텐션 오버뷰

Visual Studio Code는 언어 익스텐션을 통해 다른 프로그래밍 언어에 대해서 스마트한 수정 기능을 제공합니다. VS Code는 빌트인 언어지원은 없지만 대신 다양한 언어 기능을 가능하게 하는 API들을 제공합니다. 예를 들어 번들된 HTML익스텐션 은 VS Code가 HTML 파일에 대해서 구문을 강조하여 보여지게 합니다. 비슷하게, 여러분이 console.을 입력하면 IntelliSense에 log가 표시되며 이는 타입스크립트 언어 기능 익스텐션이 작동 했기 때문입니다.

언어 기능은 크게 2가지 분류로 나눠질 수 있습니다:

선언적 언어 기능

선언적 언어 기능은 구성 파일에서 정의됩니다. html, css 그리고 typescript-basic 예시를 포함한 익스텐션이 VS Code에 포함되어 있으며, 다음과 같은 선언적 언어 기능의 하위 기능들을 제공합니다.

  • 구문 강조
  • Snippet 완성
  • 중괄호 연결
  • 중괄호 자동 폐쇄
  • 중괄호 자동 포함
  • 주석 전환
  • 자동 들여쓰기
  • 접기 ( 마커에 의해 )

다음은 선언적 언어 기능을 제공하는 언어 익스텐션 작성을 위한 3가지 가이드입니다.

  • 구문 강조 가이드: VS Code는 구문 강조를 위해 TextMate grammer를 사용합니다. 이 가이드는 여러분이 간단한 TextMate grammer를 작성하고, VS Code 익스텐션으로 바꿀 수 있게 도울 것입니다.
  • Snippet 완성 가이드: 이 가이드는 snippet들을 익스텐션에 번들링 하는 방법을 설명 할 것입니다.
  • 언어 구성 가이드: VS Code는 익스텐션이 어떤 프로그래밍 언어던지 언어 구성을 정의 할 수 있게 합니다. 이 파일은 주석 전환, 중괄호 연산, 부분 접기(레거시) 와 같은 기본 편집 기능을 조절합니다.

프로그래밍 언어 기능

프로그래밍 언어 기능은 자동 완성, 에러 확인, 정의로 이동을 포함합니다. 이러한 기능들은 프로젝트를 분석하여 동적 기능을 제공하는 프로그램인 Language Sever에 의해 구동됩니다. 한가지 예로 VS code에 번들로 제공되는 typescript-language-features 익스텐션 입니다. 이는 TypeScript Language Service를 활용하여 다음과 같은 프로그래밍 언어 기능을 제공합니다 :

완전한 목록은 여기 프로그래밍 언어 기능에 있습니다.

multi-ls

Language Server 프로토콜

Language Sever(정적 코드 분석 도구)와 Language Client (소스 코드 에디터)간의 통신을 표준화 하는 것으로,Language Server Protocol 는 익스텐션 저자가 코드 분석 프로그램을 작성하고, 여러 에디터에서 재 사용할 수 있게 합니다.

프로그래밍 언어 기능 목록에서, 여러분은 모든 VS Code 언어 기능 목록을 찾을 수 있고, 어떻게 Language Server Protocol Specification에 매핑 되어 있는지 확인 할 수 있습니다..

다음은 VS Code에서 Language Server 익스텐션을 구현하는 더 자세한 가이드입니다:

multi-editor

특수 케이스

다중 루트 작업공간 지원

사용자가 다중 루트 작업공간을 연 경우, 여러분은 Language Server 익스텐션이 잘 작동하게 변형 시켜야 합니다. 이 주제에서는 다중 루트 작업공간을 지원하기 위한 여러 방법들을 논의 합니다.

임베디드 언어

임베디드 언어는 웹 개발에서 자주 쓰입니다. 예를 들어 HTML 내부에 CSS/JS, 그리고 자바스크립트/타입스크립트 내부의 GraphQL이 있습니다. 이 주제에서는 임베디드 언어에서 언어 기능을 사용하게 하는 방법에 대해 다룹니다.