1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-29 03:17:53 -04:00
elinks/src/bfu/inphist.h
2007-07-26 22:47:23 +03:00

62 lines
1.6 KiB
C

#ifndef EL__BFU_INPHIST_H
#define EL__BFU_INPHIST_H
#include "util/lists.h"
struct dialog_data;
struct input_history_entry {
LIST_HEAD(struct input_history_entry);
unsigned char data[1]; /* Must be last. */
};
struct input_history {
LIST_OF(struct input_history_entry) entries;
int size;
unsigned int dirty:1;
unsigned int nosave:1;
};
#define INIT_INPUT_HISTORY(history) \
struct input_history history = { \
/* items: */ { D_LIST_HEAD(history.entries) }, \
/* size: */ 0, \
/* dirty: */ 0, \
/* nosave: */ 0, \
}
#define add_to_history_list(history, entry) \
do { \
add_to_list((history)->entries, entry); \
(history)->size++; \
if (!(history)->nosave) (history)->dirty = 1; \
} while (0)
#define del_from_history_list(history, entry) \
do { \
del_from_list((entry)); \
(history)->size--; \
if (!(history)->nosave) (history)->dirty = 1; \
} while (0)
void add_to_input_history(struct input_history *, unsigned char *, int);
void do_tab_compl(struct dialog_data *,
LIST_OF(struct input_history_entry) *);
void do_tab_compl_file(struct dialog_data *,
LIST_OF(struct input_history_entry) *);
void do_tab_compl_unambiguous(struct dialog_data *,
LIST_OF(struct input_history_entry) *);
/* Load history file from elinks home. */
int load_input_history(struct input_history *history, unsigned char *filename);
/* Write history list to @filebane in elinks home. It returns a value different
* from 0 in case of failure, 0 on success. */
int save_input_history(struct input_history *history, unsigned char *filename);
void dlg_set_history(struct widget_data *);
#endif