jes/src-c/core/Command.h
2018-07-25 20:47:02 -04:00

105 lines
2.1 KiB
C++

#ifndef COMMAND_H
#define COMMAND_H
#include <stdint.h>
class Command
{
public:
enum : uint32_t
{
NOP,
GO_FORWARD_UP_TO_CHAR,
GO_FORWARD_ON_TO_CHAR,
GO_BACK_UP_TO_CHAR,
GO_BACK_ON_TO_CHAR,
DELETE_MOTION,
DELETE_LINE,
DELETE_CHAR,
DELETE_CHAR_BACK,
CHANGE_MOTION,
CHANGE_LINE,
YANK_MOTION,
YANK_LINE,
UNDO,
REDO,
ENTER_INSERT_MODE,
ENTER_INSERT_MODE_AFTER_CHAR,
ENTER_INSERT_MODE_AFTER_LINE,
ENTER_INSERT_MODE_START_OF_LINE,
ENTER_INSERT_MODE_NEW_LINE_BEFORE,
ENTER_INSERT_MODE_NEW_LINE_AFTER,
PUT,
PUT_BEFORE,
CHANGE_CHAR,
GO_START_OF_FILE,
GO_END_OF_FILE,
GO_TO_LINE,
GO_TO_LAST_LINE,
GO_LEFT,
GO_DOWN,
GO_UP,
GO_RIGHT,
GO_START_OF_LINE,
GO_END_OF_LINE,
GO_TOP_OF_SCREEN,
GO_MIDDLE_OF_SCREEN,
GO_BOTTOM_OF_SCREEN,
NEXT,
PREV,
SCROLL_WINDOW_UP_ONE_LINE,
SCROLL_WINDOW_DOWN_ONE_LINE,
SCROLL_WINDOW_UP_HALF_SCREEN,
SCROLL_WINDOW_DOWN_HALF_SCREEN,
SCROLL_WINDOW_UP_WHOLE_SCREEN,
SCROLL_WINDOW_DOWN_WHOLE_SCREEN,
ENTER_COMMAND_LINE_PROMPT,
COMMAND_COUNT,
};
class Motion
{
public:
enum : uint32_t
{
NOP,
FORWARD_UP_TO_CHAR,
FORWARD_ON_TO_CHAR,
BACK_UP_TO_CHAR,
BACK_ON_TO_CHAR,
START_OF_LINE,
END_OF_LINE,
/* These motions aren't command-mode sequences but are used
* internally. */
THIS_LINE,
MOTION_COUNT,
};
};
struct Unit
{
uint32_t id;
uint32_t count;
uint32_t following_char;
Unit()
{
id = 0u;
count = 0u;
following_char = 0u;
}
bool operator==(const Unit & other) const;
};
Unit main;
Unit motion;
bool operator==(const Command & other) const;
};
#endif