Emacs interface to GNU poke

Next:   [Contents]

poke-el: an Emacs interface to GNU poke

This manual documents version 2.1 of poke.el.

Copyright © 2022 Jose E. Marchesi.

You can redistribute it and/or modify this manual under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Table of Contents

1 Introduction

poke-el is an Emacs interface to GNU poke1, the extensible editor for structured binary data.

1.1 Installation

This program is implemented in a self-contained elisp file called poke.el. It can be obtained in several ways:

  • - From GNU ELPA using the built-in Emacs package manager.
  • - As part of the source tree cloned from the development git repository https://git.savannah.gnu.org/git/poke/poke-el.git.
  • - As a single file downloaded form some other location in internet.
  • - It may be already installed as part of a binary package in some distribution.

In the second case you need to tell Emacs where to locate the poke.el file and to load it. Add the following to your .emacs file.

(add-to-list 'load-path "~/path/to/poke-el/")
(require 'poke)

If poke.el was installed as part of a binary package in a distribution then you usually don’t have to touch the load-path variable. Depending on the specific case you may have to require the package.

Next: , Previous: , Up: Introduction   [Contents]

1.2 Configuration

Once loaded, there are many aspects of poke-el that can be configured by the user.

1.2.1 Settings

The following variables can be customized in order to change the default behavior of poke.


Indicates whether Poke values are pretty-printed. Valid values are the strings "yes" and "no. Defaults to "no".


The numeration base to use when printing numerical values. Valid values are 2, 8, 10 and 16. Defaults to 10.


How to print composite Poke values, such as arrays and structs. Valid values are "plain" and "tree".

Note that all the settings above can be interactively changed at any time using the settings editor. XXX xref.

Previous: , Up: Configuration   [Contents]

1.2.2 Window Layouts

The poke Emacs interface is composed by many different buffers, each playing a different role: the repl, the bytes viewer, the settings editor, the maps tree, etc. When using the interface, actions will often result in many of these buffers to be displayed using switch-to-buffer-other-window.

In Emacs it is possible to configure how buffers are associated to windows by customizing the display-buffer-alist variable. This is often used in order to make the interface more predictable, i.e. to always have certain of the buffers shown in the same area of the screen.

poke-el provides an example of such a configuration, that you can use as-is or as the basis of your own layouts, in the function poke-frame-layout-1. This function appends entries to display-buffer-alist. It implements the following window layout:

    |                                   |
    |            *poke-vu*              |
    |                                   |
    |                  |                |
    |                  |                |
    |                  | *poke-maps*/   |
    |                  | *poke-edit*/   |
    |    *poke-repl*   | *poke-code*/   |
    |                  | *poke-ios*/    |
    |                  | *poke-settings*|
    |                  |                |
    |                                   |
    |            *poke-out*             |

To use this layout, simply include this call in your .emacs:


Next: , Previous: , Up: Introduction   [Contents]

1.3 Running

Once you have loaded and configured poke-el, it is time to run poke! To do so, simply issue M-xpoke.

This command will start the poke daemon if it wasn’t already running and initialize the interface if necessary. Then it will show the poke windows in the current frame (using whatever configured layout. See Window Layouts) and drop you on the poke REPL.

In order to exit poke, you can either use the command M-xpoke-exit or the quit command at the repl:

#!poke!# quit

Previous: , Up: Introduction   [Contents]

1.4 Feedback

If you find problems with poke-el, or if you have questions, remarks, or ideas about it, please mail to the GNU poke mailing list poke-devel@gnu.org. If you are not a member of the mailing list, your mail will be passed to the list after a moderator has approved it2.





Please consider subscribing to the mailing list, in order to minimize the work the mailing list moderators have to do. The subscription can be done online at http://lists.gnu.org/mailman/listinfo/poke-devel.