Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

에디터 설정

renk-lsp는 .rk 파일용 stdio Language Server Protocol 서버다. cargo install --path crates/renk --bin renk-lsp로 설치한다. 제공하는 기능은 다음과 같다:

  • Renk 문법 오류 진단.
  • 문서 심볼.
  • PATH에 rust-analyzer가 있으면, 생성된 Rust에 대한 rust-analyzer의 진단(저장할 때 도는 cargo check의 타입 오류 포함), hover, 정의로 이동, 자동 완성, 참조 찾기, 이름 바꾸기, 코드 액션, 인레이 힌트.

위치는 .rk 파일 기준으로 되돌려 매핑한다. 생성된 Rust와 다른 Renk 텍스트를 바꾸게 되는 이름 바꾸기는 실패하고, 편집을 .rk 줄로 옮길 수 없는 코드 액션은 빠진다. a.b 점에서 난 이름 해석 오류에는 renk check와 같은 힌트가 붙는다(한계 참고).

#! 줄이나 frontmatter가 있거나 Cargo 패키지 밖에 있는 .rk 파일은 스크립트로 보고 renk script와 같은 방식으로 트랜스파일한다. 스크립트는 $XDG_CACHE_HOME/renk/lsp/에 생성된 cargo-script 파일을 대상으로 자기 전용 rust-analyzer를 띄우므로 frontmatter 의존성이 해석된다.

Zed

editors/zed의 확장은 Renk 언어를 등록하고 renk-lsp를 실행하며 Tree-sitter로 하이라이트한다. Zed 확장 페이지의 Install Dev Extension에서 editors/zed를 선택해 설치한다.

Neovim

Neovim 0.11 이상:

vim.filetype.add({ extension = { rk = "renk" } })
vim.lsp.config("renk", {
  cmd = { "renk-lsp" },
  filetypes = { "renk" },
  root_markers = { "Cargo.toml", ".git" },
})
vim.lsp.enable("renk")

다른 에디터

.rk로 끝나는 파일에 대해 인자 없는 renk-lsp 명령을 stdio 언어 서버로 설정한다.