minlsp 소개
Source: Dev.to
minlsp란?
minlsp 은 ctags 를 활용해 Nim 코드에 대한 IDE‑와 같은 기능을 제공하며, 빠르고 정확한 심볼 인덱싱을 가능하게 합니다. 전통적인 LSP 서버가 복잡한 AST 분석을 필요로 하는 것과 달리, 저는 minlsp 를 태그 기반 접근 방식으로 구현하여 빠른 심볼 조회와 탐색을 구현했습니다.
ntagger 로 직접 심볼을 추출함으로써, 속도와 낮은 메모리 사용량을 우선시하면서도 우리가 가장 많이 사용하는 기능들을 포기하지 않는 서버를 만들었습니다.
주요 기능
- 번개 같은 속도: 심볼 식별 및 탐색이 거의 즉시 이루어집니다.
- 낮은 리소스 사용량: 파일을 열었다고 해서 팬이 돌아가거나 방해받지 않습니다.
- 필수 IDE 지원: 코드 자동완성, 호버 정보, 정의로 이동, 참조 찾기, 시그니처 도움, 문서 심볼 등을 포함합니다.
- 매크로에 강함: 심볼을 찾기 위해 매크로나 템플릿을 전개할 필요가 없으므로 복잡한 매크로에 “걸리”지 않습니다.
제한 사항 및 트레이드‑오프
minlsp 를 가볍게 유지하기 위해 의도적으로 선택한 설계 결정은 다음과 같습니다:
- 의미 분석 없음: 타입 체크나 실시간 오류 보고(진단)를 수행하지 않습니다.
- 범위가 제한된 참조: “참조 찾기”는 현재 전체 워크스페이스가 아니라 열려 있는 파일들만 검색합니다.
- 리팩터링 미지원: “이름 바꾸기”나 자동 코드 포맷팅 같은 기능은 아직 지원되지 않습니다.
올바른 도구 선택
전체 컴파일러 통합과 깊은 리팩터링이 필요하다면 nimlangserver 가 표준입니다. 하지만 특히 대규모 코드베이스나 매크로가 많은 프로젝트에서 다른 서버가 느려지는 상황에서, 반응성이 뛰어나고 “지연 없는” 작업 흐름을 원한다면 minlsp 가 더 빠르고 안정적인 대안을 제공합니다.
이 프로젝트는 활발히 개발 중입니다. LSP 지연에 좌절감을 느꼈다면, 한번 사용해 보시길 권합니다.
자료 및 링크
- 프로젝트: minlsp on GitHub
- 엔진: ntagger
- 영감: nimlsp Project
- 공식 도구: nimlangserver