yodel icon indicating copy to clipboard operation
yodel copied to clipboard

Communicable Elisp

  • Yodel: Communicable Elisp β›°πŸŽΆβ›° ** Yodel-ay-hee-why? The purpose of this package is to make it easier to reproduce elisp bugs. Bug reproduction cases often follow this pattern:

#+begin_example Given file "foo" with the following contents:

--8<---------------cut here---------------start------------->8--- foo bar baz --8<---------------cut here---------------end--------------->8---

Execute the following:

  1. do this
  2. do that
  3. do this #+end_example

This is error prone and inefficient. It requires anyone on the other end to prepare the test environment and manually execute the reproduction steps. One also has to ensure their elisp environment is clean (ideally only having the minimal set of packages needed installed and freshly loaded).

** Yodel-ay-hee-what? Yodel allows one to send a declarative form which describes the elisp environment and a program to execute within that environment. Others may execute the form on their system and compare results easily via consistently formatted reports.

For example, evaluating the following:

#+begin_src emacs-lisp :lexical t :results silent (yodel :post* (yodel-file :point "|" :with* "test: |fail" :then* (kill-word 1) (insert "pass") (message "%s" (buffer-string)))) #+end_src

results in the following report when using the org report formatter:

#+begin_src org ,* YODEL REPORT [2021-09-08 17:51]

,#+begin_src emacs-lisp :lexical t (yodel :post* (yodel-file :point "|" :with* "test: |fail" :then* (kill-word 1) (insert "pass") (message "%s" (buffer-string)))) ,#+end_src

,** STDOUT:

,#+begin_src emacs-lisp :lexical t test: pass ,#+end_src

,** Environment

  • =emacs version=: GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.17.4, Xaw3d scroll bars) of 2021-09-04
  • =system type=: gnu/linux #+end_src

Reformatting reports is as easy as =M-x yodel-reformat=. Yodel offers out-of-the-box formatters for:

  • Github
  • Reddit
  • Org
  • Mailing lists

** Yodel-ay-hee-how? Yodel is currently only available via this repository. *** Install with [[https://github.com/raxod502/straight.el][straight.el]] #+begin_src emacs-lisp :lexical t (straight-use-package '(yodel :host github :repo "progfolio/yodel")) #+end_src (side note: The inspiration for yodel is straight.el's =straight-bug-report=) *** Install manually

  • Clone this repository
  • Add it to your load-path
  • =(require 'yodel)= ** NOTICE Yodel is still in early development. API is experimental at this time.