// input_cmdatom.c: The input engine "policy layer" (input.c. is the "bytes layer").
//
// Decides _structure_ of user input and captures it as a "CmdAtom": a repeatable unit (edit,
// motion, visual sequence, insert session, mapping), a dot-repeat-style keysequence plus structured
// fields (CmdSpec).
//
// Every "user action" is an atom (emits CmdAtom event), but not every atom is "replayable".
// - Replayable (cascade, dot-repeat) requires the full command grammar.
// - No atoms for: mouse drag/release (TODO(justinmk)?), terminal-mode input, aborted operations.
#include <assert.h>
#include <stdint.h>
#include <string.h>
#include "klib/kvec.h"
#include "nvim/api/private/defs.h"
#include "nvim/api/private/helpers.h"
#include "nvim/ascii_defs.h"
#include "nvim/autocmd.h"
#include "nvim/buffer.h"
#include "nvim/eval/typval_defs.h"
#include "nvim/eval/vars.h"
#include "nvim/ex_docmd.h"
#include "nvim/globals.h"
#include "nvim/input.h"
#include "nvim/input_cmdatom.h"
#include "nvim/insert.h"
#include "
|