소개

리눅스 환경(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,
			},
		},
	},
}

참고