mal-language-server is a language server for MAL.
Requires python version 3.11 or higher.
mal-language-server is available on PyPI and can be installed with pip install mal-language-server.
The project uses uv as the main project manager and ruff for linting/formatting. ruff can be installed via uv as native via uv tool install ruff or use it as the dev-dependency its specified as via uv run ruff <command>.
Before running the project or editing files, uv must download the required packages. For
that, use uv sync.
To run the server, use the command uv run malls -- <options>.
There are two main ways of interacting with the server, via files or TCP. This can be configured via the start-up options. Obviously, they are mutually exclusive, meaning only one can be used per server instance.
-
Files: for this option, run
uv run malls --stdio, which defaults to standard input and output. To configure what files are used to read from/write to, runuv run malls --stdio -o OUT_FILE_PATH -i IN_FILE_PATH. -
TCP: for this option, run
uv run malls --tcp, which starts the server onlocalhostwith port8080. To use another host or port, add those options withuv run malls --tcp --host HOST -p PORT.
Other start-up arguments, namely related to logging, can be found using uv run malls -h
- Install the server via pip, for example locally:
pip install /folder/path/of/pyproject
[!NOTE] Use
-eto install it in editable/development mode, which updates the installation live. - Configure your NeoVim LSP client, for example :
init.luavim.lsp.config['malls'] = { cmd = { "malls", "--stdio" }, filetypes = { 'mal' }, } vim.lsp.enable('malls')
[!NOTE] Tested for NeoVim v0.11.1
Packages are published via UV on ubuntu to PyPI on tags pushed to the repository.
Tests are ran with pytest and pytest-xdist on ubuntu and macos. Additionally formatting and linting checks are ran with ruff.