ob-bitfield icon indicating copy to clipboard operation
ob-bitfield copied to clipboard

Generate bitfield diagrams using org-babel

ob-bitfield MELPA

Generate bitfield diagrams using the Python bitfield package and org-babel.

example

Installation

ob-bitfield can be installed from MELPA with M-x package-install ob-bitfield. Before using it, make sure to install the required dependencies.

You can then enable the package in one of the following ways:

  1. Call org-babel-do-load-languages:
(org-babel-do-load-languages
   'org-babel-load-languages
   '((bitfield . t)))
  1. Add (require 'ob-bitfield) to your Emacs init file
  2. If using use-package, you can add this to your init file:
(use-package ob-bitfield
  :after org)

Required Dependencies

Install the bitfield Python package:

pip install bit_field[JSON5]

Imagemagick is also required if you would like to generate images other than SVGs. On Debian/Ubuntu this can be installed with sudo apt install imagemagick, and on macOS it can be installed with brew install imagemagick.

Usage

Create a bitfield source block, for example:

#+begin_src bitfield :lanes 2 :file out.png
[
    { "name": "IPO",   "bits": 8, "attr": "RO" },
    {                  "bits": 7 },
    { "name": "BRK",   "bits": 5, "attr": "RW", "type": 4 },
    { "name": "CPK",   "bits": 1 },
    { "name": "Clear", "bits": 3 },
    { "bits": 8 }
]
#+end_src

Use org-babel-execute-src-block (C-c C-c) to execute the source block. The results will look as follows:

#+RESULTS:
[[file:out.png]]

You can view the image inline with org-toggle-inline-images (C-c C-x C-v).

If :file does not end in the ".svg" extension, then Imagemagick is used to convert it to the specified file type.

Header Arguments

By default, :results is set to file graphics and :exports is set to results.

:file is the only required header argument.

Most arguments from the bitfield package are supported. If an argument is not specified, the default value from the package is used. The full list of supported arguments is:

  • :lanes
  • :vspace
  • :hspace
  • :bits
  • :fontfamily
  • :fontweight
  • :fontsize
  • :compact