Skip to main content

Makefile language server

Project description

make-ls

make-ls is a Makefile language server written in Python.

It is still early, but it is already useful for real Makefiles. The server uses an owned line-based Make parser and checks recipe shell syntax with bash -n.

What it does

  • hover for targets and variables
  • hover for common GNU Make directives, functions, builtin variables, and special targets
  • go-to-definition for targets and variables
  • diagnostics for Makefile syntax
  • diagnostics for shell syntax inside recipes
  • same-workspace target lookup across Makefile, makefile, GNUmakefile, and *.mk

What it does not do yet

  • full GNU Make evaluation
  • include-aware workspace resolution
  • completion, rename, references, or code actions

Run it

uv sync --all-groups
uv run make-ls

Any editor that can start a stdio LSP can use it.

Neovim

vim.lsp.config("make-ls", {
  cmd = { "uv", "run", "--directory", "/path/to/make-ls", "make-ls" },
  filetypes = { "make" },
  root_markers = { "Makefile", "makefile", "GNUmakefile", ".git" },
})

vim.lsp.enable("make-ls")

Development

make check
make test
make build

Release

Stable releases from .github/workflows/releases.yml publish GitHub assets and upload the tagged distribution to PyPI with trusted publishing. Configure PyPI to trust .github/workflows/releases.yml and, if you keep it, the pypi environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

make_ls-0.2.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

make_ls-0.2.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file make_ls-0.2.0.tar.gz.

File metadata

  • Download URL: make_ls-0.2.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for make_ls-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ca74e1eb305faaca6b055672d2daf22bb45c033049b7ff8a914c349bb49ca298
MD5 3ea3ff15b80d56521d46ac906c9d4509
BLAKE2b-256 067f1adcc4e31f4adafdad5121665809e4f9a5347413d94c31ae8ad2967653a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for make_ls-0.2.0.tar.gz:

Publisher: releases.yml on lewis6991/make-ls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file make_ls-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: make_ls-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for make_ls-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9665bad4bf52ab9049ff015752fbd0fe9b0d1274f2fd13eb073d7f0debd8bb20
MD5 9a73706f1ed2435715c76a91a397dcfc
BLAKE2b-256 0491bf64188d0f3a921a3262f768b8768f3261baf42ef7ea266bf40f59e13845

See more details on using hashes here.

Provenance

The following attestation bundles were made for make_ls-0.2.0-py3-none-any.whl:

Publisher: releases.yml on lewis6991/make-ls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page