LSP implementation for Credo.
[!IMPORTANT]
Next LS now has support for Credo, so Credo Language Server will not receive further significant updates.
credo-language-server is an LSP implementation for Credo.
credo-language-server is included with lsp-mode and can be installed by running M-x lsp-install-server credo-language-server
.
You might want to set the lsp-credo-version to the latest release:
(custom-set-variables '(lsp-credo-version "0.1.3"))
or by running M-x customize-group lsp-credo
and updating the version.
Visit lsp-mode for detailed installation instructions.
(require 'eglot)
(add-to-list 'exec-path "path/to/credo-language-server/bin")
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
`((elixir-ts-mode heex-ts-mode elixir-mode) .
("credo-language-server" "--stdio=true"))))
(add-hook 'elixir-mode-hook 'eglot-ensure)
(add-hook 'elixir-ts-mode-hook 'eglot-ensure)
(add-hook 'heex-ts-mode-hook 'eglot-ensure)
Eglot only allows one server per mode, but it is possible to configure eglot alternatives to prompt for a specific language server.
(require 'eglot)
(setq exec-path
(append exec-path
'("path/to/credo-language-server/bin"
"path/to/elixir-ls/bin")))
(add-to-list
'eglot-server-programs
`((elixir-mode elixir-ts-mode heex-ts-mode) .
,(eglot-alternatives
`(,(if (and (fboundp 'w32-shell-dos-semantics)
(w32-shell-dos-semantics))
'("language_server.bat")
'("language_server.sh"))
("credo-language-server" "--stdio=true")))))
Here is an example configuration for languages.toml
[[language]]
name = "elixir"
scope = "source.elixir"
injection-regex = "elixir"
file-types = ["ex", "exs"]
roots = ["mix.exs"]
auto-format = false
diagnostic-severity = "Hint"
comment-token = "#"
indent = {tab-width = 2, unit = " "}
language-servers = ["elixir-ls", "credo"]
[language-server.elixir-ls]
command = "elixir-ls"
config = { elixirLS.dialyzerEnabled = true }
[language-server.credo]
command = "/path/to/executable/credo-language-server"
args = ["--stdio=true", "--port=999"]
The preferred way to use credo-language-server is through one of the supported editor extensions.
If you need to install credo-language-server on it's own, you can download the executable hosted by the GitHub release. The executable is an Elixir script that utilizes Mix.install/2
.
Credo Language Server creates an .elixir-tools
hidden directory in your project.
This should be added to your project's .gitignore
.
Check: all
If there is a check that you'd wish to disable, you can trigger the code action on that line to insert a magic comment to disable that check.
Check: Credo.Check.Readability.ModuleDoc
Inject a @moduledoc false
snippet into the module.
# setup the test project
$ (cd test/support/project && mix deps.get)
# run the tests
$ mix test
Built with gen_lsp