핵심 요약
- 이맥스에서 언어 및 모드마다 제각각으로 나뉘어 있던 코드 접기(folding) 엔진을 'kirigami'를 통해 단일 단축키 체계로 통일했습니다.
- 줄 간격 때문에 점선처럼 깨지던 트리시터 인디케이터 비트맵을 수정하고 테마 대비 50% 블렌딩을 적용해 비주얼을 깔끔하게 다듬었습니다.
- 독자 방식을 쓰는 Org 모드 전용 인디케이터를 만들고 화면 내 변경 영역만 다시 그리도록 최적화해 대용량 파일 성능까지 잡았습니다.
요약 한 개발자가 오랫동안 골머리를 앓던 이맥스(Emacs)의 코드 접기(folding) 환경을 마침내 완벽하게 일원화하고 최적화한 커스텀 설정기를 공개했습니다. 이맥스에서는 모드마다 코드 접기 엔진이 제각각이라, 트리시터(Tree-sitter) 모드에서는 treesit-fold, 리스프 계열에서는 Hideshow, 일반 텍스트는 Outline, 그리고 독자적인 비가시 텍스트 방식을 쓰는 Org 모드까지 뒤섞여 있었습니다. 이로 인해 버퍼마다 단축키와 비주얼이 다르고, 대용량 파일에서는 버벅거림까지 발생해 사용자 경험을 크게 해치고 있었습니다.
작성자는 'kirigami' 패키지를 도입해 이 문제를 해결했습니다. kirigami는 자체적으로 접기를 수행하지 않는 대신 활성화된 엔진을 감지해 명령을 중계해 주는 디스패처 역할을 합니다. 이를 통해 코틀린, YAML, 스킴, Elisp, Org 문서 등 언어에 상관없이 'C-c v c'(접기), 'C-c v o'(펼치기) 등 통일된 단축키 하나로 통제할 수 있게 되었습니다. 또한 outline-minor-mode와의 엔진 충돌을 막기 위해 Hideshow의 우선순위를 높이는 등 세부 조정도 거쳤습니다.
비주얼과 성능 튜닝도 대대적으로 진행되었습니다. 트리시터 모드에서는 기본 점선처럼 끊겨 보이던 23픽셀 비트맵 인디케이터를 재정의해, 줄 간격에 구애받지 않고 깔끔한 꺾쇠 브래킷 형태로 이어지도록 커스텀 비트맵을 적용했습니다. 색상 역시 테마 배경색과 50% 블렌딩되도록 동적 계산을 걸어 눈에 거슬리지 않게 다듬었습니다. Org 모드에서는 고유의 클릭 가능한 삼각형 인디케이터를 구현하는 한편, 매 입력마다 화면 전체를 다시 그리는 병목을 없애기 위해 화면에 보이는 영역과 수정된 영역만 선별 렌더링하는 캐싱 로직을 넣어 대용량 파일에서도 매끄러운 반응성을 확보했습니다.
Sponsored · 광고