Skip to content

27justin/build.el

Repository files navigation

build.el

This package strives to provide clean and easy to understand functions, as well as a transient menu, to build projects of various build systems.

Features

Supported build systems:

  • Bazel
  • Make
  • CMake
  • Cargo
  • Meson + Ninja
  • NPM

Usage

build.el provides interactive build commands for each build system. Build commands are prefixed by the name of the build system:

Build systemPrefix
CMakebuild-cmake-
Bazelbuild-bazel-
Makebuild-make-
Cargobuild-cargo-
Meson+Ninjabuild-meson-, build-ninja-
NPMbuild-npm-

Each build system exposes different amounts of functions, depending on the capability of the build system.

Though in general, where-ever possible, build.el will try to auto-complete possible targets given the context for you.

Make, only has build-make-run, which will prompt you for a target that should be ran, the targets are auto-completed from the Makefile itself.

Bazel, on the other hand, has build-bazel-run, build-bazel-test, and build-bazel-build. Running any of the commands will trigger a completing-read auto suggestion with matching targets.

CMake has build-cmake-build and build-cmake-generate.

Meson has build-meson-setup, compilation is done via build-ninja-build.

NPM has build-npm-run, build-npm-install and build-npm-uninstall. run, and uninstall will be autocompleted from the package.json in the project root.

In general, each build system has it’s own transient menu, these are always called build-<system>-transient. Though you will probably want to use build-menu, which will try to infer the build system of the current project and show that instead.

Demo

Installation

Manually

Clone the repository:

git clone https://github.com/27justin/build.el ~/.emacs.d/site-lisp/build.el

Add it to your load path

(add-to-list 'load-path "~/.emacs.d/site-lisp/build.el")
(use-package build)

Done.

About

A transient build system

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published