Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/psibi/justl.el

Major mode for driving just files.
https://github.com/psibi/justl.el

emacs just justfile

Last synced: 16 days ago
JSON representation

Major mode for driving just files.

Awesome Lists containing this project

README

        

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

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