README.mdcommits | blame
vmd.elcommits | blame
vmd.pngcommits | blame

# vmd.el

vmd is an Emacs package to interact with [OpenBSD' vmd][vmd].

![vmd buffer with transient open](vmd.png)

In a `*vmd*` buffer (opened with `M-x vmd RET`), the following keys
are defined:

 - `c`: (console) open a terminal connected to the vm at point
 - `P`: pause the vm at point
 - `s`: start the vm at point
 - `S`: stop the vm at point
 - `u`: unpause the vm at point

additionally, `x` will bring up a transient popup with the mnemonics
for the keys.

### Customize the terminal for the console

To use vterm (or any other packages really) to handle a shell for the
console, `vmd-console-function` must point to a function that accepts
two parameters, name and cmd, and execute cmd (a list of strings) in
your preferred terminal.  By default, `ansi-term` (bundled with Emacs)
is used, so it's easy to switch e.g. to vterm:

(defun my/vmd-vterm (name cmd)
  (let ((vterm-shell (mapconcat #'shell-quote-argument cmd " "))
        (vterm-buffer-name (concat "*" name "*")))
(setq vmd-console-function #'my/vmd-vterm)