LunarVim
은 nvim-treesitter
플러그인을 통한 하이라이팅 기능을 제공한다. 메이저 언어의 경우 별다른 문제가 없으나 마이너 언어의 경우 업데이트가 늦어져 하이라이팅이 제대로 이뤄지지 않는 문제가 있다.
특히 LunarVim
의 경우 nvim-treesitter
의 master
를 따라가지 않고 독자적인 checkout
을 사용하기 때문에 더 문제가 많다. 다음은 LunarVim
의 nvim-treesitter-make
가 제공하는 하이라이팅이다:
위 삽화는 lvim
에서 makefile
을 읽어들인 모습이다. 제대로 된 거 아닌가? 라 생각할 수 있으나 이는 반쪽짜리 하이라이팅이다. 가장 두드러지는 문제는 주요 키워드인 define
, endef
, vpath
의 하이라이팅이 전혀 이뤄지지 않았다는 것이다. 함수 내부의 구문들까진 봐줄 수 있으나 주요 키워드의 경우 가시성을 저해한다.
설치된 treesitter
의 설정 파일은 ~/.local/share/lunarvim/site/pack/lazy/opt/nvim-treesitter/
에서 확인이 가능하다. 글 작성일인 23년 07월 02일 시점, treesitter
의 HEAD
는 2ce3c908
로 무려 3개월 이전의 커밋이다.
여기서 재미있는 사실은 바로 23년 6월 04일에 define
키워드 하이라이팅 업데이트 커밋이 올라왔다는 점이다. 하이라이팅이 제대로 이뤄지지 않는 주된 원인은 LunarVim
에서 nvim-treesitter
의 최신 업데이트를 따라가지 못하여 발생한 문제임을 알 수 있다.
master
로 checkout
) 위 문제에 대한 가장 쉽고 단순한 해결 방법은 바로 master
로 checkout
하는 것이다. 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
와 함수 내부 구문에 대한 하이라이팅은 전혀 이뤄지지 않은 상황이다.
query
디렉토리 제거) 두 번째 해결 방법은 nvim-treesitter
의 query
디렉토리를 통째로 지우는 것이다. 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