MPS 2020.1이 출시되었습니다!
기쁜 마음으로 MPS 2020.1 버전 출시를 알립니다. 이번 릴리스는 여러 하위 시스템에서 가져온 다양한 기능 및 개선 사항을 제공합니다. 아래 글을 통해 상세한 내용을 확인해 보세요.
목록 위치에 따라 다른 구분 기호 사용
기수 (0,n) 또는 (1,n)이 포함된 노드를 편집할 때 구분 기호 쿼리 함수를 구현하여 값 사이에 사용자 지정 구분 기호를 제공할 수 있습니다. 이 기능은 쿼리 함수(prevNode 및 nextNode)에 더 많은 인수를 전달해 그 성능을 확장하여 값의 각 페어에 사용자 지정 구분 기호를 제공할 수 있게 해줍니다. 다음 스크린샷에서 “and” 및 “,”는 구분 기호입니다. 데모 시청하기.
Light patterns
패턴 언어를 사용하면 구조 패턴을 정의하고 노드를 해당 패턴에 일치시킬 수 있습니다. 패턴 언어는 패턴이 허용 대상 노드와 유사하게 보이도록 일반 개념 에디터를 사용합니다. 그러나 개념 구조와 정확히 일치하지 않는 일부 복잡한 에디터의 경우 필요한 구조를 문자 그대로 설명하는 light patterns(패턴 빌더)를 사용하는 것이 더 편할 수 있습니다. 자세한 정보를 문서에서 확인하시거나 데모를 시청하세요.
기존 텍스트 위에 입력
Type over existing text(기존 텍스트 위에 입력)은 프로젝션 에디터를 텍스트 에디터와 비슷하게 사용할 수 있도록 하는 새로운 기능입니다. 사용자가 텍스트 셀에 입력할 때 방금 입력한 문자가 커서 위치에 이미 있으면 기존 문자를 덮어쓰는 것처럼 커서가 움직입니다. 이 기능은 키 입력을 정상적으로 처리할 수 없어서 무시하거나(예: 상수 셀에서) 셀 내용을 무효화할 경우에만 트리거됩니다. 데모 시청하기.
이 기능은 기본적으로 켜져 있으며 Settings(설정) / Editor(에디터) / General(일반) 탭에서 끌 수 있습니다.
툴팁
mbeddr 플랫폼의 툴팁 에디터 확장 프로그램이 MPS에 추가되었습니다. 또한 mbeddr 언어에 마이그레이션도 제공됩니다. 데모 시청하기.
Java 언어에서 영감을 얻은 BaseLanguage 개선 사항
이제 BaseLanguage에 try-with-resources 문, 여러 예외 포착, 지역 변수 유형 추론, default 및 private 인터페이스 메소드가 포함됩니다. 특정 Java 언어 수준이 필요한 빌드 프로세스와의 호환성을 제공하려면, 각 솔루션을 구성하여 해당 수준과 호환되지 않는 언어 기능을 사용 금지시키면 됩니다.
j.m.baseLanguage.varVariable이 필요한 지역 변수 유형 추론 기능을 제외하면, 이러한 기능에는 추가적 언어 가져오기가 필요하지 않습니다. 마이그레이션 가이드 또는 데모를 시청하세요.
불필요한 언어 확장자 제거
기존에는 언어 에디터가 다른 언어의 개념에 대한 에디터 구성 요소를 제공할 때 MPS에서 ‘extends’ 종속 요소를 필요로 했습니다. 하지만 이러한 종속 요소에 항상 언어 간 상관관계가 반영되는 것은 아니었으며 종종 광범위한 언어 계층 구조 처리 작업이 요구되곤 했습니다. 가령, j.m.lang.core의 INamedConcept을 예시로 생각해 보세요. 모든 MPS 언어는 j.m.lang.core를 확장합니다. 그렇기에 INamedConcept 에디터 개념이 사용될 경우엔 사용 가능한 모든 언어의 에디터 특징이 고려되는 것입니다.
2020.1 버전의 경우 생성기가 다른 언어용 에디터 확장 프로그램을 탐지하여 종속 요소를 명시적으로 표시하는 각 코드를 생성합니다. 그러므로 언어 설계자는 언어 사이의 특정한 종속 요소를 따로 신경 쓸 필요가 없습니다. 또한 편집기 확장 기능 활성화 시 언어 모듈 간의 ‘extends’ 종속 요소를 사용하지 않아도 됩니다.
Java 스텁 모델 내 Javadoc 주석
Java 스텁 모델을 사용하는 MPS 세계에선 Java 라이브러리가 활용됩니다. 이러한 모델은 .class 정보에서 빌드되므로 javadocs와 같은 문서를 포함하지 않습니다.
2020.1 버전의 경우 새로운 메커니즘을 통해 라이브러리 소스와 라이브러리 .jar 등을 보유한 zip 파일을 지정합니다. 또한 MPS는 소스에서 javadoc을 추출하여 클래스 파일에서 추출된 정보와 함께 표시합니다. 이 기능은 MPS 내부에서 Java 라이브러리를 사용하고 라이브러리 javadoc에 액세스할 때 편리합니다. 외부 위치로 전환하고 검색을 수행하고 읽는것 대신, MPS 내부에서 바로 관련 코드 및 문서를 간편하게 탐색할 수 있습니다. 또한 자체 API의 필수적 부분이 Java 스텁으로 제공되므로 MPS 자체에도 중요한 기능입니다. 데모 시청하기.
손상된 에디터의 오류 탐지
언어의 에디터 측 내에 있는 코드에서 예외를 던지면 해당 언어로 작성된 모델의 해당 셀에 대한 기본 에디터가 표시됩니다. 2020.1부터는 이러한 종류의 손상된 셀이 에디터에서 열리면 Messages(메시지) 도구 창에 오류가 표시됩니다. 이 오류에서 스택 추적을 얻으면 문제 셀로 이동할 수 있습니다. 데모 시청하기.
BaseLanguage 내 여러 줄 주석
SingleLineComment의 기능이 약간 향상되고 새로운 MultiLineComment 개념이 BaseLanguage에 도입되어 Java와 같은 방식으로 /* … */ 심볼로 구분된 주석이 지원됩니다.마이그레이션 가이드 또는 데모를 시청하세요.
변환/교체 메뉴: 이름 지정된 메뉴와 기본 메뉴 병합
이 개선을 통해 이름 지정된 에디터 메뉴(SubstituteMenu_Named) 및 기본 에디터 메뉴(SubstituteMenu_Default)에 대한 사용자 지정 개념을 제거하여 Transformation(변환) 및 Substitution(교체) 메뉴를 간소화했습니다. 두 개념은 해당 개념의 상위 개념(SubstituteMenu)으로 병합되었으며 메뉴 유형은 메뉴 에디터에서 선택됩니다. Transformation 메뉴에도 동일한 리팩토링이 적용되었습니다. 마이그레이션 가이드 또는 데모를 시청하세요.
기타 개선 사항
JetBrains Mono를 기본 글꼴로 사용
MPS는 이제 새로운 JetBrains Mono 글꼴(Preferences(환경 설정)/Settings(설정) | Editor(에디터) | Font(글꼴))을 기본 글꼴로 사용합니다. 이 개발자 친화적인 새로운 글꼴에 대한 모든 세부 정보는 웹사이트에서 확인하세요.
MPS에 마켓플레이스 지원
이제 JetBrains 플러그인 마켓플레이스를 MPS에서도 이용할 수 있습니다. 이에 따라 플러그인을 상용화할 수도 있어 다양한 새로운 기회가 열립니다.
모달이 아닌 커밋 인터페이스
보다 간결한 커밋 작업 흐름을 위해 커밋과 관련된 모든 작업을 처리하는 새로운 커밋 도구 창을 개발했습니다. 이 창에서는 수정된 파일과 Diff 목록을 처리할 방법이 다양하게 제공되어, 변경 준비 완료 시 커밋에 변경 내용을 추가하고 커밋 메시지를 반복적으로 구성하며 스테이징된 변경 내용을 어떤 커밋에 포함할지 선택할 수 있습니다.
기본적으로 활성화된 기능이 아니므로 한 번 사용해 보고 싶으신 경우 Preferences(환경 설정)/Settings(설정) | Version Control(버전 관리) | Commit(커밋)에서 “Use non-modal commit interface”(모달이 아닌 커밋 인터페이스 사용)를 선택하세요.
Zen 모드
이 새로운 모드에는 Full Screen(전체 화면) 모드와 Distraction Free(집중력 분산 방지) 모드가 결합되어 있어 사용자가 코드에 집중할 수 있습니다. Zen 모드를 사용하려면 View(뷰) | Appearance(꾸미기) | Enter Zen Mode(Zen 모드 시작)으로 이동하세요.
IDE에서 Git 설치
수동으로 Git을 사전 설치할 필요가 없습니다. 기존 Git 저장소를 복제하면 IDE가 컴퓨터에서 Git 실행 파일을 찾고, 찾을 수 없는 경우 해당 파일을 다운로드하여 설치하도록 제안합니다.
Config 파일 경로
MPS 2020.1에서는 Config 파일 경로가 변경되었습니다. 자세히 보기.
마이그레이션 가이드도 잊지 말고 확인하세요. 커뮤니티를 통해 보고된 버그의 방대한 목록도 수정되었습니다. 새 버그를 발견하셨거나 추가되면 좋을 유용한 기능을 제안하시려면 해당 내용을 이슈 트래커에 추가해 주세요.
건강 유의하시고 좋은 하루 보내시길 바랍니다!
Your JetBrains MPS team
The Drive to Develop
이 게시물은 Oscar Rodriguez가 작성한MPS 2020.1 has been released!를 번역한 글입니다.