# 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:
```elisp
(defun my/vmd-vterm (name cmd)
(let ((vterm-shell (mapconcat #'shell-quote-argument cmd " "))
(vterm-buffer-name (concat "*" name "*")))
(vterm)))
(setq vmd-console-function #'my/vmd-vterm)
```
[vmd]: http://man.openbsd.org/vmd