Files
neovim/src/nvim/mapping_defs.h
zeertzjq 4b852bc555 vim-patch:9.1.0642: Check that mapping rhs starts with lhs fails if not simplified (#29909)
Problem:  Check that mapping rhs starts with lhs doesn't work if lhs is
          not simplified.
Solution: Keep track of the mapblock containing the alternative lhs and
          also compare with it (zeertzjq).

fixes: vim/vim#15376
closes: vim/vim#15384

9d997addc7

Cherry-pick removal of save_m_str from patch 8.2.4059.
2024-07-30 07:35:25 +08:00

31 lines
1.3 KiB
C

#pragma once
#include <stdbool.h>
#include "nvim/eval/typval_defs.h"
enum { MAXMAPLEN = 50, }; ///< Maximum length of key sequence to be mapped.
/// Structure used for mappings and abbreviations.
typedef struct mapblock mapblock_T;
struct mapblock {
mapblock_T *m_next; ///< next mapblock in list
mapblock_T *m_alt; ///< pointer to mapblock of the same mapping
///< with an alternative form of m_keys, or NULL
///< if there is no such mapblock
char *m_keys; ///< mapped from, lhs
char *m_str; ///< mapped to, rhs
char *m_orig_str; ///< rhs as entered by the user
LuaRef m_luaref; ///< lua function reference as rhs
int m_keylen; ///< strlen(m_keys)
int m_mode; ///< valid mode
int m_simplified; ///< m_keys was simplified
int m_noremap; ///< if non-zero no re-mapping for m_str
char m_silent; ///< <silent> used, don't echo commands
char m_nowait; ///< <nowait> used
char m_expr; ///< <expr> used, m_str is an expression
sctx_T m_script_ctx; ///< SCTX where map was defined
char *m_desc; ///< description of mapping
bool m_replace_keycodes; ///< replace keycodes in result of expression
};