1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-19 01:36:33 -04:00
elinks/src/bfu/inphist.h

59 lines
1.5 KiB
C
Raw Normal View History

#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 {
struct list_head 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 *, struct list_head *);
void do_tab_compl_file(struct dialog_data *, struct list_head *);
void do_tab_compl_unambiguous(struct dialog_data *, struct list_head *);
/* 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