justl.el mode is a major mode for driving [[https://github.com/casey/just][justfiles]]. As compared to the [[https://melpa.org/#/just-mode][just-mode]], this mode is built for listing and executing the recipes in the justfile via the [[https://magit.vc/manual/transient][transient]] keymaps. Also works with [[https://www.gnu.org/software/tramp/][TRAMP]].
[[https://user-images.githubusercontent.com/737477/132949123-87387b7e-8f7d-45de-ac32-8815d9c1dc5d.png]]
It's available via [[https://melpa.org/#/justl][melpa]] and can be installed through [[https://github.com/jwiegley/use-package][use-package]]:
(use-package justl :ensure t :custom (justl-executable "/home/sibi/bin/just"))
Optionally you can install it via [[https://github.com/quelpa/quelpa][quelpa]] too:
(use-package justl :quelpa (justl :fetcher github :repo "psibi/justl.el")
:custom (justl-executable "/home/sibi/bin/just") (justl-recipe-width 25))
For [[https://github.com/doomemacs/doomemacs][doom emacs]], you can install by adding the following to your config.el
:
(use-package! justl :config (map! :n "e" 'justl-exec-recipe))
and the following to your packages.el
:
(package! justl :recipe (:host github :repo "psibi/justl.el"))
To list all the recipes present in your justfile, call
M-x justl
You don't have to call it from the actual justfile. Calling it from the directory where the justfile is present should be enough.
Alternatively if you want to just execute a recipe quickly, call
M-x justl-exec-recipe-in-dir
To execute default recipe, call justl-exec-default-recipe
To execute multiple recipes in parallel, customize justl-per-recipe-buffer to create dedicated buffers named /just-RECIPE/. This is useful to manage long running process.
On the just screen, place your cursor on a recipe:
h => help popup ? => help popup g => refresh e => execute recipe E => execute recipe with a shell w => execute recipe with arguments W => open a shell without executing
Customize
Because the help popup is built with transient, you can [[https://www.gnu.org/software/emacs//manual/html_node/transient/Saving-Values.html][set and save your choices]] the same way you would with any other transient dialog.
By default, justl searches the executable named just, you can change the /justl-executable/ variable to set any explicit path.
You can also control the width of the RECIPE column in the justl buffer via /justl-recipe width/. By default it has a value of 20.
You can change the shell between /eshell/ and /vterm/ using the /justl-shell/ variable. Using vterm requires [[https://github.com/akermu/emacs-libvterm][the vterm package]] to be installed.
Future
Implement justfile variables related features.
Releases
See the [[file:Changelog.org][Changelog.org]] for the list of changes.