lsp-docker+ is convenient wrapper of lsp-docker.
This package make it easier to switch language server via settings in .dir-locals.el
.
You can easily use an actual development environment (docker image) as language server.
- clone the repo
git clone https://github.com/y-kitamu/emacs-lsp-docker-plus.git
- add settings in your
init.el
file.
(use-package lsp-docker+
:load-path "<path-to-lsp-docker+>"
:config
(enable-lsp-docker+)
)
- create
.dir-locals.el
to your project root directory. Configurable variables are similar to these oflsp-docker
. An example is as follows.
((python-mode
. (
(lsp-docker+-server-id . pyright)
(lsp-docker+-docker-server-id . pyls-docker)
(lsp-docker+-server-command . "pyright-langserver --stdio")
(lsp-docker+-image-id . "<docker-image-id>")
(lsp-docker+-container-name . "py-lsp-docker")
(lsp-docker+-docker-options . "--env-file <path/to/envfile>")
(lsp-docker+-priority. 10)
(lsp-docker+-path-mappings . (("<path-to-project-root>" . "/project/")))
))
(c++-mode
. (
(lsp-docker+-server-id . ccls)
(lsp-docker+-docker-server-id . ccls-docker)
(lsp-docker+-server-command . "ccls")
(lsp-docker+-image-id . "<docker-image-id>")
(lsp-docker+-container-name . "cpp-lsp-docker")
(lsp-docker+-priority. 10)
(lsp-docker+-path-mappings . (("<path-to-project-root>" . "/project/")))
))
(rust-mode
. (
(lsp-docker+-server-id . rust-analyzer)
(lsp-docker+-docker-server-id . rust-analyzer-lsp-docker)
(lsp-docker+-server-command . "rust-analyzer")
(lsp-docker+-image-id . "<docker-image-id>")
(lsp-docker+-container-name . "rust-lsp-docker")
(lsp-docker+-path-mappings . (("<path-to-project-root>" . "/project/")))
))
)
In .dir-locals.el
, you must specify lsp-docker+-server-id
, lsp-docker+-docker-server-id
and lsp-docker+-server-command
.