Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions keynav.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ struct appstate {
int need_moveresize;
enum { record_getkey, record_ing, record_off } recording;
int playback;
int skip_history;

int grid_nav; /* 1 if grid nav is active */
enum { GRID_NAV_COL, GRID_NAV_ROW } grid_nav_state;
Expand Down Expand Up @@ -122,6 +123,7 @@ static struct appstate appstate = {
.dragging = 0,
.recording = record_off,
.grid_nav = 0,
.skip_history = 0,
};

static int drag_button = 0;
Expand Down Expand Up @@ -149,6 +151,7 @@ void cmd_toggle_start(char *args);
void cmd_grid(char *args);
void cmd_grid_nav(char *args);
void cmd_history_back(char *args);
void cmd_skip_history(char *args);
void cmd_loadconfig(char *args);
void cmd_move_down(char *args);
void cmd_move_left(char *args);
Expand Down Expand Up @@ -230,6 +233,7 @@ dispatch_t dispatch[] = {
"end", cmd_end,
"toggle-start", cmd_toggle_start,
"history-back", cmd_history_back,
"skip_history", cmd_skip_history,
"quit", cmd_quit,
"restart", cmd_restart,
"record", cmd_record,
Expand Down Expand Up @@ -1034,6 +1038,13 @@ void cmd_history_back(char *args) {
restore_history_point(1);
}

void cmd_skip_history(char *args) {
if (!ISACTIVE)
return;

appstate.skip_history = 1;
}

void cmd_loadconfig(char *args) {
// Trim leading and trailing quotes if they exist
if (*args == '"') {
Expand Down Expand Up @@ -1757,6 +1768,11 @@ void handle_commands(char *commands) {
}

void save_history_point() {
if (appstate.skip_history) {
appstate.skip_history = 0;
return;
}

/* If the history is full, drop the oldest entry */
while (wininfo_history_cursor >= WININFO_MAXHIST) {
int i;
Expand Down