48 lines
1.9 KiB
C
48 lines
1.9 KiB
C
|
#ifndef _OPENEMACS_H_
|
||
|
#define _OPENEMACS_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define EDITOR_KEY_MAX_SEQUENCE 16
|
||
|
|
||
|
struct editor_state
|
||
|
{
|
||
|
int cursor_x, cursor_y; // Cursor x and y position in characters
|
||
|
int desired_cursor_x; // Cursor x which user wants if sufficient characters on the line
|
||
|
int row_offset; // Offset of row displayed.
|
||
|
int column_offset; // Offset of column displayed.
|
||
|
int screen_rows; // Number of rows that we can show
|
||
|
int screen_columns; // Number of columns that we can show
|
||
|
int number_of_rows; // Number of rows
|
||
|
int key_pos; // Current position in key buffer
|
||
|
char key_buf[EDITOR_KEY_MAX_SEQUENCE]; // Key buffer
|
||
|
int key_quit_confirmations_left; // Quit confirmations left
|
||
|
int key_previous; // Previous key
|
||
|
bool editor_completed; // TRUE if editor has completed
|
||
|
void* editor_userdata; // General user data
|
||
|
size_t (*write) (struct editor_state* E, const char *buf, size_t nbyte);
|
||
|
struct editor_row *row; // Rows
|
||
|
bool dirty; // File modified but not saved.
|
||
|
char *filename; // Currently open filename
|
||
|
char *status_message;
|
||
|
time_t status_message_last_update;
|
||
|
int number_of_cut_buffer_lines;
|
||
|
char **cut_buffer_lines;
|
||
|
bool has_open_cut_buffer;
|
||
|
struct editor_syntax *syntax_highlight_mode; // Current syntax highlight, or NULL.
|
||
|
};
|
||
|
|
||
|
void editor_init(struct editor_state* E, size_t (*write) (struct editor_state* E, const char *buf, size_t nbyte), void* userdata);
|
||
|
bool editor_open(struct editor_state* E, char const *filename);
|
||
|
void editor_refresh_screen(struct editor_state* E);
|
||
|
void editor_free(struct editor_state* E);
|
||
|
bool editor_process_keypress(struct editor_state* E, int k);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|