summaryrefslogtreecommitdiff
path: root/src/fe-common/core/command-history.h
blob: ed09341525f586b0198e5ac901341ebf0e4121fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef __COMMAND_HISTORY_H
#define __COMMAND_HISTORY_H

#include "common.h"

typedef struct {
	char *name;

	GList *pos;
	int lines;

	int refcount;
	int redo:1;
} HISTORY_REC;

typedef struct {
	const char *text;
	HISTORY_REC *history;
	time_t time;
} HISTORY_ENTRY_REC;

HISTORY_REC *command_history_find(HISTORY_REC *history);
HISTORY_REC *command_history_find_name(const char *name);

HISTORY_REC *command_history_current(WINDOW_REC *window);

void command_history_init(void);
void command_history_deinit(void);

void command_history_add(HISTORY_REC *history, const char *text);
void command_history_load_entry(time_t time, HISTORY_REC *history, const char *text);
gboolean command_history_delete_entry(time_t history_time, HISTORY_REC *history, const char *text);

GList *command_history_list_last(HISTORY_REC *history);
GList *command_history_list_first(HISTORY_REC *history);
GList *command_history_list_prev(HISTORY_REC *history, GList *pos);
GList *command_history_list_next(HISTORY_REC *history, GList *pos);

const char *command_history_prev(WINDOW_REC *window, const char *text);
const char *command_history_next(WINDOW_REC *window, const char *text);
const char *command_global_history_prev(WINDOW_REC *window, const char *text);
const char *command_global_history_next(WINDOW_REC *window, const char *text);
const char *command_history_delete_current(WINDOW_REC *window, const char *text);

void command_history_clear_pos(WINDOW_REC *window);

HISTORY_REC *command_history_create(const char *name);
void command_history_clear(HISTORY_REC *history);
void command_history_destroy(HISTORY_REC *history);
void command_history_link(const char *name);
void command_history_unlink(const char *name);

#endif