mirror of
https://github.com/neovim/neovim.git
synced 2026-04-25 08:44:06 +00:00
Problem: Cannot map <C-H> when modifyOtherKeys is enabled.
Solution: Add the <C-H> mapping twice, both with modifier and as 0x08. Use
only the first one when modifyOtherKeys has been detected.
459fd785e4
Add REPTERM_NO_SPECIAL instead of REPTERM_SPECIAL because the meaning of
"special" is different between Vim and Nvim.
Omit seenModifyOtherKeys as Nvim supports attaching multiple UIs.
Omit tests as they send terminal codes.
Keep the behavior of API functions.
81 lines
2.4 KiB
C
81 lines
2.4 KiB
C
#ifndef NVIM_GETCHAR_H
|
|
#define NVIM_GETCHAR_H
|
|
|
|
#include "nvim/buffer_defs.h"
|
|
#include "nvim/ex_cmds_defs.h"
|
|
#include "nvim/os/fileio.h"
|
|
#include "nvim/types.h"
|
|
#include "nvim/vim.h"
|
|
|
|
/// Values for "noremap" argument of ins_typebuf()
|
|
///
|
|
/// Also used for map->m_noremap and menu->noremap[].
|
|
enum RemapValues {
|
|
REMAP_YES = 0, ///< Allow remapping.
|
|
REMAP_NONE = -1, ///< No remapping.
|
|
REMAP_SCRIPT = -2, ///< Remap script-local mappings only.
|
|
REMAP_SKIP = -3, ///< No remapping for first char.
|
|
};
|
|
|
|
// Argument for flush_buffers().
|
|
typedef enum {
|
|
FLUSH_MINIMAL,
|
|
FLUSH_TYPEAHEAD, // flush current typebuf contents
|
|
FLUSH_INPUT, // flush typebuf and inchar() input
|
|
} flush_buffers_T;
|
|
|
|
/// All possible |:map-arguments| usable in a |:map| command.
|
|
///
|
|
/// The <special> argument has no effect on mappings and is excluded from this
|
|
/// struct declaration. |noremap| is included, since it behaves like a map
|
|
/// argument when used in a mapping.
|
|
///
|
|
/// @see mapblock_T
|
|
struct map_arguments {
|
|
bool buffer;
|
|
bool expr;
|
|
bool noremap;
|
|
bool nowait;
|
|
bool script;
|
|
bool silent;
|
|
bool unique;
|
|
|
|
/// The {lhs} of the mapping.
|
|
///
|
|
/// vim limits this to MAXMAPLEN characters, allowing us to use a static
|
|
/// buffer. Setting lhs_len to a value larger than MAXMAPLEN can signal
|
|
/// that {lhs} was too long and truncated.
|
|
char_u lhs[MAXMAPLEN + 1];
|
|
size_t lhs_len;
|
|
|
|
/// Unsimplifed {lhs} of the mapping. If no simplification has been done then alt_lhs_len is 0.
|
|
char_u alt_lhs[MAXMAPLEN + 1];
|
|
size_t alt_lhs_len;
|
|
|
|
char_u *rhs; /// The {rhs} of the mapping.
|
|
size_t rhs_len;
|
|
LuaRef rhs_lua; /// lua function as rhs
|
|
bool rhs_is_noop; /// True when the {orig_rhs} is <nop>.
|
|
|
|
char_u *orig_rhs; /// The original text of the {rhs}.
|
|
size_t orig_rhs_len;
|
|
char *desc; /// map description
|
|
};
|
|
typedef struct map_arguments MapArguments;
|
|
#define MAP_ARGUMENTS_INIT { false, false, false, false, false, false, false, \
|
|
{ 0 }, 0, { 0 }, 0, NULL, 0, LUA_NOREF, false, NULL, 0, NULL }
|
|
|
|
#define KEYLEN_PART_KEY (-1) // keylen value for incomplete key-code
|
|
#define KEYLEN_PART_MAP (-2) // keylen value for incomplete mapping
|
|
|
|
/// Maximum number of streams to read script from
|
|
enum { NSCRIPT = 15, };
|
|
|
|
/// Streams to read script from
|
|
extern FileDescriptor *scriptin[NSCRIPT];
|
|
|
|
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
|
# include "getchar.h.generated.h"
|
|
#endif
|
|
#endif // NVIM_GETCHAR_H
|