LunarVim 의 nvim-treesitter 하이라이팅 문제

문연수·2023년 7월 2일
0

Linux (Fedora)

목록 보기
18/23

# 문제 상황

LunarVimnvim-treesitter 플러그인을 통한 하이라이팅 기능을 제공한다. 메이저 언어의 경우 별다른 문제가 없으나 마이너 언어의 경우 업데이트가 늦어져 하이라이팅이 제대로 이뤄지지 않는 문제가 있다.

 특히 LunarVim 의 경우 nvim-treesittermaster 를 따라가지 않고 독자적인 checkout 을 사용하기 때문에 더 문제가 많다. 다음은 LunarVimnvim-treesitter-make 가 제공하는 하이라이팅이다:

 위 삽화는 lvim 에서 makefile 을 읽어들인 모습이다. 제대로 된 거 아닌가? 라 생각할 수 있으나 이는 반쪽짜리 하이라이팅이다. 가장 두드러지는 문제는 주요 키워드인 define, endef, vpath 의 하이라이팅이 전혀 이뤄지지 않았다는 것이다. 함수 내부의 구문들까진 봐줄 수 있으나 주요 키워드의 경우 가시성을 저해한다.

 설치된 treesitter 의 설정 파일은 ~/.local/share/lunarvim/site/pack/lazy/opt/nvim-treesitter/ 에서 확인이 가능하다. 글 작성일인 23년 07월 02일 시점, treesitterHEAD2ce3c908 로 무려 3개월 이전의 커밋이다.

 여기서 재미있는 사실은 바로 23년 6월 04일에 define 키워드 하이라이팅 업데이트 커밋이 올라왔다는 점이다. 하이라이팅이 제대로 이뤄지지 않는 주된 원인은 LunarVim 에서 nvim-treesitter 의 최신 업데이트를 따라가지 못하여 발생한 문제임을 알 수 있다.

1. 해결 방법 (mastercheckout)

 위 문제에 대한 가장 쉽고 단순한 해결 방법은 바로 mastercheckout 하는 것이다. LunarVim 설치 이후 nvim-treesitter 의 설정 파일 설치 경로를 변경하지 않았다면 이하의 명령어를 입력하여 nvim-treesitter 를 최신 버전으로 업데이트 할 수 있다:

cd ~/.local/share/lunarvim/site/pack/lazy/opt/nvim-treesitter/
git checkout master
lvim -c TSUpdate -c q

define 키워드의 경우 업데이트 대로 하이라이팅이 이뤄졌으나 vpath 와 함수 내부 구문에 대한 하이라이팅은 전혀 이뤄지지 않은 상황이다.

2. 해결 방법 (query 디렉토리 제거)

 두 번째 해결 방법은 nvim-treesitterquery 디렉토리를 통째로 지우는 것이다. query 디렉토리를 통째로 지우게 되면 neovim 내부에서 정의한 Syntax 파일(/usr/share/nvim/runtime/syntax) 을 사용하게 되는데 모든 키워드와 변수, 그리고 함수 내부의 구문까지 하이라이팅이 완벽하게 이뤄진다.

 당연히 queries 전체를 지우면 안되고 사용하지 않을 언어의 query 디렉토리만을 제거해야 한다. (필자의 경우 .../nvim-treesitter/queries/make/)

 설치 경로를 변경하지 않았다면 마찬가지로 다음의 명령어를 입력하여 nvim-treesitter 의 설정 파일을 제거할 수 있다:

rm -rf ~/.local/share/lunarvim/site/pack/lazy/opt/nvim-treesitter/queries/make/
lvim -c TSUpdate -c q
profile
2000.11.30

0개의 댓글