justl.el

Major mode for driving just files.

GPL-3.0 License

Stars
62

NOTE: To avoid having this in the info manual, we use HTML rather than Org syntax; it still appears with the GitHub renderer.

#+HTML:

  • Introduction

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]]

  • Installation

It's available via [[https://melpa.org/#/justl][melpa]] and can be installed through [[https://github.com/jwiegley/use-package][use-package]]:

#+begin_example elisp (use-package justl :ensure t :custom (justl-executable "/home/sibi/bin/just")) #+end_example

Optionally you can install it via [[https://github.com/quelpa/quelpa][quelpa]] too:

#+begin_example elisp (use-package justl :quelpa (justl :fetcher github :repo "psibi/justl.el")

:custom (justl-executable "/home/sibi/bin/just") (justl-recipe-width 25)) #+end_example

For [[https://github.com/doomemacs/doomemacs][doom emacs]], you can install by adding the following to your config.el:

#+begin_example elisp (use-package! justl :config (map! :n "e" 'justl-exec-recipe)) #+end_example

and the following to your packages.el:

#+begin_example elisp (package! justl :recipe (:host github :repo "psibi/justl.el")) #+end_example

  • Usage

To list all the recipes present in your justfile, call

#+begin_example elisp M-x justl #+end_example

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

#+begin_example elisp M-x justl-exec-recipe-in-dir #+end_example

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.

  • Shortcuts

On the just screen, place your cursor on a recipe:

#+begin_example 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 #+end_example

  • 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.