소개
리눅스 환경(Alpine Linux)에서 lua-language-server 설치하고 nvim에서 설정 및 활용하는 방법을 정리해 본다. alpine 3.2x 기준으로 설명한다. 과거 alpine 버전들은 lua-language-server가 없거나 nvim의 버전이 낮아 플러그인 지원에 문제가 있었다. 현재 시점을 기준으로 모두 적절한 버전을 지원하고 패키지도 되어 있기 때문에 소스 컴파일 등의 부담이 없어졌다.
설치
- luajit및 lua-language-server 그리고 neovim관련 패키지 설치
- 아래의 경우 nvim(neovim) 설치시
lfs.so
,penlight
등이 기본 포함하게 된다. (추가 설치 불필요)
apk add --no-cache luajit luajit-dev lua-language-server ldoc
apk add --no-cache neovim neovim-doc nvim-treesitter \
tree-sitter tree-sitter-cli tree-sitter-lua tree-sitter-bash \
tree-sitter-c tree-sitter-markdown tree-sitter-vimdoc
설정
~/.config/nvim/init.lua
에 다음 설정을 추가my_project_path
는 개별 모듈을 추가하는 경우이다.workspace
의 library 범위가 크면 부하가 커지므로 적당히 조절해 주어야 nvim에서 무리가 없다.- 아래 주석 표시된 부분을 주의해서 확인하고 자신에게 맞는 환경을 설정한다.
- 그리고 과거
sumneko
라는 식으로 설정했는데 현재lspconfig.lua_ls.setup
으로 바뀌었다.
-- Now set capabilities on your LSP servers
local lspconfig = require'lspconfig'
local my_project_path = os.getenv('HOME') .. '/.local/lib/lua'
print(my_project_path)
lspconfig.lua_ls.setup {
--capabilities = capabilities,
root_dir = lspconfig.util.root_pattern(".git", ".luarc.json", ".luarc.js"),
settings = {
Lua = {
runtime = {
version = 'Luajit',
path = vim.split(package.path, ";"),
},
diagnostics = {
globals = {'vim'},
update_in_insert = false,
},
workspace = {
library = {
--// 기본 vim 런타임 환경 모듈 추가
[vim.env.VIMRUNTIME] = true,
--// 모든 vim의 런타임 환경 모듈 추가
--[vim.api.nvim_get_runtime_file("", true)] = true,
--// my project 모듈 추가
[vim.fn.expand(my_project_path)] = true,
},
--// 제3의 모듈 제외
checkThirdParty = false,
},
telemetry = {
enable = false,
},
},
},
}
참고
- lua-language-server - Getting Started