Skip to main content

Makefile language server

Project description

make-ls

CI PyPI Python License

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
  • find references for targets and variables
  • rename for variables
  • diagnostics for Makefile syntax
  • diagnostics for shell syntax inside recipes
  • target lookup through explicit include, -include, and sinclude directives

What it does not do yet

  • full GNU Make evaluation
  • complete include-path expansion and evaluation
  • completion 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.3.0.tar.gz (20.9 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.3.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: make_ls-0.3.0.tar.gz
  • Upload date:
  • Size: 20.9 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.3.0.tar.gz
Algorithm Hash digest
SHA256 35d0fab40b9b00d1863893d34de10216d995cd4fa474860ddb1f90814cf39726
MD5 4bb14101570f1929eb4412ec0b9143df
BLAKE2b-256 0c425593f1233f2907278dd20286f4168b7314ef94ffe2f1d936901be963b657

See more details on using hashes here.

Provenance

The following attestation bundles were made for make_ls-0.3.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.3.0-py3-none-any.whl.

File metadata

  • Download URL: make_ls-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b462f23cdeecc31c82fb1d1d133e351c79f993565f2dc1ef6ab554d79821b81f
MD5 4ec436a9017c19ebd2fc347848a9c25f
BLAKE2b-256 b30b06b6045e5b1f7c003e5c4d176ffe44cc36c30dbcaea4de0e59b0e0c7e830

See more details on using hashes here.

Provenance

The following attestation bundles were made for make_ls-0.3.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