A regresion was introduced by #81 where the log buffer was not being
restored when there was no modification after describing from the
log buffer. This has been reworked and now the function `on_done` is
always called not only when there are lines in the buffer giving the
responsibility to check the nilness on the `on_done` function.
There was a bug also when restoring cursor position which was being
wiped when the buffer was closed which is not actually what we want
- This required some improvements on the editor buffer logic,
introduced a `on_write` (previously on_done but it wasn't the
right meaning) hook and an `on_unload` to allow for both
describe and commit correct workflows.
- Introduced an utils function to extract the description text and
clean it post buffer write
- Document describe.editor configuration for type and keymaps
- Document keymaps configuration for log, status, and close keybindings
- Update examples to show the new nested config structure
- Add section on customizing describe editor keymaps
- Preserve multiline descriptions in describe editor buffer
- Close terminal buffer before opening describe editor
- Capture log state before closing to detect if we should reopen
- Add on_unload callback to editor to handle log reopening
- Suppress redraws during buffer transitions with lazyredraw
- Remove duplicate hardcoded status keymaps from terminal.lua (were referencing undefined functions)
- Fix resolve_keymaps_from_specs to validate handlers exist before creating keymaps
- Add M.setup() to cmd module for configuration
- Move describe editor config to M.config.describe.editor with nested structure
- Add keymaps config with separate log, status, and close sections
- Implement resolve_keymaps_from_specs() helper to build keymap lists from config
- Extract editor.open_editor() keymaps parameter support
- Move status/log event handlers from terminal.lua to cmd.lua
- Convert log/status buffer keymaps to config-driven approach with handler specs