HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/ubuntu/neovim/src/nvim/state_defs.h
#pragma once

typedef struct vim_state VimState;

typedef int (*state_check_callback)(VimState *state);
typedef int (*state_execute_callback)(VimState *state, int key);

struct vim_state {
  state_check_callback check;
  state_execute_callback execute;
};

/// Values for State
///
/// The lower bits up to 0x80 are used to distinguish normal/visual/op_pending
/// /cmdline/insert/replace/terminal mode.  This is used for mapping.  If none
/// of these bits are set, no mapping is done.  See the comment above do_map().
/// The upper bits are used to distinguish between other states and variants of
/// the base modes.
enum {
  MODE_NORMAL      = 0x01,  ///< Normal mode, command expected
  MODE_VISUAL      = 0x02,  ///< Visual mode - use get_real_state()
  MODE_OP_PENDING  = 0x04,  ///< Normal mode, operator is pending - use get_real_state()
  MODE_CMDLINE     = 0x08,  ///< Editing the command line
  MODE_INSERT      = 0x10,  ///< Insert mode, also for Replace mode
  MODE_LANGMAP     = 0x20,  ///< Language mapping, can be combined with MODE_INSERT and MODE_CMDLINE
  MODE_SELECT      = 0x40,  ///< Select mode, use get_real_state()
  MODE_TERMINAL    = 0x80,  ///< Terminal mode

  MAP_ALL_MODES    = 0xff,  ///< all mode bits used for mapping

  REPLACE_FLAG     = 0x100,  ///< Replace mode flag
  MODE_REPLACE     = REPLACE_FLAG | MODE_INSERT,
  VREPLACE_FLAG    = 0x200,  ///< Virtual-replace mode flag
  MODE_VREPLACE    = REPLACE_FLAG | VREPLACE_FLAG | MODE_INSERT,
  MODE_LREPLACE    = REPLACE_FLAG | MODE_LANGMAP,

  MODE_NORMAL_BUSY = 0x1000 | MODE_NORMAL,  ///< Normal mode, busy with a command
  MODE_HITRETURN   = 0x2000 | MODE_NORMAL,  ///< waiting for return or command
  MODE_ASKMORE     = 0x3000,  ///< Asking if you want --more--
  MODE_SETWSIZE    = 0x4000,  ///< window size has changed
  MODE_EXTERNCMD   = 0x5000,  ///< executing an external command
  MODE_SHOWMATCH   = 0x6000 | MODE_INSERT,  ///< show matching paren
  MODE_CONFIRM     = 0x7000,  ///< ":confirm" prompt
};