Helix Editor 25.07

7 hours ago 2

  • Helix 25.07은 핵심 컴포넌트의 대체와 다수의 신규 기능 추가를 포함함
  • 파일 탐색기, LSP 문서 색상 표시, 커맨드 모드 개선 등 사용성과 워크플로우가 크게 향상됨
  • 문법 하이라이트와 쿼리 최적화를 위해 신규 crate인 Tree-house가 도입됨
  • Tree-house는 인젝션 및 로컬 처리 능력과 성능, 유지보수성을 대폭 강화함
  • 향후 더 넓은 멀티랭귀지 경험 및 속도 개선 기반이 마련됨

Helix 25.07 주요 업데이트

Helix 25.07 릴리스는 오랫동안 기다려온 핵심 기능 교체와 다양한 신규 기능 추가로 구성됨. 이번 버전에서는 195명의 기여자가 참여함. Helix는 여러 선택, LSP, Tree-sitter, 실험적 DAP 지원을 갖춘 모달 텍스트 에디터임.

신규 주요 기능

파일 탐색기

  • 25.07에 <space>e로 사용할 수 있는 파일 탐색기 기능이 추가됨
  • 이 탐색기는 telescope과 유사한 UI를 제공함
  • 디렉터리 내 계층형 구조 탐색이 쉽고, 대규모 프로젝트 탐색 시 더 정밀한 제어가 가능함

LSP 문서 색상 표시

  • 이제 Helix는 LSP 서버에 문서 색상 정보를 요청하여 RGB 컬러 범위를 inline으로 보여줌
  • 예를 들어 tailwindcss-language-server, vscode-css-language-server 등에서 색상을 받아 코드 내에서 바로 색상 박스를 시각적으로 확인함

커맨드 모드(:) 기능 개선

  • 명령어 파싱 및 자동완성 코드 전면 재작성으로 버그가 수정되고 사용성이 높아짐
  • :write 계열 커맨드에 --no-format 플래그 등 플래그 지원 추가됨
  • 커맨드 내 변수/값 확장(%{variable_name}, %sh{명령어} 등) 기능과 자동완성 도입
  • 복잡한 입력 값 처리를 위해 확장성 있는 파서 구조로 변경되어 향후 커맨드 확장이 쉬워짐

Tree-house: Tree-sitter 통합 새 구조

Tree-sitter란

  • Tree-sitter는 빠르고 에러에 강한 파서를 생성·활용하는 프레임워크임
  • 문법 DSL로 파서 규칙을 작성하고, 에디터/툴 내에서 구문 트리를 생성 및 활용함
  • 예시로, GitHub의 코드 탐색·하이라이트, 코드 서버의 spell-check, diff 툴 등에서 사용됨
  • Tree-sitter 쿼리는 서브트리 패턴 매칭 및 구문 노드 캡처에 활용됨

Helix의 기존 Tree-sitter 연동과 문제점

  • Helix 초기에는 공식 Rust 바인딩(tree-sitter crate)과 tree-sitter-highlight 하이라이터를 이용
  • tree-sitter-highlight는 비증분적으로, 문서 전체를 항상 다시 파싱해야 하여 성능 저하 및 리소스 낭비 문제 발생
  • Helix는 이를 개선하려 자체 하이라이터 포크했으나, 점점 복잡화되어 유지보수가 어려워짐

Tree-house의 도입과 이점

  • Tree-house는 분리된 파싱/쿼리 구조, 깨끗한 코드, 기존의 고질적 버그 종결, 미래지향적 구조(병렬 파싱 등)에 중점을 둠
  • 핵심 강점은 인젝션(Injection) 의 강인한 처리임

인젝션(Injection): 복수 언어/레이어 지원

  • 인젝션은 예를 들어 Markdown 내 Rust 코드 블록이 등장할 때, 해당 범위만 Rust로 따로 파싱하는 방식임
  • 복잡한 케이스(예: Rust 주석 내 Markdown, 그 내부 코드 블록 내 Rust 등)도 트리 구조로 레이어를 관리하여 정확히 지원함

증분적 인젝션

  • 변경이 실제로 발생한 레이어만 빠르게 재파싱, 쿼리 실행하여 최소 작업 단위만 사용함
  • 매우 큰 리스트 또는 중첩 구조의 마크다운 문서에서 효율성 극대화됨

로컬 변수 하이라이트(lcals)

  • 함수 내 파라미터 등 로컬 변수를 선언과 참조 범위(스코프)에서 정확히 하이라이트함
  • 기존에는 정의가 뷰 밖에 있을 경우 하이라이트가 사라지던 고질적 문제를 Tree-house에서 해결

전역화된 인젝션 지원

  • Syntax 타입에서 인젝션 레이어 탐색 및 조회가 로그(logarithmic) 시간에 가능함
  • TreeCursor, QueryIter 등 API로 전체 인젝션 레이어 적용이 가능해짐
  • HTML <script> 내 코드, Markdown 코드 블록 등 언어 경계 간 일관된 동작 구현 기반이 마련됨

마무리

  • Helix 25.07은 파일 탐색기, 색상 인레이, 커맨드 모드/파서 개선 등 사용성 혁신과 더불어 Tree-house 기반 신규 구조 도입으로 차세대 텍스트 에디터의 후보로 부상함
  • 상세 업데이트 내용은 changelog 참고 가능
  • 커뮤니티/기여 참여는 Matrix, GitHub 저장소를 통해 진행 가능

Read Entire Article