ledit

Text editor (WIP)
git clone git://lumidify.org/ledit.git (fast, but not encrypted)
git clone https://lumidify.org/git/ledit.git (encrypted, but very slow)
Log | Files | Refs | README | LICENSE

commit f0abd591c8ef4c52c3649aba5b68d460a1c78f47
parent 9bdc877acf81ae270c68cacad2e70b9860f0832e
Author: lumidify <nobody@lumidify.org>
Date:   Mon, 29 Nov 2021 09:19:33 +0100

Rename some functions

But it's still very inconsistent.

Diffstat:
Mbuffer.c | 180++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mbuffer.h | 88++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mkeys_basic.c | 134++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mkeys_command.c | 44++++++++++++++++++++++----------------------
Mkeys_command.h | 2+-
Mledit.c | 31+++++++++++++++++--------------
Msearch.c | 40++++++++++++++++++++--------------------
Msearch.h | 8++++----
Mtheme.c | 4++--
Mtheme.h | 4++--
Mundo.c | 34+++++++++++++++++-----------------
Mundo.h | 26+++++++++++++-------------
Mutil.c | 6+++---
Mutil.h | 6+++---
Mview.c | 235++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mwindow.c | 102++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mwindow.h | 74+++++++++++++++++++++++++++++++++++++-------------------------------------
17 files changed, 511 insertions(+), 507 deletions(-)

diff --git a/buffer.c b/buffer.c @@ -86,7 +86,7 @@ marklist_destroy(ledit_buffer_marklist *marklist) { } void -ledit_buffer_insert_mark(ledit_buffer *buffer, char *mark, size_t len, size_t line, size_t byte) { +buffer_insert_mark(ledit_buffer *buffer, char *mark, size_t len, size_t line, size_t byte) { ledit_buffer_marklist *marklist = buffer->marklist; for (size_t i = 0; i < marklist->len; i++) { if (!strncmp(mark, marklist->marks[i].text, len)) { @@ -118,10 +118,10 @@ marklist_create(void) { } ledit_buffer * -ledit_buffer_create(ledit_common *common) { +buffer_create(ledit_common *common) { ledit_buffer *buffer = ledit_malloc(sizeof(ledit_buffer)); buffer->common = common; - buffer->undo = ledit_undo_stack_create(); + buffer->undo = undo_stack_create(); buffer->marklist = marklist_create(); buffer->filename = NULL; @@ -137,7 +137,7 @@ ledit_buffer_create(ledit_common *common) { resize_and_move_line_gap(buffer, 1, 0); buffer->lines_num++; buffer->lines_gap++; - ledit_line *ll = ledit_buffer_get_line(buffer, 0); + ledit_line *ll = buffer_get_line(buffer, 0); init_line(buffer, ll); return buffer; @@ -146,11 +146,11 @@ ledit_buffer_create(ledit_common *common) { static void set_view_hard_line_text(ledit_buffer *buffer, ledit_view *view) { char *text = buffer->hard_line_based ? "|HL" : "|SL"; - ledit_window_set_mode_extra_text(view->window, text); + window_set_mode_extra_text(view->window, text); } void -ledit_buffer_set_hard_line_based(ledit_buffer *buffer, int hl) { +buffer_set_hard_line_based(ledit_buffer *buffer, int hl) { buffer->hard_line_based = hl; for (size_t i = 0; i < buffer->views_num; i++) { set_view_hard_line_text(buffer, buffer->views[i]); @@ -158,7 +158,7 @@ ledit_buffer_set_hard_line_based(ledit_buffer *buffer, int hl) { } void -ledit_buffer_add_view(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode mode, size_t line, size_t pos) { +buffer_add_view(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode mode, size_t line, size_t pos) { size_t new_num = buffer->views_num + 1; if (new_num <= buffer->views_num) err_overflow(); @@ -170,7 +170,7 @@ ledit_buffer_add_view(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode /* FIXME: error checking */ void -ledit_buffer_remove_view(ledit_buffer *buffer, ledit_view *view) { +buffer_remove_view(ledit_buffer *buffer, ledit_view *view) { size_t i = 0; int found = 0; for (; i < buffer->views_num; i++) { @@ -191,7 +191,7 @@ ledit_buffer_remove_view(ledit_buffer *buffer, ledit_view *view) { } void -ledit_buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line) { +buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line) { for (size_t i = 0; i < buffer->views_num; i++) { view_recalc_from_line(buffer->views[i], line); } @@ -200,7 +200,7 @@ ledit_buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line) { /* FIXME: don't generate extra blank line at end! */ /* WARNING: errstr must be copied as soon as possible! */ int -ledit_buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char **errstr) { +buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char **errstr) { long len; int off = 0; ledit_line *ll; @@ -214,7 +214,7 @@ ledit_buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char * if (len < 0) goto errorclose; if (fseek(file, 0, SEEK_SET)) goto errorclose; - ll = ledit_buffer_get_line(buffer, line); + ll = buffer_get_line(buffer, line); file_contents = ledit_malloc(len + 2); /* mimic nvi (or at least the openbsd version) - if the line is empty, insert directly, otherwise insert after the line */ @@ -233,7 +233,7 @@ ledit_buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char * } if (fclose(file)) goto error; - ledit_buffer_insert_text_with_newlines( + buffer_insert_text_with_newlines( buffer, line, ll->len, file_contents, len + off, NULL, NULL ); free(file_contents); @@ -251,15 +251,15 @@ errorclose: /* FIXME: allow to write only certain lines */ int -ledit_buffer_write_to_file(ledit_buffer *buffer, char *filename, char **errstr) { +buffer_write_to_file(ledit_buffer *buffer, char *filename, char **errstr) { FILE *file; ledit_line *ll; file = fopen(filename, "w"); if (!file) goto error; clearerr(file); for (size_t i = 0; i < buffer->lines_num; i++) { - ll = ledit_buffer_get_line(buffer, i); - ledit_buffer_normalize_line(ll); + ll = buffer_get_line(buffer, i); + buffer_normalize_line(ll); if (fprintf(file, "%s\n", ll->text) < 0) goto errorclose; } if (fclose(file)) goto error; @@ -276,13 +276,13 @@ errorclose: } void -ledit_buffer_destroy(ledit_buffer *buffer) { +buffer_destroy(ledit_buffer *buffer) { ledit_line *l; for (size_t i = 0; i < buffer->lines_num; i++) { - l = ledit_buffer_get_line(buffer, i); + l = buffer_get_line(buffer, i); free(l->text); } - ledit_undo_stack_destroy(buffer->undo); + undo_stack_destroy(buffer->undo); free(buffer->lines); if (buffer->filename) free(buffer->filename); @@ -291,7 +291,7 @@ ledit_buffer_destroy(ledit_buffer *buffer) { } void -ledit_buffer_normalize_line(ledit_line *line) { +buffer_normalize_line(ledit_line *line) { if (line->gap < line->len) { memmove( line->text + line->gap, @@ -308,35 +308,35 @@ ledit_buffer_normalize_line(ledit_line *line) { /* FIXME: To simplify this a bit, maybe just copy text to txtbuf first and then insert it in one go instead of having this complex logic */ void -ledit_buffer_insert_text_from_line( +buffer_insert_text_from_line( ledit_buffer *buffer, size_t dst_line, size_t dst_index, size_t src_line, size_t src_index, size_t src_len, txtbuf *text_ret) { - ledit_buffer_insert_text_from_line_base( + buffer_insert_text_from_line_base( buffer, dst_line, dst_index, src_line, src_index, src_len, text_ret ); - ledit_buffer_recalc_line(buffer, dst_line); + buffer_recalc_line(buffer, dst_line); } /* FIXME: check if there can be bugs when a newline is inserted in some way other than pasting or pressing enter */ void -ledit_buffer_insert_text_from_line_base( +buffer_insert_text_from_line_base( ledit_buffer *buffer, size_t dst_line, size_t dst_index, size_t src_line, size_t src_index, size_t src_len, txtbuf *text_ret) { assert(dst_line != src_line); - ledit_line *ll = ledit_buffer_get_line(buffer, src_line); + ledit_line *ll = buffer_get_line(buffer, src_line); if (text_ret != NULL) { txtbuf_grow(text_ret, src_len); text_ret->len = src_len; } if (src_index >= ll->gap) { /* all text to insert is after gap */ - ledit_buffer_insert_text_base( + buffer_insert_text_base( buffer, dst_line, dst_index, ll->text + src_index + ll->cap - ll->len, src_len ); @@ -349,7 +349,7 @@ ledit_buffer_insert_text_from_line_base( } } else if (ll->gap - src_index >= src_len) { /* all text to insert is before gap */ - ledit_buffer_insert_text_base( + buffer_insert_text_base( buffer, dst_line, dst_index, ll->text + src_index, src_len ); @@ -362,12 +362,12 @@ ledit_buffer_insert_text_from_line_base( } } else { /* insert part of text before gap */ - ledit_buffer_insert_text_base( + buffer_insert_text_base( buffer, dst_line, dst_index, ll->text + src_index, ll->gap - src_index ); /* insert part of text after gap */ - ledit_buffer_insert_text_base( + buffer_insert_text_base( buffer, dst_line, dst_index + ll->gap - src_index, ll->text + ll->gap + ll->cap - ll->len, src_len - ll->gap + src_index @@ -436,14 +436,14 @@ resize_and_move_line_gap(ledit_buffer *buffer, size_t min_size, size_t index) { } void -ledit_buffer_insert_text(ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len) { - ledit_buffer_insert_text_base(buffer, line_index, index, text, len); - ledit_buffer_recalc_line(buffer, line_index); +buffer_insert_text(ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len) { + buffer_insert_text_base(buffer, line_index, index, text, len); + buffer_recalc_line(buffer, line_index); } void -ledit_buffer_insert_text_base(ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len) { - ledit_line *line = ledit_buffer_get_line(buffer, line_index); +buffer_insert_text_base(ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len) { + ledit_line *line = buffer_get_line(buffer, line_index); /* \0 is not included in line->len */ /* FIXME: this if should be redundant now because resize_and_move... includes a check */ if (line->len + len + 1 > line->cap || line->text == NULL) @@ -471,27 +471,27 @@ strchr_len(char *text, char c, size_t len) { /* FIXME: make these functions that call recalc* also be final as described above */ void -ledit_buffer_insert_text_with_newlines( +buffer_insert_text_with_newlines( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len, size_t *end_line_ret, size_t *end_byte_ret) { size_t end; - ledit_buffer_insert_text_with_newlines_base( + buffer_insert_text_with_newlines_base( buffer, line_index, index, text, len, &end, end_byte_ret ); if (end_line_ret) *end_line_ret = end; if (line_index == end) - ledit_buffer_recalc_line(buffer, line_index); + buffer_recalc_line(buffer, line_index); else - ledit_buffer_recalc_from_line(buffer, line_index); + buffer_recalc_from_line(buffer, line_index); } /* FIXME: also look for \r */ void -ledit_buffer_insert_text_with_newlines_base( +buffer_insert_text_with_newlines_base( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len, @@ -504,15 +504,15 @@ ledit_buffer_insert_text_with_newlines_base( while ((cur = strchr_len(last, '\n', rem_len)) != NULL) { /* FIXME: this is probably inefficient, but I don't have time to think about it right now */ - ledit_buffer_append_line_base(buffer, cur_line, cur_index, 1); - ledit_buffer_insert_text_base(buffer, cur_line, cur_index, last, cur - last); + buffer_append_line_base(buffer, cur_line, cur_index, 1); + buffer_insert_text_base(buffer, cur_line, cur_index, last, cur - last); cur_index = 0; cur_line++; rem_len -= cur - last + 1; last = cur + 1; } /* FIXME: check how legal this casting between pointers and ints is */ - ledit_buffer_insert_text_base(buffer, cur_line, cur_index, last, text + len - last); + buffer_insert_text_base(buffer, cur_line, cur_index, last, text + len - last); if (end_line_ret) *end_line_ret = cur_line; if (end_byte_ret) @@ -530,14 +530,14 @@ init_line(ledit_buffer *buffer, ledit_line *line) { } void -ledit_buffer_append_line(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text) { - ledit_buffer_append_line_base(buffer, line_index, text_index, break_text); - ledit_buffer_recalc_from_line(buffer, line_index); +buffer_append_line(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text) { + buffer_append_line_base(buffer, line_index, text_index, break_text); + buffer_recalc_from_line(buffer, line_index); } /* FIXME: error checking (index out of bounds, etc.) */ void -ledit_buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text) { +buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text) { size_t new_len = buffer->lines_num + 1; if (new_len <= buffer->lines_num) err_overflow(); @@ -547,18 +547,18 @@ ledit_buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t te resize_and_move_line_gap(buffer, new_len, insert_index); buffer->lines_num++; buffer->lines_gap++; - ledit_line *new_l = ledit_buffer_get_line(buffer, line_index + 1); + ledit_line *new_l = buffer_get_line(buffer, line_index + 1); init_line(buffer, new_l); for (size_t i = 0; i < buffer->views_num; i++) { view_notify_append_line(buffer->views[i], line_index); } if (break_text) { - ledit_line *l = ledit_buffer_get_line(buffer, line_index); - ledit_buffer_insert_text_from_line_base( + ledit_line *l = buffer_get_line(buffer, line_index); + buffer_insert_text_from_line_base( buffer, line_index + 1, 0, line_index, text_index, l->len - text_index, NULL ); - ledit_buffer_delete_line_section_base( + buffer_delete_line_section_base( buffer, line_index, text_index, l->len - text_index ); @@ -567,20 +567,20 @@ ledit_buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t te /* FIXME: set offset to 0 when recalculating first line? */ void -ledit_buffer_delete_line_entries(ledit_buffer *buffer, size_t index1, size_t index2) { - ledit_buffer_delete_line_entries_base(buffer, index1, index2); - ledit_buffer_recalc_from_line(buffer, index1 > 0 ? index1 - 1 : 0); +buffer_delete_line_entries(ledit_buffer *buffer, size_t index1, size_t index2) { + buffer_delete_line_entries_base(buffer, index1, index2); + buffer_recalc_from_line(buffer, index1 > 0 ? index1 - 1 : 0); } -/* IMPORTANT: ledit_buffer_recalc_from_line needs to be called sometime after this! */ +/* IMPORTANT: buffer_recalc_from_line needs to be called sometime after this! */ void -ledit_buffer_delete_line_entries_base(ledit_buffer *buffer, size_t index1, size_t index2) { +buffer_delete_line_entries_base(ledit_buffer *buffer, size_t index1, size_t index2) { ledit_line *l; assert (index2 >= index1); /* it isn't allowed to delete all lines */ assert(index2 - index1 != buffer->lines_num); for (size_t i = index1; i <= index2; i++) { - l = ledit_buffer_get_line(buffer, i); + l = buffer_get_line(buffer, i); free(l->text); } move_line_gap(buffer, index1); @@ -591,17 +591,17 @@ ledit_buffer_delete_line_entries_base(ledit_buffer *buffer, size_t index1, size_ } void -ledit_buffer_delete_line_entry(ledit_buffer *buffer, size_t index) { - ledit_buffer_delete_line_entries(buffer, index, index); +buffer_delete_line_entry(ledit_buffer *buffer, size_t index) { + buffer_delete_line_entries(buffer, index, index); } void -ledit_buffer_delete_line_entry_base(ledit_buffer *buffer, size_t index) { - ledit_buffer_delete_line_entries_base(buffer, index, index); +buffer_delete_line_entry_base(ledit_buffer *buffer, size_t index) { + buffer_delete_line_entries_base(buffer, index, index); } ledit_line * -ledit_buffer_get_line(ledit_buffer *buffer, size_t index) { +buffer_get_line(ledit_buffer *buffer, size_t index) { assert(index < buffer->lines_num); return index < buffer->lines_gap ? &buffer->lines[index] : @@ -609,38 +609,38 @@ ledit_buffer_get_line(ledit_buffer *buffer, size_t index) { } void -ledit_buffer_recalc_line(ledit_buffer *buffer, size_t line) { +buffer_recalc_line(ledit_buffer *buffer, size_t line) { for (size_t i = 0; i < buffer->views_num; i++) { view_recalc_line(buffer->views[i], line); } } void -ledit_buffer_recalc_from_line(ledit_buffer *buffer, size_t line) { +buffer_recalc_from_line(ledit_buffer *buffer, size_t line) { for (size_t i = 0; i < buffer->views_num; i++) { view_recalc_from_line(buffer->views[i], line); } } void -ledit_buffer_recalc_all_lines(ledit_buffer *buffer) { +buffer_recalc_all_lines(ledit_buffer *buffer) { for (size_t i = 0; i < buffer->views_num; i++) { view_recalc_all_lines(buffer->views[i]); } } size_t -ledit_buffer_textlen(ledit_buffer *buffer, size_t line1, size_t byte1, size_t line2, size_t byte2) { +buffer_textlen(ledit_buffer *buffer, size_t line1, size_t byte1, size_t line2, size_t byte2) { assert(line1 < line2 || (line1 == line2 && byte1 <= byte2)); size_t len = 0; - ledit_line *ll = ledit_buffer_get_line(buffer, line1); + ledit_line *ll = buffer_get_line(buffer, line1); if (line1 == line2) { len = byte2 - byte1; } else { /* + 1 for newline */ len = ll->len - byte1 + byte2 + 1; for (size_t i = line1 + 1; i < line2; i++) { - ll = ledit_buffer_get_line(buffer, i); + ll = buffer_get_line(buffer, i); len += ll->len + 1; } } @@ -654,11 +654,11 @@ ledit_buffer_textlen(ledit_buffer *buffer, size_t line1, size_t byte1, size_t li of pango's requirements). If a more efficient rendering backend is added, it would be good to optimize this, though. */ void -ledit_buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, int line2, int byte2) { +buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, int line2, int byte2) { assert(line1 < line2 || (line1 == line2 && byte1 <= byte2)); - ledit_line *ll1 = ledit_buffer_get_line(buffer, line1); - ledit_line *ll2 = ledit_buffer_get_line(buffer, line2); - ledit_buffer_normalize_line(ll1); + ledit_line *ll1 = buffer_get_line(buffer, line1); + ledit_line *ll2 = buffer_get_line(buffer, line2); + buffer_normalize_line(ll1); if (line1 == line2) { memcpy(dst, ll1->text + byte1, byte2 - byte1); dst[byte2 - byte1] = '\0'; @@ -669,14 +669,14 @@ ledit_buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, in dst[cur_pos] = '\n'; cur_pos++; for (int i = line1 + 1; i < line2; i++) { - ledit_line *ll = ledit_buffer_get_line(buffer, i); - ledit_buffer_normalize_line(ll); + ledit_line *ll = buffer_get_line(buffer, i); + buffer_normalize_line(ll); memcpy(dst + cur_pos, ll->text, ll->len); cur_pos += ll->len; dst[cur_pos] = '\n'; cur_pos++; } - ledit_buffer_normalize_line(ll2); + buffer_normalize_line(ll2); memcpy(dst + cur_pos, ll2->text, byte2); cur_pos += byte2; dst[cur_pos] = '\0'; @@ -684,15 +684,15 @@ ledit_buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, in } void -ledit_buffer_copy_text_to_txtbuf( +buffer_copy_text_to_txtbuf( ledit_buffer *buffer, txtbuf *buf, size_t line1, size_t byte1, size_t line2, size_t byte2) { assert(line1 < line2 || (line1 == line2 && byte1 <= byte2)); - size_t len = ledit_buffer_textlen(buffer, line1, byte1, line2, byte2); + size_t len = buffer_textlen(buffer, line1, byte1, line2, byte2); txtbuf_grow(buf, len + 1); - ledit_buffer_copy_text(buffer, buf->text, line1, byte1, line2, byte2); + buffer_copy_text(buffer, buf->text, line1, byte1, line2, byte2); buf->len = len; } @@ -700,7 +700,7 @@ ledit_buffer_copy_text_to_txtbuf( #define LINE_CHAR(line, i) ((i) < (line)->gap ? (line)->text[i] : (line)->text[i + (line)->cap - (line)->len]) size_t -ledit_line_prev_utf8(ledit_line *line, size_t index) { +line_prev_utf8(ledit_line *line, size_t index) { if (index <= 0) return 0; size_t i = index - 1; @@ -712,7 +712,7 @@ ledit_line_prev_utf8(ledit_line *line, size_t index) { } size_t -ledit_line_next_utf8(ledit_line *line, size_t index) { +line_next_utf8(ledit_line *line, size_t index) { if (index >= line->len) return line->len; size_t i = index + 1; @@ -731,14 +731,14 @@ line_byte_to_char(ledit_line *line, size_t byte) { size_t b = byte > line->len ? line->len : byte; /* maybe not necessary */ while (i < b) { c++; - i = ledit_line_next_utf8(line, i); + i = line_next_utf8(line, i); } return c; } void -ledit_buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, size_t start, size_t length) { - ledit_line *l = ledit_buffer_get_line(buffer, line); +buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, size_t start, size_t length) { + ledit_line *l = buffer_get_line(buffer, line); if (start <= l->gap && start + length >= l->gap) { l->gap = start; } else if (start < l->gap && start + length < l->gap) { @@ -762,23 +762,23 @@ ledit_buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, size_t } size_t -ledit_buffer_delete_unicode_char(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir) { - size_t new_index = ledit_buffer_delete_unicode_char_base(buffer, line_index, byte_index, dir); - ledit_buffer_recalc_line(buffer, line_index); +buffer_delete_unicode_char(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir) { + size_t new_index = buffer_delete_unicode_char_base(buffer, line_index, byte_index, dir); + buffer_recalc_line(buffer, line_index); return new_index; } size_t -ledit_buffer_delete_unicode_char_base(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir) { - ledit_line *l = ledit_buffer_get_line(buffer, line_index); +buffer_delete_unicode_char_base(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir) { + ledit_line *l = buffer_get_line(buffer, line_index); size_t new_index = byte_index; if (dir < 0) { - size_t i = ledit_line_prev_utf8(l, byte_index); - ledit_buffer_delete_line_section_base(buffer, line_index, i, byte_index - i); + size_t i = line_prev_utf8(l, byte_index); + buffer_delete_line_section_base(buffer, line_index, i, byte_index - i); new_index = i; } else { - size_t i = ledit_line_next_utf8(l, byte_index); - ledit_buffer_delete_line_section_base(buffer, line_index, byte_index, i - byte_index); + size_t i = line_next_utf8(l, byte_index); + buffer_delete_line_section_base(buffer, line_index, byte_index, i - byte_index); } return new_index; } diff --git a/buffer.h b/buffer.h @@ -29,7 +29,7 @@ typedef struct { struct ledit_buffer { ledit_common *common; /* common stuff, e.g. display, etc. */ char *filename; /* last opened filename */ - ledit_undo_stack *undo; /* undo manager */ + undo_stack *undo; /* undo manager */ ledit_buffer_marklist *marklist; /* list of mark positions set */ ledit_line *lines; /* array of lines */ ledit_view **views; /* array of registered views */ @@ -46,29 +46,29 @@ struct ledit_buffer { /* * Create a new buffer with one empty line */ -ledit_buffer *ledit_buffer_create(ledit_common *common); +ledit_buffer *buffer_create(ledit_common *common); /* * Set the hard line mode of the buffer and update the * displayed mode in all views. */ -void ledit_buffer_set_hard_line_based(ledit_buffer *buffer, int hl); +void buffer_set_hard_line_based(ledit_buffer *buffer, int hl); /* * Add a new view to the buffer. */ -void ledit_buffer_add_view(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode mode, size_t line, size_t pos); +void buffer_add_view(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode mode, size_t line, size_t pos); /* * Remove the given view from the buffer. * Nothing is done if the view does not belong to the buffer. */ -void ledit_buffer_remove_view(ledit_buffer *buffer, ledit_view *view); +void buffer_remove_view(ledit_buffer *buffer, ledit_view *view); /* * Call 'view_recalc_from_line' for all views. */ -void ledit_buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line); +void buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line); /* * Load a file into the buffer at line 'line'. @@ -78,7 +78,7 @@ void ledit_buffer_recalc_all_views_from_line(ledit_buffer *buffer, size_t line); * with an error message which must be copied as soon as possible because it may * be overwritten by subsequent function calls. */ -int ledit_buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char **errstr); +int buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, char **errstr); /* * Write the buffer to a file. @@ -86,18 +86,18 @@ int ledit_buffer_load_file(ledit_buffer *buffer, char *filename, size_t line, ch * with an error message which must be copied as soon as possible because it may * be overwritten by subsequent function calls. */ -int ledit_buffer_write_to_file(ledit_buffer *buffer, char *filename, char **errstr); +int buffer_write_to_file(ledit_buffer *buffer, char *filename, char **errstr); /* * Destroy a buffer. */ -void ledit_buffer_destroy(ledit_buffer *buffer); +void buffer_destroy(ledit_buffer *buffer); /* * Normalize a line, i.e. move the gap to the end and add '\0' * so the text can be used as a normal string */ -void ledit_buffer_normalize_line(ledit_line *line); +void buffer_normalize_line(ledit_line *line); /* * Insert 'src_len' bytes from 'src_line' starting at byte position 'src_index' @@ -107,7 +107,7 @@ void ledit_buffer_normalize_line(ledit_line *line); * This function does not update the views or normalize the lines, so it should * only be used for efficiency purposes when performing multiple operations. */ -void ledit_buffer_insert_text_from_line_base( +void buffer_insert_text_from_line_base( ledit_buffer *buffer, size_t dst_line, size_t dst_index, size_t src_line, size_t src_index, size_t src_len, @@ -115,9 +115,9 @@ void ledit_buffer_insert_text_from_line_base( ); /* - * Same as ledit_buffer_insert_text_from_line_base, but the views are updated afterwards. + * Same as buffer_insert_text_from_line_base, but the views are updated afterwards. */ -void ledit_buffer_insert_text_from_line( +void buffer_insert_text_from_line( ledit_buffer *buffer, size_t dst_line, size_t dst_index, size_t src_line, size_t src_index, size_t src_len, @@ -130,16 +130,16 @@ void ledit_buffer_insert_text_from_line( * This function does not update the views or normalize the lines, so it should * only be used for efficiency purposes when performing multiple operations. */ -void ledit_buffer_insert_text_base( +void buffer_insert_text_base( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len ); /* - * Same as ledit_buffer_insert_text_base, but the views are updated afterwards. + * Same as buffer_insert_text_base, but the views are updated afterwards. */ -void ledit_buffer_insert_text( +void buffer_insert_text( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len @@ -154,7 +154,7 @@ void ledit_buffer_insert_text( * This function does not update the views or normalize the lines, so it should * only be used for efficiency purposes when performing multiple operations. */ -void ledit_buffer_insert_text_with_newlines_base( +void buffer_insert_text_with_newlines_base( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len, @@ -162,9 +162,9 @@ void ledit_buffer_insert_text_with_newlines_base( ); /* - * Same as ledit_buffer_insert_text_with_newlines_base, but the views are updated afterwards. + * Same as buffer_insert_text_with_newlines_base, but the views are updated afterwards. */ -void ledit_buffer_insert_text_with_newlines( +void buffer_insert_text_with_newlines( ledit_buffer *buffer, size_t line_index, size_t index, char *text, size_t len, @@ -178,51 +178,51 @@ void ledit_buffer_insert_text_with_newlines( * The views are notified that a line has been appended, but not told to update * their line heights and offsets. */ -void ledit_buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text); +void buffer_append_line_base(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text); /* - * Same as ledit_buffer_append_line_base, but the views are told to update + * Same as buffer_append_line_base, but the views are told to update * their line heights and offsets afterwards. */ -void ledit_buffer_append_line(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text); +void buffer_append_line(ledit_buffer *buffer, size_t line_index, size_t text_index, int break_text); /* * Delete lines between 'index1' and 'index2' (inclusive). * The views are notified of the deletion but not told to * update their line heights and offsets. */ -void ledit_buffer_delete_line_entries_base(ledit_buffer *buffer, size_t index1, size_t index2); +void buffer_delete_line_entries_base(ledit_buffer *buffer, size_t index1, size_t index2); /* - * Same as ledit_buffer_delete_line_entries_base, but the views are told to + * Same as buffer_delete_line_entries_base, but the views are told to * update their line heights and offsets. */ -void ledit_buffer_delete_line_entries(ledit_buffer *buffer, size_t index1, size_t index2); +void buffer_delete_line_entries(ledit_buffer *buffer, size_t index1, size_t index2); /* - * Convenience function to call ledit_buffer_delete_line_entries_base + * Convenience function to call buffer_delete_line_entries_base * with two times the same line index. */ -void ledit_buffer_delete_line_entry_base(ledit_buffer *buffer, size_t index); +void buffer_delete_line_entry_base(ledit_buffer *buffer, size_t index); /* - * Convenience function to call ledit_buffer_delete_line_entries + * Convenience function to call buffer_delete_line_entries * with two times the same line index. */ -void ledit_buffer_delete_line_entry(ledit_buffer *buffer, size_t index); +void buffer_delete_line_entry(ledit_buffer *buffer, size_t index); /* * Get the line at logical index 'index'. * The returned line is only valid until the next * action that appends or deletes line entries. */ -ledit_line *ledit_buffer_get_line(ledit_buffer *buffer, size_t index); +ledit_line *buffer_get_line(ledit_buffer *buffer, size_t index); /* * Tell views to recalculate the height of line 'line' and * update the pixel offsets of the following lines. */ -void ledit_buffer_recalc_line(ledit_buffer *buffer, size_t line); +void buffer_recalc_line(ledit_buffer *buffer, size_t line); /* * Tell views to recalculate the height for all lines starting at 'line' @@ -230,13 +230,13 @@ void ledit_buffer_recalc_line(ledit_buffer *buffer, size_t line); * all lines after 'line'. * Also clear the text_dirty attribute for all lines starting at 'line'. */ -void ledit_buffer_recalc_from_line(ledit_buffer *buffer, size_t line); +void buffer_recalc_from_line(ledit_buffer *buffer, size_t line); /* * Tell views to recalculate all lines. * Also clear the text_dirty attribute for all lines. */ -void ledit_buffer_recalc_all_lines(ledit_buffer *buffer); +void buffer_recalc_all_lines(ledit_buffer *buffer); /* * Get needed length of text range, including newlines. @@ -244,21 +244,21 @@ void ledit_buffer_recalc_all_lines(ledit_buffer *buffer); * - if the last range ends at the end of a line, the newline is *not* included * - the range must be sorted already */ -size_t ledit_buffer_textlen(ledit_buffer *buffer, size_t line1, size_t byte1, size_t line2, size_t byte2); +size_t buffer_textlen(ledit_buffer *buffer, size_t line1, size_t byte1, size_t line2, size_t byte2); /* * Copy text range into given buffer. * - dst is null-terminated - * - dst must be large enough to contain the text and NUL (only use this together with ledit_buffer_textlen) + * - dst must be large enough to contain the text and NUL (only use this together with buffer_textlen) * - the range must be sorted already */ -void ledit_buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, int line2, int byte2); +void buffer_copy_text(ledit_buffer *buffer, char *dst, int line1, int byte1, int line2, int byte2); /* * Copy text range into given buffer and resize it if necessary. * - the range must be sorted already */ -void ledit_buffer_copy_text_to_txtbuf( +void buffer_copy_text_to_txtbuf( ledit_buffer *buffer, txtbuf *buf, /* oh, isn't that a very non-confusing name? */ size_t line1, size_t byte1, @@ -268,12 +268,12 @@ void ledit_buffer_copy_text_to_txtbuf( /* * Get the byte index of the previous utf8 character starting at byte index 'index'. */ -size_t ledit_line_next_utf8(ledit_line *line, size_t index); +size_t line_next_utf8(ledit_line *line, size_t index); /* * Get the byte index of the previous utf8 character starting at byte index 'index'. */ -size_t ledit_line_prev_utf8(ledit_line *line, size_t index); +size_t line_prev_utf8(ledit_line *line, size_t index); /* * Get the unicode character index of a byte position. @@ -285,7 +285,7 @@ size_t line_byte_to_char(ledit_line *line, size_t byte); * and notify the views. * Note that this does not tell the views to recalculate their line heights and offsets. */ -void ledit_buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, size_t start, size_t length); +void buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, size_t start, size_t length); /* * Delete the unicode char at 'line_index' and 'byte_index' if 'dir' is >= 0, @@ -294,16 +294,16 @@ void ledit_buffer_delete_line_section_base(ledit_buffer *buffer, size_t line, si * This function only notifies the views of the deletion, but does not tell * them to recalculate their line heights and offsets. */ -size_t ledit_buffer_delete_unicode_char_base(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir); +size_t buffer_delete_unicode_char_base(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir); /* - * Same as ledit_buffer_delete_unicode_char_base, but the views are updated. + * Same as buffer_delete_unicode_char_base, but the views are updated. */ -size_t ledit_buffer_delete_unicode_char(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir); +size_t buffer_delete_unicode_char(ledit_buffer *buffer, size_t line_index, size_t byte_index, int dir); /* * Insert a mark with key 'mark' at line 'line' and byte 'byte'. */ -void ledit_buffer_insert_mark(ledit_buffer *buffer, char *mark, size_t len, size_t line, size_t byte); +void buffer_insert_mark(ledit_buffer *buffer, char *mark, size_t len, size_t line, size_t byte); #endif diff --git a/keys_basic.c b/keys_basic.c @@ -180,7 +180,7 @@ clear_key_stack(void) { static struct action err_invalid_key(ledit_view *view) { - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); clear_key_stack(); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; @@ -423,7 +423,7 @@ delete_range( ); cur_range.line2 = view->cur_line; cur_range.byte2 = view->cur_index; - ledit_push_undo_delete( + undo_push_delete( view->buffer->undo, buf, del_range, cur_range, 1, view->mode ); if (!copy_to_buffer) @@ -450,7 +450,7 @@ insert_text( del_range.line1 = line; del_range.byte1 = index; size_t cur_line, cur_index; - ledit_buffer_insert_text_with_newlines( + buffer_insert_text_with_newlines( view->buffer, line, index, text, len, &cur_line, &cur_index ); @@ -465,7 +465,7 @@ insert_text( } del_range.line2 = cur_line; del_range.byte2 = cur_index; - ledit_push_undo_insert( + undo_push_insert( view->buffer->undo, &ins_buf, del_range, cur_range, start_group, view->mode ); } @@ -494,7 +494,7 @@ delete_chars_forwards(ledit_view *view, char *text, size_t len) { (void)len; int num = get_key_repeat(); if (num == -1) { - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); return (struct action){ACTION_NONE, NULL}; } else if (num == 0) { num = 1; @@ -521,7 +521,7 @@ delete_chars_backwards(ledit_view *view, char *text, size_t len) { (void)len; int num = get_key_repeat(); if (num == -1) { - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); return (struct action){ACTION_NONE, NULL}; } else if (num == 0) { num = 1; @@ -550,7 +550,7 @@ push_undo_empty_insert(ledit_view *view, size_t line, size_t index, int start_gr txtbuf ins_buf = {.text = "", .len = 0, .cap = 0}; ledit_range ins_range = {.line1 = line, .byte1 = index, .line2 = line, .byte2 = index}; ledit_range cur_range = {.line1 = line, .byte1 = index, .line2 = line, .byte2 = index}; - ledit_push_undo_insert( + undo_push_insert( view->buffer->undo, &ins_buf, ins_range, cur_range, start_group, view->mode ); } @@ -575,7 +575,7 @@ append_line_below(ledit_view *view, char *text, size_t len) { size_t start, end; enter_insert(view, text, len); view_get_pos_softline_bounds(view, view->cur_line, view->cur_index, &start, &end); - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); if (hard_line_based || end == ll->len) { insert_text(view, view->cur_line, ll->len, "\n", 1, 0, 0, view->cur_line + 1, 0, 0, 1, 1); } else { @@ -602,7 +602,7 @@ append_after_eol(ledit_view *view, char *text, size_t len) { view_get_pos_softline_bounds(view, view->cur_line, view->cur_index, &start, &end); /* make cursor jump back to original position on undo */ push_undo_empty_insert(view, view->cur_line, view->cur_index, 1); - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); if (hard_line_based) view->cur_index = ll->len; else @@ -630,7 +630,7 @@ move_to_line(ledit_view *view, char *text, size_t len) { view->cur_line = line - 1; view->cur_index = 0; int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); ledit_view_line *vl = view_get_line(view, view->cur_line); int x, y, h; view_get_cursor_pixel_pos(view, view->cur_line, 0, &x, &y, &h); @@ -659,7 +659,7 @@ scroll_lines(ledit_view *view, int lines, int dir) { /* get the middle position of char */ ledit_pos_to_x_softline(view, view->cur_line, view->cur_index, &x, &sli); long abs_pos = vl->y_offset + y; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); if (lines > 0) final_lines = last_lines_scrolled = lines; else @@ -689,7 +689,7 @@ scroll_lines_up(ledit_view *view, char *text, size_t len) { if (repeat >= 0) scroll_lines(view, repeat, -1); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -702,7 +702,7 @@ scroll_lines_down(ledit_view *view, char *text, size_t len) { if (repeat >= 0) scroll_lines(view, repeat, 1); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -744,7 +744,7 @@ scroll_with_cursor_up(ledit_view *view, char *text, size_t len) { if (repeat >= 0) scroll_with_cursor(view, -(repeat == 0 ? 1 : repeat)); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -757,7 +757,7 @@ scroll_with_cursor_down(ledit_view *view, char *text, size_t len) { if (repeat >= 0) scroll_with_cursor(view, repeat == 0 ? 1 : repeat); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -770,7 +770,7 @@ scroll_with_cursor_down(ledit_view *view, char *text, size_t len) { static void move_half_screen(ledit_view *view, int movement) { int w, h; - ledit_window_get_textview_size(view->window, &w, &h); + window_get_textview_size(view->window, &w, &h); /* FIXME: overflow */ int total = movement * h/2; ledit_view_line *vl = view_get_line(view, view->cur_line); @@ -825,7 +825,7 @@ screen_up(ledit_view *view, char *text, size_t len) { if (repeat >= 0) move_half_screen(view, -(repeat == 0 ? 2 : repeat*2)); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -838,7 +838,7 @@ screen_down(ledit_view *view, char *text, size_t len) { if (repeat >= 0) move_half_screen(view, repeat == 0 ? 2 : repeat*2); else - ledit_window_show_message(view->window, "Invalid key", -1); + window_show_message(view->window, "Invalid key", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -850,7 +850,7 @@ delete_to_eol(ledit_view *view, char *text, size_t len) { if (!key_stack_empty()) return err_invalid_key(view); size_t start, end; - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); if (hard_line_based) { end = ll->len; } else { @@ -877,7 +877,7 @@ change_to_eol(ledit_view *view, char *text, size_t len) { return err_invalid_key(view); view_set_mode(view, INSERT); size_t start, end; - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); if (hard_line_based) { end = ll->len; } else { @@ -947,7 +947,7 @@ change_cb(ledit_view *view, size_t line, size_t char_pos, enum key_type type) { view_get_pos_softline_bounds(view, line, char_pos, &tmp, &pos2); } else if (line_based && hard_line_based) { pos1 = 0; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); pos2 = ll->len; } /* force line_based to 0 (see comment about hackery above) */ @@ -970,7 +970,7 @@ yank(ledit_view *view, char *text, size_t len) { view_sort_selection( &view->sel.line1, &view->sel.byte1, &view->sel.line2, &view->sel.byte2 ); - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, paste_buffer, view->sel.line1, view->sel.byte1, view->sel.line2, view->sel.byte2 ); @@ -1049,26 +1049,26 @@ yank_cb(ledit_view *view, size_t line, size_t char_pos, enum key_type type) { size_t start1, end2, tmp; view_get_pos_softline_bounds(view, l1, b1, &start1, &tmp); view_get_pos_softline_bounds(view, l2, b2, &tmp, &end2); - ledit_line *ll = ledit_buffer_get_line(view->buffer, l2); + ledit_line *ll = buffer_get_line(view->buffer, l2); if (end2 == ll->len && l2 < view->lines_num - 1) { l2++; end2 = 0; } - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, paste_buffer, l1, start1, l2, end2 ); } else if (line_based && hard_line_based) { - ledit_line *ll = ledit_buffer_get_line(view->buffer, l2); + ledit_line *ll = buffer_get_line(view->buffer, l2); size_t end = ll->len; if (l2 < view->lines_num - 1) { l2++; end = 0; } - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, paste_buffer, l1, 0, l2, end ); } else { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, paste_buffer, l1, b1, l2, b2 ); } @@ -1138,13 +1138,13 @@ paste_normal(ledit_view *view, char *text, size_t len) { (void)text; (void)len; if (!paste_buffer) { - ledit_window_show_message(view->window, "Nothing to paste", -1); + window_show_message(view->window, "Nothing to paste", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } if (paste_buffer_line_based) { view_wipe_line_cursor_attrs(view, view->cur_line); - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); size_t brk = 0; if (hard_line_based) { brk = ll->len; @@ -1157,7 +1157,7 @@ paste_normal(ledit_view *view, char *text, size_t len) { "\n", 1, 0, 0, view->cur_line, view->cur_index, 0, 1, 1 ); size_t text_len = paste_buffer->len; - ll = ledit_buffer_get_line(view->buffer, view->cur_line + 1); + ll = buffer_get_line(view->buffer, view->cur_line + 1); if (ll->len == 0 && paste_buffer->text[text_len-1] == '\n') { /* remove trailing newline if it exists and text is already on own line */ text_len--; @@ -1194,13 +1194,13 @@ paste_normal_backwards(ledit_view *view, char *text, size_t len) { (void)text; (void)len; if (!paste_buffer) { - ledit_window_show_message(view->window, "Nothing to paste", -1); + window_show_message(view->window, "Nothing to paste", -1); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } if (paste_buffer_line_based) { view_wipe_line_cursor_attrs(view, view->cur_line); - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); size_t brk = 0; if (!hard_line_based) { size_t tmp; @@ -1212,7 +1212,7 @@ paste_normal_backwards(ledit_view *view, char *text, size_t len) { "\n", 1, 0, 0, view->cur_line, view->cur_index, 0, 1, 1 ); size_t text_len = paste_buffer->len; - ll = ledit_buffer_get_line(view->buffer, view->cur_line); + ll = buffer_get_line(view->buffer, view->cur_line); if (paste_buffer->text[text_len-1] == '\n') { /* remove trailing newline if it exists */ text_len--; @@ -1363,12 +1363,12 @@ backspace(ledit_view *view, char *text, size_t len) { /* NOP */ } else if (view->cur_index == 0) { if (view->cur_line != 0) { - ledit_line *l1 = ledit_buffer_get_line(view->buffer, view->cur_line - 1); + ledit_line *l1 = buffer_get_line(view->buffer, view->cur_line - 1); delete_range(view, 0, 0, view->cur_line - 1, l1->len, view->cur_line, 0, 0); } } else { - ledit_line *l = ledit_buffer_get_line(view->buffer, view->cur_line); - int i = ledit_line_prev_utf8(l, view->cur_index); + ledit_line *l = buffer_get_line(view->buffer, view->cur_line); + int i = line_prev_utf8(l, view->cur_index); delete_range(view, 0, 0, view->cur_line, view->cur_index, view->cur_line, i, 0); } return (struct action){ACTION_NONE, NULL}; @@ -1378,7 +1378,7 @@ static struct action delete_key(ledit_view *view, char *text, size_t len) { (void)text; (void)len; - ledit_line *cur_line = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *cur_line = buffer_get_line(view->buffer, view->cur_line); if (delete_selection(view)) { /* NOP */ } else if (view->cur_index == cur_line->len) { @@ -1386,7 +1386,7 @@ delete_key(ledit_view *view, char *text, size_t len) { delete_range(view, 0, 0, view->cur_line, cur_line->len, view->cur_line + 1, 0, 0); } } else { - int i = ledit_line_next_utf8(cur_line, view->cur_index); + int i = line_next_utf8(cur_line, view->cur_index); delete_range(view, 0, 0, view->cur_line, view->cur_index, view->cur_line, i, 0); } /* FIXME: This was probably a mistake earlier, right? @@ -1411,7 +1411,7 @@ move_to_eol(ledit_view *view, char *text, size_t len) { view, view->cur_line, view->cur_index, num - 1, &new_line, &new_softline ); - ledit_line *ll = ledit_buffer_get_line(view->buffer, new_line); + ledit_line *ll = buffer_get_line(view->buffer, new_line); size_t end_index = ll->len; if (!hard_line_based) { size_t tmp; @@ -1461,7 +1461,7 @@ name(ledit_view *view, char *text, size_t len) { if (cb != NULL) { \ cb(view, new_line, new_real_index, KEY_MOTION_CHAR); \ } else { \ - if (view->mode == VISUAL) { \ + if (view->mode == VISUAL) { \ view_set_selection( \ view, \ view->sel.line1, view->sel.byte1, \ @@ -1502,7 +1502,7 @@ move_cursor_left_right(ledit_view *view, int dir, int allow_illegal_index) { if (num == 0) num = 1; - ledit_line *cur_line = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *cur_line = buffer_get_line(view->buffer, view->cur_line); /* FIXME: standardize interface - num * dir or separately? */ size_t last_index; size_t new_index = view_move_cursor_visually( @@ -1693,7 +1693,7 @@ join_lines(ledit_view *view, char *text, size_t len) { /* getting cur line again should be unnecessary, but I'll just leave it in case I change the way lines are stored later */ - ll1 = ledit_buffer_get_line(view->buffer, cur_line); + ll1 = buffer_get_line(view->buffer, cur_line); oldlen = ll1->len; /* FIXME: truncate whitespace to one space */ view_delete_range( @@ -1704,7 +1704,7 @@ join_lines(ledit_view *view, char *text, size_t len) { cur_range.byte1 = view->cur_index; cur_range.byte2 = view->cur_index = view_get_legal_normal_pos(view, view->cur_line, oldlen); - ledit_push_undo_delete( + undo_push_delete( view->buffer->undo, buf, del_range, cur_range, start_group, view->mode ); @@ -1833,46 +1833,46 @@ static struct action enter_commandedit(ledit_view *view, char *text, size_t len) { (void)text; (void)len; - ledit_window_set_bottom_bar_text(view->window, ":", -1); - ledit_window_set_bottom_bar_min_pos(view->window, 1); - ledit_window_set_bottom_bar_cursor(view->window, 1); + window_set_bottom_bar_text(view->window, ":", -1); + window_set_bottom_bar_min_pos(view->window, 1); + window_set_bottom_bar_cursor(view->window, 1); view->cur_command_type = CMD_EDIT; - ledit_window_set_bottom_bar_text_shown(view->window, 1); + window_set_bottom_bar_text_shown(view->window, 1); discard_repetition_stack(); - return (struct action){ACTION_GRABKEY, &ledit_command_key_handler}; + return (struct action){ACTION_GRABKEY, &command_key_handler}; } static struct action enter_searchedit_forward(ledit_view *view, char *text, size_t len) { (void)text; (void)len; - ledit_window_set_bottom_bar_text(view->window, "/", -1); - ledit_window_set_bottom_bar_min_pos(view->window, 1); - ledit_window_set_bottom_bar_cursor(view->window, 1); + window_set_bottom_bar_text(view->window, "/", -1); + window_set_bottom_bar_min_pos(view->window, 1); + window_set_bottom_bar_cursor(view->window, 1); view->cur_command_type = CMD_EDITSEARCH; - ledit_window_set_bottom_bar_text_shown(view->window, 1); + window_set_bottom_bar_text_shown(view->window, 1); discard_repetition_stack(); - return (struct action){ACTION_GRABKEY, &ledit_command_key_handler}; + return (struct action){ACTION_GRABKEY, &command_key_handler}; } static struct action enter_searchedit_backward(ledit_view *view, char *text, size_t len) { (void)text; (void)len; - ledit_window_set_bottom_bar_text(view->window, "?", -1); - ledit_window_set_bottom_bar_min_pos(view->window, 1); - ledit_window_set_bottom_bar_cursor(view->window, 1); + window_set_bottom_bar_text(view->window, "?", -1); + window_set_bottom_bar_min_pos(view->window, 1); + window_set_bottom_bar_cursor(view->window, 1); view->cur_command_type = CMD_EDITSEARCHB; - ledit_window_set_bottom_bar_text_shown(view->window, 1); + window_set_bottom_bar_text_shown(view->window, 1); discard_repetition_stack(); - return (struct action){ACTION_GRABKEY, &ledit_command_key_handler}; + return (struct action){ACTION_GRABKEY, &command_key_handler}; } /* FIXME: differentiate between jumping to line and index like nvi */ static struct action mark_line_cb(ledit_view *view, char *text, size_t len) { grab_char_cb = NULL; - ledit_buffer_insert_mark( + buffer_insert_mark( view->buffer, text, len, view->cur_line, view->cur_index ); return (struct action){ACTION_NONE, NULL}; @@ -1896,11 +1896,11 @@ jump_to_mark_cb(ledit_view *view, char *text, size_t len) { ledit_buffer_mark *m = &marklist->marks[i]; if (m->line >= view->lines_num) { line = view->lines_num - 1; - ll = ledit_buffer_get_line(view->buffer, line); + ll = buffer_get_line(view->buffer, line); index = ll->len; } else { line = m->line; - ll = ledit_buffer_get_line(view->buffer, m->line); + ll = buffer_get_line(view->buffer, m->line); if (m->byte >= ll->len) index = ll->len; else @@ -1983,7 +1983,7 @@ show_line(ledit_view *view, char *text, size_t len) { int textlen = snprintf(NULL, 0, "Line %zu of %zu", view->cur_line + 1, view->lines_num); char *str = ledit_malloc(textlen + 1); snprintf(str, textlen + 1, "Line %zu of %zu", view->cur_line + 1, view->lines_num); - ledit_window_show_message(view->window, str, textlen); + window_show_message(view->window, str, textlen); discard_repetition_stack(); return (struct action){ACTION_NONE, NULL}; } @@ -2101,7 +2101,7 @@ name##_cb(ledit_view *view, char *text, size_t len) { return err_invalid_key(view); \ if (num == 0) \ num = 1; \ - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->cur_line); \ + ledit_line *ll = buffer_get_line(view->buffer, view->cur_line); \ size_t new_index = view->cur_index; \ int ret = -1; \ for (int i = 0; i < num; i++) { \ @@ -2118,7 +2118,7 @@ name##_cb(ledit_view *view, char *text, size_t len) { ); \ cb(view, view->cur_line, new_index, KEY_MOTION_CHAR); \ } else { \ - if (view->mode == VISUAL) { \ + if (view->mode == VISUAL) { \ view->cur_index = cur_funcv( \ view, view->cur_line, new_index, 1 \ ); \ @@ -2145,7 +2145,7 @@ name##_cb(ledit_view *view, char *text, size_t len) { \ static struct action \ name(ledit_view *view, char *text, size_t len) { \ - (void)view; \ + (void)view; \ (void)text; \ (void)len; \ grab_char_cb = &name##_cb; \ @@ -2215,7 +2215,7 @@ toggle_hard_line_based(ledit_view *view, char *text, size_t len) { int num = get_key_repeat(); if (num != 0) return err_invalid_key(view); - ledit_buffer_set_hard_line_based(view->buffer, !view->buffer->hard_line_based); + buffer_set_hard_line_based(view->buffer, !view->buffer->hard_line_based); return (struct action){ACTION_NONE, NULL}; } @@ -2295,7 +2295,7 @@ basic_key_handler(ledit_view *view, XEvent *event, int lang_index) { re->lang_index = lang_index; /* FIXME: only hide when actually necessary */ - ledit_window_hide_message(view->window); + window_hide_message(view->window); int found = 0; struct action act = handle_key(view, buf, (size_t)n, sym, key_state, lang_index, &found); diff --git a/keys_command.c b/keys_command.c @@ -47,7 +47,7 @@ handle_write(ledit_view *view, char *cmd, size_t l1, size_t l2) { /* FIXME: Implement properly; handle error */ char *errstr; if (view->buffer->filename) - ledit_buffer_write_to_file(view->buffer, view->buffer->filename, &errstr); + buffer_write_to_file(view->buffer, view->buffer->filename, &errstr); return 0; } @@ -68,7 +68,7 @@ create_view(ledit_view *view, char *cmd, size_t l1, size_t l2) { (void)cmd; (void)l1; (void)l2; - ledit_buffer_add_view(view->buffer, view->theme, view->mode, view->cur_line, view->cur_index); + buffer_add_view(view->buffer, view->theme, view->mode, view->cur_line, view->cur_index); return 0; } @@ -79,7 +79,7 @@ close_view(ledit_view *view, char *cmd, size_t l1, size_t l2) { (void)l2; /* FIXME: This will lead to problems if I add something that requires access to the view after the command is handled. */ - ledit_buffer_remove_view(view->buffer, view); + buffer_remove_view(view->buffer, view); if (view->buffer->views_num == 0) { ledit_cleanup(); exit(0); @@ -264,8 +264,8 @@ substitute_no_all(ledit_view *view, char *key_text, size_t len) { static int edit_insert_text(ledit_view *view, char *key_text, size_t len) { /* FIXME: overflow */ - ledit_window_insert_bottom_bar_text(view->window, key_text, len); - ledit_window_set_bottom_bar_cursor( + window_insert_bottom_bar_text(view->window, key_text, len); + window_set_bottom_bar_cursor( view->window, ledit_window_get_bottom_bar_cursor(view->window) + len ); return 1; @@ -275,7 +275,7 @@ static int edit_cursor_to_end(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_bottom_bar_cursor_to_end(view->window); + window_bottom_bar_cursor_to_end(view->window); return 1; } @@ -283,7 +283,7 @@ static int edit_cursor_to_beginning(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_bottom_bar_cursor_to_beginning(view->window); + window_bottom_bar_cursor_to_beginning(view->window); return 1; } @@ -291,7 +291,7 @@ static int edit_cursor_left(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_move_bottom_bar_cursor(view->window, -1); + window_move_bottom_bar_cursor(view->window, -1); return 1; } @@ -299,7 +299,7 @@ static int edit_cursor_right(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_move_bottom_bar_cursor(view->window, 1); + window_move_bottom_bar_cursor(view->window, 1); return 1; } @@ -307,7 +307,7 @@ static int edit_backspace(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_delete_bottom_bar_char(view->window, -1); + window_delete_bottom_bar_char(view->window, -1); return 1; } @@ -315,7 +315,7 @@ static int edit_delete(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_delete_bottom_bar_char(view->window, 1); + window_delete_bottom_bar_char(view->window, 1); return 1; } @@ -323,9 +323,9 @@ static int edit_submit(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_set_bottom_bar_text_shown(view->window, 0); + window_set_bottom_bar_text_shown(view->window, 0); /* FIXME: this is hacky */ - return handle_cmd(view, ledit_window_get_bottom_bar_text(view->window) + 1, -1); + return handle_cmd(view, window_get_bottom_bar_text(view->window) + 1, -1); } /* FIXME: support visual mode, i.e. change selection to new place? */ @@ -335,7 +335,7 @@ search_next(ledit_view *view) { enum ledit_search_state ret = ledit_search_next(view, &view->cur_line, &view->cur_index); view_set_line_cursor_attrs(view, view->cur_line, view->cur_index); if (ret != SEARCH_NORMAL) - ledit_window_show_message(view->window, ledit_search_state_to_str(ret), -1); + window_show_message(view->window, search_state_to_str(ret), -1); } void @@ -344,15 +344,15 @@ search_prev(ledit_view *view) { enum ledit_search_state ret = ledit_search_prev(view, &view->cur_line, &view->cur_index); view_set_line_cursor_attrs(view, view->cur_line, view->cur_index); if (ret != SEARCH_NORMAL) - ledit_window_show_message(view->window, ledit_search_state_to_str(ret), -1); + window_show_message(view->window, search_state_to_str(ret), -1); } static int editsearch_submit(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_set_bottom_bar_text_shown(view->window, 0); - ledit_set_search_forward(ledit_window_get_bottom_bar_text(view->window) + 1); + window_set_bottom_bar_text_shown(view->window, 0); + set_search_forward(window_get_bottom_bar_text(view->window) + 1); search_next(view); return 0; } @@ -361,8 +361,8 @@ static int editsearchb_submit(ledit_view *view, char *key_text, size_t len) { (void)key_text; (void)len; - ledit_window_set_bottom_bar_text_shown(view->window, 0); - ledit_set_search_backward(ledit_window_get_bottom_bar_text(view->window) + 1); + window_set_bottom_bar_text_shown(view->window, 0); + set_search_backward(window_get_bottom_bar_text(view->window) + 1); search_next(view); return 0; } @@ -372,12 +372,12 @@ edit_discard(ledit_view *view, char *key_text, size_t len) { (void)view; (void)key_text; (void)len; - ledit_window_set_bottom_bar_text_shown(view->window, 0); + window_set_bottom_bar_text_shown(view->window, 0); return 0; } struct action -ledit_command_key_handler(ledit_view *view, XEvent *event, int lang_index) { +command_key_handler(ledit_view *view, XEvent *event, int lang_index) { char buf[64]; KeySym sym; int n; @@ -404,7 +404,7 @@ ledit_command_key_handler(ledit_view *view, XEvent *event, int lang_index) { } } if (grabkey) - return (struct action){ACTION_GRABKEY, &ledit_command_key_handler}; + return (struct action){ACTION_GRABKEY, &command_key_handler}; else return (struct action){ACTION_NONE, NULL}; } diff --git a/keys_command.h b/keys_command.h @@ -2,4 +2,4 @@ void search_next(ledit_view *view); void search_prev(ledit_view *view); -struct action ledit_command_key_handler(ledit_view *view, XEvent *event, int lang_index); +struct action command_key_handler(ledit_view *view, XEvent *event, int lang_index); diff --git a/ledit.c b/ledit.c @@ -1,3 +1,6 @@ +/* FIXME: On large files, expose event takes a long time for some reason + -> but somehow only sometimes... */ +/* FIXME: generally optimize redrawing */ /* FIXME: Just use int for everything? size_t just doesn't seem to be worth it */ /* FIXME: Make scrolling more smooth */ /* FIXME: Document that everything is assumed to be utf8 */ @@ -119,23 +122,23 @@ mainloop(void) { view->redraw = 1; break; case ConfigureNotify: - ledit_window_register_resize(view->window, &event); + window_register_resize(view->window, &event); break; case ButtonPress: - ledit_window_register_button_press(view->window, &event); + window_register_button_press(view->window, &event); break; case ButtonRelease: - ledit_window_button_release(view->window, &event); + window_button_release(view->window, &event); break; case MotionNotify: - ledit_window_register_motion(window, &event); + window_register_motion(window, &event); break; case KeyPress: key_press(view, &event); break; case ClientMessage: if ((Atom)event.xclient.data.l[0] == view->window->wm_delete_msg) { - ledit_buffer_remove_view(buffer, view); + buffer_remove_view(buffer, view); if (buffer->views_num == 0) running = 0; } @@ -143,7 +146,7 @@ mainloop(void) { case SelectionNotify: case PropertyNotify: case SelectionRequest: - ledit_window_clipboard_event(view->window, &event); + window_clipboard_event(view->window, &event); break; default: break; @@ -151,7 +154,7 @@ mainloop(void) { }; for (size_t i = 0; i < buffer->views_num; i++) { - ledit_window_handle_filtered_events(buffer->views[i]->window); + window_handle_filtered_events(buffer->views[i]->window); } if (change_kbd) { @@ -229,12 +232,12 @@ setup(int argc, char *argv[]) { common.depth = DefaultDepth(common.dpy, common.screen); common.cm = DefaultColormap(common.dpy, common.screen); - theme = ledit_theme_create(&common); - buffer = ledit_buffer_create(&common); + theme = theme_create(&common); + buffer = buffer_create(&common); /* FIXME: Support multiple buffers/files */ if (argc > 1) { char *load_err; - if (ledit_buffer_load_file(buffer, argv[1], 0, &load_err)) { + if (buffer_load_file(buffer, argv[1], 0, &load_err)) { fprintf(stderr, "Error opening file '%s': %s\n", argv[1], load_err); ledit_cleanup(); exit(1); @@ -242,7 +245,7 @@ setup(int argc, char *argv[]) { /* FIXME: encapsulate */ buffer->filename = ledit_strdup(argv[1]); } - ledit_buffer_add_view(buffer, theme, NORMAL, 0, 0); + buffer_add_view(buffer, theme, NORMAL, 0, 0); /* FIXME: don't access view directly here */ ledit_view *view = buffer->views[0]; view_set_line_cursor_attrs(view, view->cur_line, view->cur_index); @@ -253,12 +256,12 @@ setup(int argc, char *argv[]) { void ledit_cleanup(void) { /* FIXME: check for other things to clean up */ - ledit_search_cleanup(); + search_cleanup(); basic_key_cleanup(); if (buffer) - ledit_buffer_destroy(buffer); + buffer_destroy(buffer); if (theme) - ledit_theme_destroy(&common, theme); + theme_destroy(&common, theme); XCloseDisplay(common.dpy); } diff --git a/search.c b/search.c @@ -26,19 +26,19 @@ enum { } last_dir = FORWARD; void -ledit_search_cleanup(void) { +search_cleanup(void) { free(last_search); } void -ledit_set_search_forward(char *pattern) { +set_search_forward(char *pattern) { last_dir = FORWARD; free(last_search); last_search = ledit_strdup(pattern); } void -ledit_set_search_backward(char *pattern) { +set_search_backward(char *pattern) { last_dir = BACKWARD; free(last_search); last_search = ledit_strdup(pattern); @@ -55,16 +55,16 @@ search_forward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { note: since the string ends with '\0', this is always valid */ size_t byte = view->cur_index + 1; char *res; - ledit_line *lline = ledit_buffer_get_line(view->buffer, line); - ledit_buffer_normalize_line(lline); + ledit_line *lline = buffer_get_line(view->buffer, line); + buffer_normalize_line(lline); if ((res = strstr(lline->text + byte, last_search)) != NULL) { *line_ret = line; *byte_ret = (size_t)(res - lline->text); return SEARCH_NORMAL; } for (size_t i = line + 1; i < view->lines_num; i++) { - lline = ledit_buffer_get_line(view->buffer, i); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, i); + buffer_normalize_line(lline); if ((res = strstr(lline->text, last_search)) != NULL) { *line_ret = i; *byte_ret = (size_t)(res - lline->text); @@ -72,16 +72,16 @@ search_forward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { } } for (size_t i = 0; i < line; i++) { - lline = ledit_buffer_get_line(view->buffer, i); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, i); + buffer_normalize_line(lline); if ((res = strstr(lline->text, last_search)) != NULL) { *line_ret = i; *byte_ret = (size_t)(res - lline->text); return SEARCH_WRAPPED; } } - lline = ledit_buffer_get_line(view->buffer, line); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, line); + buffer_normalize_line(lline); if ((res = strstr(lline->text, last_search)) != NULL) { *line_ret = line; *byte_ret = (size_t)(res - lline->text); @@ -100,8 +100,8 @@ search_backward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { return SEARCH_NO_PATTERN; size_t line = view->cur_line; size_t byte = view->cur_index; - ledit_line *lline = ledit_buffer_get_line(view->buffer, line); - ledit_buffer_normalize_line(lline); + ledit_line *lline = buffer_get_line(view->buffer, line); + buffer_normalize_line(lline); char *last = NULL, *res = lline->text; while ((res = strstr(res, last_search)) != NULL && res < lline->text + byte) { last = res; @@ -114,8 +114,8 @@ search_backward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { return SEARCH_NORMAL; } for (size_t i = line; i > 0; i--) { - lline = ledit_buffer_get_line(view->buffer, i-1); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, i-1); + buffer_normalize_line(lline); res = lline->text; while ((res = strstr(res, last_search)) != NULL) { last = res; @@ -128,8 +128,8 @@ search_backward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { } } for (size_t i = view->lines_num - 1; i > line; i--) { - lline = ledit_buffer_get_line(view->buffer, i); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, i); + buffer_normalize_line(lline); res = lline->text; while ((res = strstr(res, last_search)) != NULL) { last = res; @@ -141,8 +141,8 @@ search_backward(ledit_view *view, size_t *line_ret, size_t *byte_ret) { return SEARCH_WRAPPED; } } - lline = ledit_buffer_get_line(view->buffer, line); - ledit_buffer_normalize_line(lline); + lline = buffer_get_line(view->buffer, line); + buffer_normalize_line(lline); res = lline->text + byte; while ((res = strstr(res, last_search)) != NULL) { last = res; @@ -173,7 +173,7 @@ ledit_search_prev(ledit_view *view, size_t *line_ret, size_t *byte_ret) { } char * -ledit_search_state_to_str(enum ledit_search_state state) { +search_state_to_str(enum ledit_search_state state) { switch (state) { case SEARCH_WRAPPED: return "Search wrapped"; diff --git a/search.h b/search.h @@ -5,9 +5,9 @@ enum ledit_search_state { SEARCH_NO_PATTERN }; -void ledit_search_cleanup(void); -void ledit_set_search_forward(char *pattern); -void ledit_set_search_backward(char *pattern); +void search_cleanup(void); +void set_search_forward(char *pattern); +void set_search_backward(char *pattern); enum ledit_search_state ledit_search_next(ledit_view *view, size_t *line_ret, size_t *byte_ret); enum ledit_search_state ledit_search_prev(ledit_view *view, size_t *line_ret, size_t *byte_ret); -char *ledit_search_state_to_str(enum ledit_search_state state); +char *search_state_to_str(enum ledit_search_state state); diff --git a/theme.c b/theme.c @@ -9,7 +9,7 @@ #include "theme_config.h" ledit_theme * -ledit_theme_create(ledit_common *common) { +theme_create(ledit_common *common) { ledit_theme *theme = ledit_malloc(sizeof(ledit_theme)); theme->scrollbar_width = SCROLLBAR_WIDTH; theme->scrollbar_step = SCROLLBAR_STEP; @@ -26,7 +26,7 @@ ledit_theme_create(ledit_common *common) { } void -ledit_theme_destroy(ledit_common *common, ledit_theme *theme) { +theme_destroy(ledit_common *common, ledit_theme *theme) { XftColorFree(common->dpy, common->vis, common->cm, &theme->text_fg); XftColorFree(common->dpy, common->vis, common->cm, &theme->text_bg); XftColorFree(common->dpy, common->vis, common->cm, &theme->scrollbar_fg); diff --git a/theme.h b/theme.h @@ -12,5 +12,5 @@ typedef struct { const char *scrollbar_bg_hex; } ledit_theme; -ledit_theme *ledit_theme_create(ledit_common *common); -void ledit_theme_destroy(ledit_common *common, ledit_theme *theme); +ledit_theme *theme_create(ledit_common *common); +void theme_destroy(ledit_common *common, ledit_theme *theme); diff --git a/undo.c b/undo.c @@ -40,16 +40,16 @@ typedef struct { int mode_group; } undo_elem; -struct ledit_undo_stack { +struct undo_stack { /* FIXME: size_t? */ int len, cur, cap; undo_elem *stack; int change_mode_group; }; -ledit_undo_stack * -ledit_undo_stack_create(void) { - ledit_undo_stack *undo = ledit_malloc(sizeof(ledit_undo_stack)); +undo_stack * +undo_stack_create(void) { + undo_stack *undo = ledit_malloc(sizeof(undo_stack)); undo->len = undo->cap = 0; undo->cur = -1; undo->stack = NULL; @@ -58,14 +58,14 @@ ledit_undo_stack_create(void) { } void -ledit_undo_stack_destroy(ledit_undo_stack *undo) { +undo_stack_destroy(undo_stack *undo) { free(undo->stack); free(undo); } /* FIXME: resize text buffers when they aren't needed anymore */ static undo_elem * -push_undo_elem(ledit_undo_stack *undo) { +push_undo_elem(undo_stack *undo) { assert(undo->cur >= -1); undo->cur++; undo->len = undo->cur + 1; @@ -82,20 +82,20 @@ push_undo_elem(ledit_undo_stack *undo) { } static undo_elem * -peek_undo_elem(ledit_undo_stack *undo) { +peek_undo_elem(undo_stack *undo) { if (undo->cur < 0) return NULL; return &undo->stack[undo->cur]; } void -ledit_change_mode_group(ledit_undo_stack *undo) { +undo_change_mode_group(undo_stack *undo) { undo->change_mode_group = 1; } static void push_undo( - ledit_undo_stack *undo, txtbuf *text, + undo_stack *undo, txtbuf *text, ledit_range insert_range, ledit_range cursor_range, int start_group, @@ -118,8 +118,8 @@ push_undo( } void -ledit_push_undo_insert( - ledit_undo_stack *undo, txtbuf *text, +undo_push_insert( + undo_stack *undo, txtbuf *text, ledit_range insert_range, ledit_range cursor_range, int start_group, enum ledit_mode mode) { push_undo( @@ -129,8 +129,8 @@ ledit_push_undo_insert( } void -ledit_push_undo_delete( - ledit_undo_stack *undo, txtbuf *text, +undo_push_delete( + undo_stack *undo, txtbuf *text, ledit_range insert_range, ledit_range cursor_range, int start_group, enum ledit_mode mode) { push_undo( @@ -139,8 +139,8 @@ ledit_push_undo_delete( ); } -ledit_undo_status -ledit_undo(ledit_undo_stack *undo, enum ledit_mode mode, void *callback_data, +undo_status +ledit_undo(undo_stack *undo, enum ledit_mode mode, void *callback_data, undo_insert_callback insert_cb, undo_delete_callback delete_cb, size_t *cur_line_ret, size_t *cur_index_ret, size_t *min_line_ret) { undo_elem *e; @@ -209,8 +209,8 @@ ledit_undo(ledit_undo_stack *undo, enum ledit_mode mode, void *callback_data, return UNDO_NORMAL; } -ledit_undo_status -ledit_redo(ledit_undo_stack *undo, enum ledit_mode mode, void *callback_data, +undo_status +ledit_redo(undo_stack *undo, enum ledit_mode mode, void *callback_data, undo_insert_callback insert_cb, undo_delete_callback delete_cb, size_t *cur_line_ret, size_t *cur_index_ret, size_t *min_line_ret) { undo_elem *e; diff --git a/undo.h b/undo.h @@ -2,32 +2,32 @@ typedef enum { UNDO_NORMAL, UNDO_OLDEST_CHANGE, UNDO_NEWEST_CHANGE -} ledit_undo_status; +} undo_status; -typedef struct ledit_undo_stack ledit_undo_stack; +typedef struct undo_stack undo_stack; typedef void (*undo_insert_callback)(void *, size_t, size_t, char *, size_t); typedef void (*undo_delete_callback)(void *, size_t, size_t, size_t, size_t); -ledit_undo_stack *ledit_undo_stack_create(void); -void ledit_undo_stack_destroy(ledit_undo_stack *undo); -void ledit_change_mode_group(ledit_undo_stack *undo); -void ledit_push_undo_insert( - ledit_undo_stack *undo, txtbuf *text, +undo_stack *undo_stack_create(void); +void undo_stack_destroy(undo_stack *undo); +void undo_change_mode_group(undo_stack *undo); +void undo_push_insert( + undo_stack *undo, txtbuf *text, ledit_range insert_range, ledit_range cursor_range, int start_group, enum ledit_mode mode ); -void ledit_push_undo_delete( - ledit_undo_stack *undo, txtbuf *text, +void undo_push_delete( + undo_stack *undo, txtbuf *text, ledit_range insert_range, ledit_range cursor_range, int start_group, enum ledit_mode mode ); -ledit_undo_status ledit_undo( - ledit_undo_stack *undo, enum ledit_mode mode, +undo_status ledit_undo( + undo_stack *undo, enum ledit_mode mode, void *callback_data, undo_insert_callback insert_cb, undo_delete_callback delete_cb, size_t *cur_line_ret, size_t *cur_index_ret, size_t *min_line_ret ); -ledit_undo_status ledit_redo( - ledit_undo_stack *undo, enum ledit_mode mode, +undo_status ledit_redo( + undo_stack *undo, enum ledit_mode mode, void *callback_data, undo_insert_callback insert_cb, undo_delete_callback delete_cb, size_t *cur_line_ret, size_t *cur_index_ret, size_t *min_line_ret ); diff --git a/util.c b/util.c @@ -13,7 +13,7 @@ #include "util.h" ledit_draw * -ledit_draw_create(ledit_window *window, int w, int h) { +draw_create(ledit_window *window, int w, int h) { ledit_draw *draw = ledit_malloc(sizeof(ledit_draw)); draw->w = w; draw->h = h; @@ -27,7 +27,7 @@ ledit_draw_create(ledit_window *window, int w, int h) { } void -ledit_draw_grow(ledit_window *window, ledit_draw *draw, int w, int h) { +draw_grow(ledit_window *window, ledit_draw *draw, int w, int h) { /* FIXME: sensible default pixmap sizes here */ /* FIXME: maybe shrink the pixmaps at some point */ if (draw->w < w || draw->h < h) { @@ -43,7 +43,7 @@ ledit_draw_grow(ledit_window *window, ledit_draw *draw, int w, int h) { } void -ledit_draw_destroy(ledit_window *window, ledit_draw *draw) { +draw_destroy(ledit_window *window, ledit_draw *draw) { XFreePixmap(window->common->dpy, draw->pixmap); XftDrawDestroy(draw->xftdraw); free(draw); diff --git a/util.h b/util.h @@ -6,6 +6,6 @@ typedef struct { int w, h; } ledit_draw; -ledit_draw *ledit_draw_create(ledit_window *window, int w, int h); -void ledit_draw_grow(ledit_window *window, ledit_draw *draw, int w, int h); -void ledit_draw_destroy(ledit_window *window, ledit_draw *draw); +ledit_draw *draw_create(ledit_window *window, int w, int h); +void draw_grow(ledit_window *window, ledit_draw *draw, int w, int h); +void draw_destroy(ledit_window *window, ledit_draw *draw); diff --git a/view.c b/view.c @@ -71,8 +71,8 @@ static void invalidate_layout_line_helper(void *data, size_t line); void view_set_mode(ledit_view *view, enum ledit_mode mode) { view->mode = mode; - ledit_change_mode_group(view->buffer->undo); - ledit_window_set_mode(view->window, mode); + undo_change_mode_group(view->buffer->undo); + window_set_mode(view->window, mode); } ledit_view * @@ -88,13 +88,13 @@ view_create(ledit_buffer *buffer, ledit_theme *theme, enum ledit_mode mode, size ledit_view *view = ledit_malloc(sizeof(ledit_view)); view->mode = mode; view->buffer = buffer; - view->window = ledit_window_create(buffer->common, theme, mode); + view->window = window_create(buffer->common, theme, mode); view->theme = theme; view->cache = cache_create(buffer->common->dpy); view->cur_action = (struct action){ACTION_NONE, NULL}; - ledit_window_set_scroll_callback(view->window, &view_scroll_handler, view); - ledit_window_set_button_callback(view->window, &view_button_handler, view); - ledit_window_set_resize_callback(view->window, &view_resize_textview, view); + window_set_scroll_callback(view->window, &view_scroll_handler, view); + window_set_button_callback(view->window, &view_button_handler, view); + window_set_resize_callback(view->window, &view_resize_textview, view); view->lines = ledit_reallocarray(NULL, buffer->lines_cap, sizeof(ledit_view_line)); view->lines_cap = buffer->lines_cap; @@ -235,7 +235,7 @@ view_notify_delete_lines(ledit_view *view, size_t index1, size_t index2) { void view_destroy(ledit_view *view) { cache_destroy(view->cache); - ledit_window_destroy(view->window); + window_destroy(view->window); free(view->lines); free(view); } @@ -269,7 +269,7 @@ get_pango_attributes(ledit_view *view, size_t start_byte, size_t end_byte) { /* this takes layout directly to possibly avoid infinite recursion */ static void set_line_layout_attrs(ledit_view *view, size_t line, PangoLayout *layout) { - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); ledit_view_line *vl = view_get_line(view, line); PangoAttrList *list = NULL; if (view->sel_valid) { @@ -375,7 +375,7 @@ view_render_line(ledit_view *view, size_t line_index) { static void init_line(ledit_view *view, ledit_view_line *line) { int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); line->view = view; line->w = text_w; line->h = 0; @@ -429,7 +429,7 @@ view_recalc_line(ledit_view *view, size_t line) { set_pango_text_and_highlight(view, line); int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); /* if height changed, set height of current line * and adjust offsets of all lines following it */ if (l->h_dirty) { @@ -449,7 +449,7 @@ view_recalc_line(ledit_view *view, size_t line) { l->y_offset + l->h >= view->display_offset) { view->redraw = 1; } - ledit_window_set_scroll_max(view->window, view->total_height); + window_set_scroll_max(view->window, view->total_height); view_scroll(view, view->display_offset); } @@ -459,7 +459,7 @@ void view_recalc_from_line(ledit_view *view, size_t line) { ledit_view_line *l = view_get_line(view, line); int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); long off = l->y_offset; if (off < view->display_offset + text_h) view->redraw = 1; @@ -472,7 +472,7 @@ view_recalc_from_line(ledit_view *view, size_t line) { off += l->h; } view->total_height = off; - ledit_window_set_scroll_max(view->window, view->total_height); + window_set_scroll_max(view->window, view->total_height); view_scroll(view, view->display_offset); } @@ -487,7 +487,7 @@ view_recalc_all_lines(ledit_view *view) { int view_line_visible(ledit_view *view, size_t index) { int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); ledit_view_line *l = view_get_line(view, index); return l->y_offset < view->display_offset + text_h && l->y_offset + l->h > view->display_offset; @@ -498,7 +498,7 @@ view_line_visible(ledit_view *view, size_t index) { size_t view_next_cursor_pos(ledit_view *view, size_t line, size_t byte, int num) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); size_t c = line_byte_to_char(ll, byte); size_t cur_byte = byte; PangoLayout *layout = get_pango_layout(view, line); @@ -507,11 +507,11 @@ view_next_cursor_pos(ledit_view *view, size_t line, size_t byte, int num) { if (num < 0) return 0; /* FIXME: error */ for (size_t i = 0; i < (size_t)num; i++) { - cur_byte = ledit_line_next_utf8(ll, byte); + cur_byte = line_next_utf8(ll, byte); for (c++; c < (size_t)nattrs; c++) { if (attrs[c].is_cursor_position) break; - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } if (cur_byte >= ll->len) break; @@ -522,7 +522,7 @@ view_next_cursor_pos(ledit_view *view, size_t line, size_t byte, int num) { size_t view_prev_cursor_pos(ledit_view *view, size_t line, size_t byte, int num) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); size_t c = line_byte_to_char(ll, byte); size_t cur_byte = byte; PangoLayout *layout = get_pango_layout(view, line); @@ -531,11 +531,11 @@ view_prev_cursor_pos(ledit_view *view, size_t line, size_t byte, int num) { if (num < 0) return 0; /* FIXME: error */ for (int i = 0; i < num; i++) { - cur_byte = ledit_line_prev_utf8(ll, cur_byte); + cur_byte = line_prev_utf8(ll, cur_byte); for (; c > 0; c--) { if (attrs[c-1].is_cursor_position) break; - cur_byte = ledit_line_prev_utf8(ll, cur_byte); + cur_byte = line_prev_utf8(ll, cur_byte); } if (cur_byte <= 0) break; @@ -549,8 +549,8 @@ line_next_word( size_t line, size_t byte, size_t char_index, int wrapped_line, size_t *char_ret, size_t *byte_ret, size_t *real_byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); - int cur_byte = wrapped_line ? byte : ledit_line_next_utf8(ll, byte); + ledit_line *ll = buffer_get_line(view->buffer, line); + int cur_byte = wrapped_line ? byte : line_next_utf8(ll, byte); PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = pango_layout_get_log_attrs_readonly(layout, &nattrs); @@ -561,7 +561,7 @@ line_next_word( *byte_ret = cur_byte; return 0; } - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } return -1; } @@ -572,8 +572,8 @@ line_prev_word( size_t line, size_t byte, size_t char_index, size_t *char_ret, size_t *byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); - size_t cur_byte = ledit_line_prev_utf8(ll, byte); + ledit_line *ll = buffer_get_line(view->buffer, line); + size_t cur_byte = line_prev_utf8(ll, byte); PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = pango_layout_get_log_attrs_readonly(layout, &nattrs); @@ -586,7 +586,7 @@ line_prev_word( *byte_ret = cur_byte; return 0; } - cur_byte = ledit_line_prev_utf8(ll, cur_byte); + cur_byte = line_prev_utf8(ll, cur_byte); } return -1; } @@ -597,8 +597,8 @@ line_prev_bigword( size_t line, size_t byte, size_t char_index, size_t *char_ret, size_t *byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); - size_t cur_byte = ledit_line_prev_utf8(ll, byte); + ledit_line *ll = buffer_get_line(view->buffer, line); + size_t cur_byte = line_prev_utf8(ll, byte); PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = pango_layout_get_log_attrs_readonly(layout, &nattrs); @@ -623,7 +623,7 @@ line_prev_bigword( next_cursorc = i-1; next_cursorb = cur_byte; } - cur_byte = ledit_line_prev_utf8(ll, cur_byte); + cur_byte = line_prev_utf8(ll, cur_byte); } return -1; } @@ -634,7 +634,7 @@ line_next_bigword_end( size_t line, size_t byte, size_t char_index, int wrapped_line, size_t *char_ret, size_t *byte_ret, size_t *real_byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = pango_layout_get_log_attrs_readonly(layout, &nattrs); @@ -663,7 +663,7 @@ line_next_bigword_end( last_cursorb = cur_byte; last_cursor_valid = 1; } - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } return -1; } @@ -674,8 +674,8 @@ line_next_word_end( size_t line, size_t byte, size_t char_index, int wrapped_line, size_t *char_ret, size_t *byte_ret, size_t *real_byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); - size_t cur_byte = ledit_line_next_utf8(ll, byte); + ledit_line *ll = buffer_get_line(view->buffer, line); + size_t cur_byte = line_next_utf8(ll, byte); PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = pango_layout_get_log_attrs_readonly(layout, &nattrs); @@ -700,7 +700,7 @@ line_next_word_end( last_cursorb = cur_byte; last_cursor_valid = 1; } - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } return -1; } @@ -711,7 +711,7 @@ line_next_bigword( size_t line, size_t byte, size_t char_index, int wrapped_line, size_t *char_ret, size_t *byte_ret, size_t *real_byte_ret) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); size_t cur_byte = byte; PangoLayout *layout = get_pango_layout(view, line); const PangoLogAttr *attrs = @@ -726,7 +726,7 @@ line_next_bigword( *byte_ret = cur_byte; return 0; } - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } return -1; } @@ -734,7 +734,7 @@ line_next_bigword( size_t view_line_next_non_whitespace(ledit_view *view, size_t line, size_t byte) { int nattrs; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); size_t c = line_byte_to_char(ll, byte); size_t cur_byte = byte; PangoLayout *layout = get_pango_layout(view, line); @@ -743,7 +743,7 @@ view_line_next_non_whitespace(ledit_view *view, size_t line, size_t byte) { for (; c < (size_t)nattrs; c++) { if (!attrs[c].is_white) return cur_byte; - cur_byte = ledit_line_next_utf8(ll, cur_byte); + cur_byte = line_next_utf8(ll, cur_byte); } return ll->len; } @@ -758,7 +758,7 @@ view_next_##name( size_t *line_ret, size_t *byte_ret, size_t *real_byte_ret) { \ size_t cur_line = line; \ size_t cur_byte = byte; \ - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); \ + ledit_line *ll = buffer_get_line(view->buffer, line); \ size_t cur_char = line_byte_to_char(ll, byte); \ size_t real_byte = 0; \ int last_ret = -1; \ @@ -777,7 +777,7 @@ view_next_##name( } \ if (last_ret == -1) { \ *line_ret = view->lines_num - 1; \ - ledit_line *ll = ledit_buffer_get_line(view->buffer, view->lines_num - 1); \ + ledit_line *ll = buffer_get_line(view->buffer, view->lines_num - 1); \ *byte_ret = view_get_legal_normal_pos(view, view->lines_num - 1, ll->len); \ *real_byte_ret = ll->len; \ } else { \ @@ -795,14 +795,14 @@ view_prev_##name( size_t *line_ret, size_t *byte_ret, size_t *real_byte_ret) { \ size_t cur_line = line; \ size_t cur_byte = byte; \ - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); \ + ledit_line *ll = buffer_get_line(view->buffer, line); \ size_t cur_char = line_byte_to_char(ll, byte); \ int last_ret = -1; \ for (int i = 0; i < num_repeat; i++) { \ while ((last_ret = func(view, cur_line, cur_byte, cur_char, \ &cur_char, &cur_byte)) == -1 && cur_line > 0) { \ cur_line--; \ - ll = ledit_buffer_get_line(view->buffer, cur_line); \ + ll = buffer_get_line(view->buffer, cur_line); \ cur_byte = ll->len; \ } \ if (last_ret == -1 && cur_line == 0) \ @@ -831,7 +831,7 @@ view_get_pos_softline_bounds( ledit_view *view, size_t line, size_t pos, size_t *start_byte_ret, size_t *end_byte_ret) { assert(line < view->lines_num); - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); assert(pos <= ll->len); PangoLayout *layout = get_pango_layout(view, line); int x, sli; @@ -868,7 +868,7 @@ view_get_softline_count(ledit_view *view, size_t line) { int view_pos_to_softline(ledit_view *view, size_t line, size_t pos) { assert(line < view->lines_num); - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); assert(pos <= ll->len); PangoLayout *layout = get_pango_layout(view, line); int x, sli; @@ -881,7 +881,7 @@ view_pos_to_softline(ledit_view *view, size_t line, size_t pos) { void view_get_cursor_pixel_pos(ledit_view *view, size_t line, size_t pos, int *x_ret, int *y_ret, int *h_ret) { assert(line < view->lines_num); - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); assert(pos <= ll->len); PangoLayout *layout = get_pango_layout(view, line); PangoRectangle strong, weak; @@ -904,7 +904,7 @@ view_move_cursor_visually(ledit_view *view, size_t line, size_t pos, int movemen err_overflow(); /* FIXME: trailing */ int trailing = 0; - ledit_line *cur_line = ledit_buffer_get_line(view->buffer, line); + ledit_line *cur_line = buffer_get_line(view->buffer, line); PangoLayout *layout = get_pango_layout(view, line); int tmp_index; int new_index = (int)pos, last_index = (int)pos; @@ -942,7 +942,7 @@ view_move_cursor_visually(ledit_view *view, size_t line, size_t pos, int movemen /* FIXME: spaces at end of softlines are weird in normal mode */ while (trailing > 0) { trailing--; - new_index = ledit_line_next_utf8(cur_line, new_index); + new_index = line_next_utf8(cur_line, new_index); } if (new_index < 0) new_index = 0; @@ -965,7 +965,7 @@ ledit_line_word_boundaries(ledit_line *line, int byte, int *start_ret, int *end_ static void set_pango_text_and_highlight(ledit_view *view, size_t line) { cache_layout *cl; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); ledit_view_line *vl = view_get_line(view, line); char old_valid = vl->cache_layout_valid; if (!vl->cache_layout_valid) { @@ -983,7 +983,7 @@ set_pango_text_and_highlight(ledit_view *view, size_t line) { pango_layout_set_wrap(cl->layout, PANGO_WRAP_WORD_CHAR); } if (vl->text_dirty || !old_valid) { - ledit_buffer_normalize_line(ll); + buffer_normalize_line(ll); if (ll->len > INT_MAX) err_overflow(); pango_layout_set_text(cl->layout, ll->text, (int)ll->len); @@ -1064,10 +1064,10 @@ ledit_x_softline_to_pos(ledit_view *view, size_t line, int x, int softline, size /* if in insert mode, snap to the nearest border between graphemes */ /* FIXME: add parameter for this instead of checking mode */ if (view->mode == INSERT) { - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); while (trailing > 0) { trailing--; - *pos_ret = ledit_line_next_utf8(ll, *pos_ret); + *pos_ret = line_next_utf8(ll, *pos_ret); } } } @@ -1076,7 +1076,7 @@ size_t view_get_legal_normal_pos(ledit_view *view, size_t line, size_t pos) { /* move back one grapheme if at end of line */ size_t ret = pos; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line); + ledit_line *ll = buffer_get_line(view->buffer, line); if (pos == ll->len && pos > 0) { int nattrs; PangoLayout *layout = get_pango_layout(view, line); @@ -1085,10 +1085,10 @@ view_get_legal_normal_pos(ledit_view *view, size_t line, size_t pos) { if (nattrs < 2) return 0; size_t cur = nattrs - 2; - ret = ledit_line_prev_utf8(ll, ret); + ret = line_prev_utf8(ll, ret); while (ret > 0 && cur > 0 && !attrs[cur].is_cursor_position) { cur--; - ret = ledit_line_prev_utf8(ll, ret); + ret = line_prev_utf8(ll, ret); } } return ret; @@ -1113,7 +1113,7 @@ view_delete_range( size_t min = line_index1 < line_index2 ? line_index1 : line_index2; /* FIXME: a bit ugly to do this here */ for (size_t i = 0; i < view->buffer->views_num; i++) { - ledit_buffer_recalc_all_views_from_line( + buffer_recalc_all_views_from_line( view->buffer, min > 0 ? min - 1 : min ); } @@ -1149,7 +1149,7 @@ view_delete_range_base( l2 = line_index1; } size_t dell1 = l1, dell2 = l2; - ledit_line *ll = ledit_buffer_get_line(view->buffer, line_index1); + ledit_line *ll = buffer_get_line(view->buffer, line_index1); ledit_pos_to_x_softline(view, line_index1, byte_index1, &x, &sl_useless); if (l1 > 0 && l2 < view->lines_num - 1) { rgl1 = l1; @@ -1158,10 +1158,10 @@ view_delete_range_base( rgb2 = 0; } else if (l1 > 0) { rgl1 = l1 - 1; - ll = ledit_buffer_get_line(view->buffer, rgl1); + ll = buffer_get_line(view->buffer, rgl1); rgb1 = ll->len; rgl2 = l2; - ll = ledit_buffer_get_line(view->buffer, rgl2); + ll = buffer_get_line(view->buffer, rgl2); rgb2 = ll->len; } else if (l2 < view->lines_num - 1) { rgl1 = l1; @@ -1172,11 +1172,11 @@ view_delete_range_base( rgl1 = l1; rgb1 = 0; rgl2 = l2; - ll = ledit_buffer_get_line(view->buffer, rgl2); + ll = buffer_get_line(view->buffer, rgl2); rgb2 = ll->len; } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); @@ -1200,17 +1200,17 @@ view_delete_range_base( new_line = l1; new_byte = 0; /* happens when all lines are deleted, so one line has to be cleared */ - ll = ledit_buffer_get_line(view->buffer, l1); - ledit_buffer_delete_line_section_base( + ll = buffer_get_line(view->buffer, l1); + buffer_delete_line_section_base( view->buffer, l1, 0, ll->len ); } if (dell1 <= dell2) { - ledit_buffer_delete_line_entries_base(view->buffer, dell1, dell2); + buffer_delete_line_entries_base(view->buffer, dell1, dell2); } } else if (delmode == DELETE_SOFTLINE) { int x, softline1, softline2; - ledit_line *line1 = ledit_buffer_get_line(view->buffer, line_index1); + ledit_line *line1 = buffer_get_line(view->buffer, line_index1); ledit_view_line *vline1 = view_get_line(view, line_index1); ledit_pos_to_x_softline(view, line_index1, byte_index1, &x, &softline1); if (line_index1 == line_index2) { @@ -1242,7 +1242,7 @@ view_delete_range_base( /* note: logically, line_index1 - 1 must be >= 0 because view->lines_num > 1 && line_index1 >= view->lines_num - 1 */ new_line = line_index1 - 1; - ledit_line *prevline = ledit_buffer_get_line(view->buffer, new_line); + ledit_line *prevline = buffer_get_line(view->buffer, new_line); ledit_view_line *vprevline = view_get_line(view, new_line); if (vprevline->text_dirty) set_pango_text_and_highlight(view, new_line); @@ -1253,26 +1253,26 @@ view_delete_range_base( rgb2 = line1->len; } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_entry_base(view->buffer, line_index1); + buffer_delete_line_entry_base(view->buffer, line_index1); } else { assert(pl2->start_index + pl2->length >= pl1->start_index); rgl1 = rgl2 = line_index1; rgb1 = (size_t)pl1->start_index; rgb2 = (size_t)(pl2->start_index + pl2->length); if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base( + buffer_delete_line_section_base( view->buffer, line_index1, rgb1, rgb2 - rgb1 ); if (l2 == vline1->softlines - 1 && line_index1 < view->lines_num - 1) { @@ -1319,8 +1319,8 @@ view_delete_range_base( l2 = line_index1; b2 = byte_index1; } - ledit_line *ll1 = ledit_buffer_get_line(view->buffer, l1); - ledit_line *ll2 = ledit_buffer_get_line(view->buffer, l2); + ledit_line *ll1 = buffer_get_line(view->buffer, l1); + ledit_line *ll2 = buffer_get_line(view->buffer, l2); ledit_view_line *vl1 = view_get_line(view, l1); ledit_view_line *vl2 = view_get_line(view, l2); PangoLayout *layout1 = get_pango_layout(view, l1); @@ -1336,20 +1336,20 @@ view_delete_range_base( rgb1 = 0; rgb2 = ll2->len; if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base(view->buffer, l1, 0, ll1->len); - ledit_buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); + buffer_delete_line_section_base(view->buffer, l1, 0, ll1->len); + buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); new_line = 0; new_byte = 0; } else { if (l2 == view->lines_num - 1) { new_line = l1 - 1; - ledit_line *new_lline = ledit_buffer_get_line(view->buffer, new_line); + ledit_line *new_lline = buffer_get_line(view->buffer, new_line); ledit_view_line *new_vline = view_get_line(view, new_line); if (new_vline->text_dirty) set_pango_text_and_highlight(view, new_line); @@ -1369,13 +1369,13 @@ view_delete_range_base( rgb2 = 0; } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_entries_base(view->buffer, l1, l2); + buffer_delete_line_entries_base(view->buffer, l1, l2); } } else if (sl1 == 0) { rgl1 = l1; @@ -1383,16 +1383,16 @@ view_delete_range_base( rgl2 = l2; rgb2 = (size_t)(pl2->start_index + pl2->length); if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base(view->buffer, l2, 0, rgb2); + buffer_delete_line_section_base(view->buffer, l2, 0, rgb2); new_line = l1; ledit_x_softline_to_pos(view, l2, x, 0, &new_byte); - ledit_buffer_delete_line_entries_base(view->buffer, l1, l2 - 1); + buffer_delete_line_entries_base(view->buffer, l1, l2 - 1); } else if (sl2 == vl2->softlines - 1) { rgl1 = l1; rgb1 = (size_t)pl1->start_index; @@ -1409,14 +1409,14 @@ view_delete_range_base( ); } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base(view->buffer, l1, rgb1, ll1->len - rgb1); - ledit_buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); + buffer_delete_line_section_base(view->buffer, l1, rgb1, ll1->len - rgb1); + buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); } else { /* FIXME: this could be made nicer by just using the range to delete all in one go at the end */ @@ -1425,19 +1425,19 @@ view_delete_range_base( rgl2 = l2; rgb2 = (size_t)(pl2->start_index + pl2->length); if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base(view->buffer, l1, rgb1, ll1->len - rgb1); - ledit_buffer_insert_text_from_line_base( + buffer_delete_line_section_base(view->buffer, l1, rgb1, ll1->len - rgb1); + buffer_insert_text_from_line_base( view->buffer, l1, rgb1, l2, rgb2, ll2->len - rgb2, NULL ); - ledit_buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); + buffer_delete_line_entries_base(view->buffer, l1 + 1, l2); new_line = l1; set_pango_text_and_highlight(view, l1); /* it's technically possible that the remaining part of the @@ -1462,13 +1462,13 @@ view_delete_range_base( rgb2 = byte_index1; } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_buffer_delete_line_section_base(view->buffer, line_index1, rgb1, rgb2 - rgb1); + buffer_delete_line_section_base(view->buffer, line_index1, rgb1, rgb2 - rgb1); new_line = line_index1; new_byte = rgb1; } else { @@ -1484,21 +1484,21 @@ view_delete_range_base( rgb2 = byte_index1; } if (text_ret) { - ledit_buffer_copy_text_to_txtbuf( + buffer_copy_text_to_txtbuf( view->buffer, text_ret, rgl1, rgb1, rgl2, rgb2 ); } - ledit_line *line1 = ledit_buffer_get_line(view->buffer, rgl1); - ledit_line *line2 = ledit_buffer_get_line(view->buffer, rgl2); - ledit_buffer_delete_line_section_base(view->buffer, rgl1, rgb1, line1->len - rgb1); - ledit_buffer_insert_text_from_line_base( + ledit_line *line1 = buffer_get_line(view->buffer, rgl1); + ledit_line *line2 = buffer_get_line(view->buffer, rgl2); + buffer_delete_line_section_base(view->buffer, rgl1, rgb1, line1->len - rgb1); + buffer_insert_text_from_line_base( view->buffer, rgl1, rgb1, rgl2, rgb2, line2->len - rgb2, NULL ); new_line = rgl1; new_byte = rgb1; - ledit_buffer_delete_line_entries_base(view->buffer, rgl1 + 1, rgl2); + buffer_delete_line_entries_base(view->buffer, rgl1 + 1, rgl2); } /* FIXME: too much magic - maybe don't include this here */ if (view->mode == NORMAL) @@ -1522,7 +1522,7 @@ view_resize_textview(void *data) { ledit_view *view = (ledit_view *)data; view->total_height = 0; int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); for (size_t i = 0; i < view->lines_num; i++) { ledit_view_line *line = view_get_line(view, i); line->w = text_w; @@ -1533,7 +1533,7 @@ view_resize_textview(void *data) { line->h_dirty = 0; view->total_height += line->h; } - ledit_window_set_scroll_max(view->window, view->total_height); + window_set_scroll_max(view->window, view->total_height); if (view->display_offset > 0 && view->display_offset + text_h > view->total_height) { view_scroll(view, view->total_height - text_h); @@ -1543,13 +1543,13 @@ view_resize_textview(void *data) { void view_scroll(ledit_view *view, long new_offset) { int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); if (new_offset + text_h > view->total_height) new_offset = view->total_height - text_h; if (new_offset < 0) new_offset = 0; view->display_offset = new_offset; - ledit_window_set_scroll_pos(view->window, view->display_offset); + window_set_scroll_pos(view->window, view->display_offset); } /* FIXME: there's gotta be a better/more efficient way to do this... */ @@ -1563,7 +1563,7 @@ view_get_nearest_legal_pos( PangoRectangle strong, weak; int text_w, text_h; int x, sl_useless; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); ledit_view_line *vline = view_get_line(view, line); PangoLayout *layout = get_pango_layout(view, line); if (byte > INT_MAX) @@ -1669,10 +1669,10 @@ ledit_xy_to_line_byte(ledit_view *view, int x, int y, int snap_to_nearest, size_ ); *byte_ret = (size_t)index; if (snap_to_nearest) { - ledit_line *ll = ledit_buffer_get_line(view->buffer, i); + ledit_line *ll = buffer_get_line(view->buffer, i); while (trailing > 0) { trailing--; - *byte_ret = ledit_line_next_utf8(ll, *byte_ret); + *byte_ret = line_next_utf8(ll, *byte_ret); } } *line_ret = i; @@ -1686,7 +1686,7 @@ static void scroll_to_pos(ledit_view *view, size_t line, size_t byte, int top) { PangoRectangle strong, weak; int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); ledit_view_line *vl = view_get_line(view, line); PangoLayout *layout = get_pango_layout(view, line); if (byte > INT_MAX) @@ -1714,7 +1714,7 @@ void view_ensure_cursor_shown(ledit_view *view) { PangoRectangle strong, weak; int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); ledit_view_line *vline = view_get_line(view, view->cur_line); PangoLayout *layout = get_pango_layout(view, view->cur_line); if (view->cur_index > INT_MAX) @@ -1755,8 +1755,8 @@ view_sort_selection(size_t *line1, size_t *byte1, size_t *line2, size_t *byte2) static void copy_selection_to_x_primary(ledit_view *view, size_t line1, size_t byte1, size_t line2, size_t byte2) { /* FIXME: let window handle this */ - txtbuf *primary = ledit_window_get_primary_clipboard_buffer(); - ledit_buffer_copy_text_to_txtbuf(view->buffer, primary, line1, byte1, line2, byte2); + txtbuf *primary = window_get_primary_clipboard_buffer(); + buffer_copy_text_to_txtbuf(view->buffer, primary, line1, byte1, line2, byte2); XSetSelectionOwner(view->buffer->common->dpy, XA_PRIMARY, view->window->xwin, CurrentTime); /* FIXME @@ -1889,7 +1889,8 @@ view_redraw_text(ledit_view *view) { int cur_line_y = 0; int cursor_displayed = 0; int text_w, text_h; - ledit_window_get_textview_size(view->window, &text_w, &text_h); + window_get_textview_size(view->window, &text_w, &text_h); + /* FIXME: use binary search here */ for (size_t i = 0; i < view->lines_num; i++) { ledit_view_line *vline = view_get_line(view, i); if (h + vline->h > view->display_offset) { @@ -1931,7 +1932,7 @@ view_redraw_text(ledit_view *view) { XSetForeground(view->buffer->common->dpy, view->window->gc, view->theme->text_fg.pixel); PangoRectangle strong, weak; - ledit_line *cur_line = ledit_buffer_get_line(view->buffer, view->cur_line); + ledit_line *cur_line = buffer_get_line(view->buffer, view->cur_line); PangoLayout *layout = get_pango_layout(view, view->cur_line); pango_layout_get_cursor_pos( layout, (int)view->cur_index, &strong, &weak @@ -1999,16 +2000,16 @@ view_redraw_text(ledit_view *view) { void view_redraw(ledit_view *view) { if (view->redraw || view->window->redraw) { - ledit_window_clear(view->window); + window_clear(view->window); view_redraw_text(view); - ledit_window_redraw(view->window); + window_redraw(view->window); } } static void undo_insert_helper(void *data, size_t line, size_t byte, char *text, size_t text_len) { ledit_view *view = (ledit_view *)data; - ledit_buffer_insert_text_with_newlines_base(view->buffer, line, byte, text, text_len, NULL, NULL); + buffer_insert_text_with_newlines_base(view->buffer, line, byte, text, text_len, NULL, NULL); } static void @@ -2033,7 +2034,7 @@ view_undo(ledit_view *view) { view_wipe_line_cursor_attrs(view, old_line); view_set_line_cursor_attrs(view, view->cur_line, view->cur_index); if (min_line < view->lines_num) { - ledit_buffer_recalc_all_views_from_line( + buffer_recalc_all_views_from_line( view->buffer, min_line > 0 ? min_line - 1 : min_line ); } @@ -2056,7 +2057,7 @@ view_redo(ledit_view *view) { view_wipe_line_cursor_attrs(view, old_line); view_set_line_cursor_attrs(view, view->cur_line, view->cur_index); if (min_line < view->lines_num) { - ledit_buffer_recalc_all_views_from_line( + buffer_recalc_all_views_from_line( view->buffer, min_line > 0 ? min_line - 1 : min_line ); } @@ -2070,13 +2071,13 @@ paste_callback(void *data, char *text, size_t len) { ledit_range cur_range, ins_range; cur_range.line1 = ins_range.line1 = view->cur_line; cur_range.byte1 = ins_range.byte1 = view->cur_index; - ledit_buffer_insert_text_with_newlines( + buffer_insert_text_with_newlines( view->buffer, view->cur_line, view->cur_index, text, len, &view->cur_line, &view->cur_index ); cur_range.line2 = ins_range.line2 = view->cur_line; cur_range.byte2 = ins_range.byte2 = view->cur_index; - ledit_push_undo_insert( + undo_push_insert( view->buffer->undo, &ins_buf, ins_range, cur_range, 1, view->mode ); } @@ -2085,12 +2086,12 @@ paste_callback(void *data, char *text, size_t len) { void view_paste_clipboard(ledit_view *view) { - ledit_window_set_paste_callback(view->window, &paste_callback, view); + window_set_paste_callback(view->window, &paste_callback, view); clipboard_paste_clipboard(view->window); } void view_paste_primary(ledit_view *view) { - ledit_window_set_paste_callback(view->window, &paste_callback, view); + window_set_paste_callback(view->window, &paste_callback, view); clipboard_paste_primary(view->window); } diff --git a/window.c b/window.c @@ -57,7 +57,7 @@ static void clipboard_selnotify(ledit_window *window, XEvent *e); static void clipboard_selrequest(ledit_window *window, XEvent *e); txtbuf * -ledit_window_get_primary_clipboard_buffer(void) { +window_get_primary_clipboard_buffer(void) { /* FIXME: check if NULL */ return xsel.primary; } @@ -76,7 +76,7 @@ recalc_text_size(ledit_window *window) { /* FIXME: allow lines longer than window width to be displayed properly */ void -ledit_window_insert_bottom_bar_text(ledit_window *window, char *text, int len) { +window_insert_bottom_bar_text(ledit_window *window, char *text, int len) { assert(len >= -1); assert(window->bb->line_cur_pos <= window->bb->line_len); @@ -101,7 +101,7 @@ ledit_window_insert_bottom_bar_text(ledit_window *window, char *text, int len) { window->bb->line_text[window->bb->line_len] = '\0'; pango_layout_set_text(window->bb->line, window->bb->line_text, window->bb->line_len); pango_layout_get_pixel_size(window->bb->line, &window->bb->line_w, &window->bb->line_h); - ledit_draw_grow(window, window->bb->line_draw, window->bb->line_w, window->bb->line_h); + draw_grow(window, window->bb->line_draw, window->bb->line_w, window->bb->line_h); XftDrawRect(window->bb->line_draw->xftdraw, &window->theme->text_bg, 0, 0, window->bb->line_w, window->bb->line_h); pango_xft_render_layout(window->bb->line_draw->xftdraw, &window->theme->text_fg, window->bb->line, 0, 0); recalc_text_size(window); @@ -109,7 +109,7 @@ ledit_window_insert_bottom_bar_text(ledit_window *window, char *text, int len) { } void -ledit_window_move_bottom_bar_cursor(ledit_window *window, int movement) { +window_move_bottom_bar_cursor(ledit_window *window, int movement) { assert(window->bb->line_cur_pos <= window->bb->line_len); int trailing = 0; int new_index = window->bb->line_cur_pos; @@ -135,25 +135,25 @@ ledit_window_move_bottom_bar_cursor(ledit_window *window, int movement) { } void -ledit_window_set_bottom_bar_min_pos(ledit_window *window, int pos) { +window_set_bottom_bar_min_pos(ledit_window *window, int pos) { window->bb->min_pos = pos; } void -ledit_window_bottom_bar_cursor_to_beginning(ledit_window *window) { +window_bottom_bar_cursor_to_beginning(ledit_window *window) { window->bb->line_cur_pos = window->bb->min_pos; window->redraw = 1; } void -ledit_window_bottom_bar_cursor_to_end(ledit_window *window) { +window_bottom_bar_cursor_to_end(ledit_window *window) { window->bb->line_cur_pos = window->bb->line_len; window->redraw = 1; } /* FIXME: respect PangoLogAttr.backspace_deletes_character */ void -ledit_window_delete_bottom_bar_char(ledit_window *window, int dir) { +window_delete_bottom_bar_char(ledit_window *window, int dir) { int byte = window->bb->line_cur_pos; if (dir < 0) { byte--; @@ -189,7 +189,7 @@ ledit_window_delete_bottom_bar_char(ledit_window *window, int dir) { window->bb->line_text[window->bb->line_len] = '\0'; pango_layout_set_text(window->bb->line, window->bb->line_text, window->bb->line_len); pango_layout_get_pixel_size(window->bb->line, &window->bb->line_w, &window->bb->line_h); - ledit_draw_grow(window, window->bb->line_draw, window->bb->line_w, window->bb->line_h); + draw_grow(window, window->bb->line_draw, window->bb->line_w, window->bb->line_h); XftDrawRect(window->bb->line_draw->xftdraw, &window->theme->text_bg, 0, 0, window->bb->line_w, window->bb->line_h); pango_xft_render_layout(window->bb->line_draw->xftdraw, &window->theme->text_fg, window->bb->line, 0, 0); recalc_text_size(window); @@ -197,7 +197,7 @@ ledit_window_delete_bottom_bar_char(ledit_window *window, int dir) { } void -ledit_window_set_bottom_bar_cursor(ledit_window *window, int byte_pos) { +window_set_bottom_bar_cursor(ledit_window *window, int byte_pos) { /* FIXME: check if valid? */ window->bb->line_cur_pos = byte_pos; window->redraw = 1; @@ -209,7 +209,7 @@ ledit_window_get_bottom_bar_cursor(ledit_window *window) { } void -ledit_window_set_bottom_bar_text_shown(ledit_window *window, int shown) { +window_set_bottom_bar_text_shown(ledit_window *window, int shown) { window->bottom_text_shown = shown; window->redraw = 1; } @@ -221,21 +221,21 @@ ledit_window_bottom_bar_text_shown(ledit_window *window) { } void -ledit_window_set_bottom_bar_text(ledit_window *window, char *text, int len) { +window_set_bottom_bar_text(ledit_window *window, char *text, int len) { window->bb->line_len = 0; window->bb->line_cur_pos = 0; - ledit_window_insert_bottom_bar_text(window, text, len); + window_insert_bottom_bar_text(window, text, len); window->redraw = 1; } char * -ledit_window_get_bottom_bar_text(ledit_window *window) { +window_get_bottom_bar_text(ledit_window *window) { return window->bb->line_text; } void -ledit_window_show_message(ledit_window *window, char *text, int len) { - ledit_window_set_bottom_bar_text(window, text, len); +window_show_message(ledit_window *window, char *text, int len) { + window_set_bottom_bar_text(window, text, len); /* FIXME: rename these */ window->bottom_text_shown = 0; window->message_shown = 1; @@ -243,18 +243,18 @@ ledit_window_show_message(ledit_window *window, char *text, int len) { } int -ledit_window_message_shown(ledit_window *window) { +window_message_shown(ledit_window *window) { return window->message_shown; } void -ledit_window_hide_message(ledit_window *window) { +window_hide_message(ledit_window *window) { window->message_shown = 0; window->redraw = 1; } void -ledit_window_set_mode(ledit_window *window, enum ledit_mode mode) { +window_set_mode(ledit_window *window, enum ledit_mode mode) { window->mode = mode; char *text; switch (mode) { @@ -275,7 +275,7 @@ ledit_window_set_mode(ledit_window *window, enum ledit_mode mode) { pango_layout_set_text(window->bb->mode, final_text, -1); free(final_text); pango_layout_get_pixel_size(window->bb->mode, &window->bb->mode_w, &window->bb->mode_h); - ledit_draw_grow(window, window->bb->mode_draw, window->bb->mode_w, window->bb->mode_h); + draw_grow(window, window->bb->mode_draw, window->bb->mode_w, window->bb->mode_h); XftDrawRect(window->bb->mode_draw->xftdraw, &window->theme->text_bg, 0, 0, window->bb->mode_w, window->bb->mode_h); pango_xft_render_layout(window->bb->mode_draw->xftdraw, &window->theme->text_fg, window->bb->mode, 0, 0); recalc_text_size(window); @@ -283,9 +283,9 @@ ledit_window_set_mode(ledit_window *window, enum ledit_mode mode) { } void -ledit_window_set_mode_extra_text(ledit_window *window, char *text) { +window_set_mode_extra_text(ledit_window *window, char *text) { window->mode_extra_text = ledit_strdup(text); - ledit_window_set_mode(window, window->mode); + window_set_mode(window, window->mode); window->redraw = 1; } @@ -311,37 +311,37 @@ set_scroll_pos(ledit_window *window, double pos) { } void -ledit_window_set_scroll_max(ledit_window *window, long max) { +window_set_scroll_max(ledit_window *window, long max) { window->scroll_max = max; window->redraw = 1; } void -ledit_window_set_scroll_pos(ledit_window *window, long pos) { +window_set_scroll_pos(ledit_window *window, long pos) { window->scroll_offset = pos; window->redraw = 1; } void -ledit_window_set_scroll_callback(ledit_window *window, void (*cb)(void *, long), void *data) { +window_set_scroll_callback(ledit_window *window, void (*cb)(void *, long), void *data) { window->scroll_callback = cb; window->scroll_cb_data = data; } void -ledit_window_set_paste_callback(ledit_window *window, void (*cb)(void *, char *, size_t), void *data) { +window_set_paste_callback(ledit_window *window, void (*cb)(void *, char *, size_t), void *data) { window->paste_callback = cb; window->paste_cb_data = data; } void -ledit_window_set_button_callback(ledit_window *window, void (*cb)(void *, XEvent *), void *data) { +window_set_button_callback(ledit_window *window, void (*cb)(void *, XEvent *), void *data) { window->button_callback = cb; window->button_cb_data = data; } void -ledit_window_set_resize_callback(ledit_window *window, void (*cb)(void *), void *data) { +window_set_resize_callback(ledit_window *window, void (*cb)(void *), void *data) { window->resize_callback = cb; window->resize_cb_data = data; } @@ -433,7 +433,7 @@ xximspot(ledit_window *window, int x, int y) { } ledit_window * -ledit_window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mode) { +window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mode) { XSetWindowAttributes attrs; XGCValues gcv; @@ -500,10 +500,10 @@ ledit_window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mo window->bb->mode = pango_layout_new(window->context); pango_layout_set_font_description(window->bb->mode, window->font); /* FIXME: only create "dummy draw" at first and create with proper size when needed */ - window->bb->mode_draw = ledit_draw_create(window, 10, 10); + window->bb->mode_draw = draw_create(window, 10, 10); window->bb->line = pango_layout_new(window->context); pango_layout_set_font_description(window->bb->line, window->font); - window->bb->line_draw = ledit_draw_create(window, 10, 10); + window->bb->line_draw = draw_create(window, 10, 10); window->bb->line_w = window->bb->line_h = 10; window->bb->line_text = NULL; window->bb->line_alloc = window->bb->line_len = 0; @@ -554,13 +554,13 @@ ledit_window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mo } void -ledit_window_destroy(ledit_window *window) { +window_destroy(ledit_window *window) { /* FIXME: check what's still missing */ g_object_unref(window->bb->mode); /*g_object_unref(window->bb->ruler);*/ /* FIXME: implement ruler */ g_object_unref(window->bb->line); - ledit_draw_destroy(window, window->bb->mode_draw); - ledit_draw_destroy(window, window->bb->line_draw); + draw_destroy(window, window->bb->mode_draw); + draw_destroy(window, window->bb->line_draw); pango_font_description_free(window->font); /* FIXME: The pango documentation says that the context must be freed, @@ -581,13 +581,13 @@ ledit_window_destroy(ledit_window *window) { } void -ledit_window_cleanup(void) { +window_cleanup(void) { txtbuf_destroy(xsel.primary); free(xsel.clipboard); } void -ledit_window_clear(ledit_window *window) { +window_clear(ledit_window *window) { XSetForeground(window->common->dpy, window->gc, window->theme->text_bg.pixel); XFillRectangle( window->common->dpy, window->back_buf, window->gc, 0, 0, window->w, window->h @@ -595,7 +595,7 @@ ledit_window_clear(ledit_window *window) { } void -ledit_window_redraw(ledit_window *window) { +window_redraw(ledit_window *window) { ledit_theme *t = window->theme; if (window->scroll_max > window->text_h) { XSetForeground(window->common->dpy, window->gc, t->scrollbar_bg.pixel); @@ -680,19 +680,19 @@ ledit_window_redraw(ledit_window *window) { } void -ledit_window_get_textview_size(ledit_window *window, int *w_ret, int *h_ret) { +window_get_textview_size(ledit_window *window, int *w_ret, int *h_ret) { *w_ret = window->text_w; *h_ret = window->text_h; } void -ledit_window_handle_filtered_events(ledit_window *window) { +window_handle_filtered_events(ledit_window *window) { struct timespec now, elapsed; if (window->last_motion_valid) { clock_gettime(CLOCK_MONOTONIC, &now); ledit_timespecsub(&now, &window->last_motion, &elapsed); if (elapsed.tv_sec > 0 || elapsed.tv_nsec >= MOUSE_TICK) { - ledit_window_drag_motion(window, &window->last_motion_event); + window_drag_motion(window, &window->last_motion_event); window->last_motion = now; window->last_motion_valid = 0; } @@ -701,7 +701,7 @@ ledit_window_handle_filtered_events(ledit_window *window) { clock_gettime(CLOCK_MONOTONIC, &now); ledit_timespecsub(&now, &window->last_scroll, &elapsed); if (elapsed.tv_sec > 0 || elapsed.tv_nsec >= MOUSE_TICK) { - ledit_window_button_press(window, &window->last_scroll_event, window->scroll_num); + window_button_press(window, &window->last_scroll_event, window->scroll_num); window->last_scroll = now; window->last_scroll_valid = 0; } @@ -710,7 +710,7 @@ ledit_window_handle_filtered_events(ledit_window *window) { clock_gettime(CLOCK_MONOTONIC, &now); ledit_timespecsub(&now, &window->last_resize, &elapsed); if (elapsed.tv_sec > 0 || elapsed.tv_nsec >= RESIZE_TICK) { - ledit_window_resize( + window_resize( window, window->last_resize_event.xconfigure.width, window->last_resize_event.xconfigure.height @@ -723,7 +723,7 @@ ledit_window_handle_filtered_events(ledit_window *window) { } void -ledit_window_resize(ledit_window *window, int w, int h) { +window_resize(ledit_window *window, int w, int h) { window->w = w; window->h = h; recalc_text_size(window); @@ -908,7 +908,7 @@ clipboard_selrequest(ledit_window *window, XEvent *e) } void -ledit_window_register_button_press(ledit_window *window, XEvent *event) { +window_register_button_press(ledit_window *window, XEvent *event) { int scroll_delta; if (event->xbutton.button == Button4 || event->xbutton.button == Button5) { @@ -921,25 +921,25 @@ ledit_window_register_button_press(ledit_window *window, XEvent *event) { window->scroll_num = scroll_delta; } } else { - ledit_window_button_press(window, event, 0); + window_button_press(window, event, 0); } } void -ledit_window_register_resize(ledit_window *window, XEvent *event) { +window_register_resize(ledit_window *window, XEvent *event) { window->last_resize_event = *event; window->last_resize_valid = 1; } void -ledit_window_register_motion(ledit_window *window, XEvent *event) { +window_register_motion(ledit_window *window, XEvent *event) { window->last_motion_event = *event; window->last_motion_valid = 1; } /* FIXME: improve set_scroll_pos; make it a bit clearer */ void -ledit_window_button_press(ledit_window *window, XEvent *event, int scroll_num) { +window_button_press(ledit_window *window, XEvent *event, int scroll_num) { int x, y; double scroll_h, scroll_y; switch (event->xbutton.button) { @@ -976,7 +976,7 @@ ledit_window_button_press(ledit_window *window, XEvent *event, int scroll_num) { } void -ledit_window_button_release(ledit_window *window, XEvent *event) { +window_button_release(ledit_window *window, XEvent *event) { if (event->xbutton.button == Button1) { window->scroll_dragging = 0; if (window->button_callback) @@ -986,7 +986,7 @@ ledit_window_button_release(ledit_window *window, XEvent *event) { } void -ledit_window_drag_motion(ledit_window *window, XEvent *event) { +window_drag_motion(ledit_window *window, XEvent *event) { if (window->scroll_dragging) { double scroll_h, scroll_y; get_scroll_pos_height(window, &scroll_y, &scroll_h); @@ -1002,7 +1002,7 @@ ledit_window_drag_motion(ledit_window *window, XEvent *event) { } void -ledit_window_clipboard_event(ledit_window *window, XEvent *event) { +window_clipboard_event(ledit_window *window, XEvent *event) { /* FIXME: paste in bottom bar */ switch (event->type) { case SelectionNotify: diff --git a/window.h b/window.h @@ -59,53 +59,53 @@ typedef struct { char *mode_extra_text; } ledit_window; -ledit_window *ledit_window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mode); -void ledit_window_destroy(ledit_window *window); -void ledit_window_cleanup(void); +ledit_window *window_create(ledit_common *common, ledit_theme *theme, enum ledit_mode mode); +void window_destroy(ledit_window *window); +void window_cleanup(void); /* FIXME: this is a bit confusing because there's a difference between editable text shown and non-editable message shown */ -void ledit_window_move_bottom_bar_cursor(ledit_window *window, int movement); -void ledit_window_delete_bottom_bar_char(ledit_window *window, int dir); -void ledit_window_bottom_bar_cursor_to_beginning(ledit_window *window); -void ledit_window_bottom_bar_cursor_to_end(ledit_window *window); -void ledit_window_set_bottom_bar_min_pos(ledit_window *window, int pos); -void ledit_window_set_bottom_bar_text_shown(ledit_window *window, int shown); +void window_move_bottom_bar_cursor(ledit_window *window, int movement); +void window_delete_bottom_bar_char(ledit_window *window, int dir); +void window_bottom_bar_cursor_to_beginning(ledit_window *window); +void window_bottom_bar_cursor_to_end(ledit_window *window); +void window_set_bottom_bar_min_pos(ledit_window *window, int pos); +void window_set_bottom_bar_text_shown(ledit_window *window, int shown); int ledit_window_bottom_bar_text_shown(ledit_window *window); -void ledit_window_set_bottom_bar_cursor(ledit_window *window, int byte_pos); +void window_set_bottom_bar_cursor(ledit_window *window, int byte_pos); int ledit_window_get_bottom_bar_cursor(ledit_window *window); -void ledit_window_insert_bottom_bar_text(ledit_window *window, char *text, int len); -void ledit_window_set_bottom_bar_text(ledit_window *window, char *text, int len); -char *ledit_window_get_bottom_bar_text(ledit_window *window); -void ledit_window_show_message(ledit_window *window, char *text, int len); -void ledit_window_hide_message(ledit_window *window); -int ledit_window_message_shown(ledit_window *window); -void ledit_window_set_mode(ledit_window *window, enum ledit_mode mode); -void ledit_window_set_mode_extra_text(ledit_window *window, char *text); +void window_insert_bottom_bar_text(ledit_window *window, char *text, int len); +void window_set_bottom_bar_text(ledit_window *window, char *text, int len); +char *window_get_bottom_bar_text(ledit_window *window); +void window_show_message(ledit_window *window, char *text, int len); +void window_hide_message(ledit_window *window); +int window_message_shown(ledit_window *window); +void window_set_mode(ledit_window *window, enum ledit_mode mode); +void window_set_mode_extra_text(ledit_window *window, char *text); -void ledit_window_set_scroll_max(ledit_window *window, long max); -void ledit_window_set_scroll_pos(ledit_window *window, long pos); -void ledit_window_set_scroll_callback(ledit_window *window, void (*cb)(void *, long), void *data); -void ledit_window_set_paste_callback(ledit_window *window, void (*cb)(void *, char *, size_t), void *data); -void ledit_window_set_button_callback(ledit_window *window, void (*cb)(void *, XEvent *), void *data); -void ledit_window_set_resize_callback(ledit_window *window, void (*cb)(void *), void *data); -void ledit_window_register_resize(ledit_window *window, XEvent *event); -void ledit_window_register_button_press(ledit_window *window, XEvent *event); -void ledit_window_register_motion(ledit_window *window, XEvent *event); -void ledit_window_handle_filtered_events(ledit_window *window); +void window_set_scroll_max(ledit_window *window, long max); +void window_set_scroll_pos(ledit_window *window, long pos); +void window_set_scroll_callback(ledit_window *window, void (*cb)(void *, long), void *data); +void window_set_paste_callback(ledit_window *window, void (*cb)(void *, char *, size_t), void *data); +void window_set_button_callback(ledit_window *window, void (*cb)(void *, XEvent *), void *data); +void window_set_resize_callback(ledit_window *window, void (*cb)(void *), void *data); +void window_register_resize(ledit_window *window, XEvent *event); +void window_register_button_press(ledit_window *window, XEvent *event); +void window_register_motion(ledit_window *window, XEvent *event); +void window_handle_filtered_events(ledit_window *window); -void ledit_window_clear(ledit_window *window); -void ledit_window_redraw(ledit_window *window); -void ledit_window_resize(ledit_window *window, int w, int h); -void ledit_window_get_textview_size(ledit_window *window, int *w_ret, int *h_ret); +void window_clear(ledit_window *window); +void window_redraw(ledit_window *window); +void window_resize(ledit_window *window, int w, int h); +void window_get_textview_size(ledit_window *window, int *w_ret, int *h_ret); void clipboard_primary_to_clipboard(ledit_window *window); void clipboard_paste_clipboard(ledit_window *window); void clipboard_paste_primary(ledit_window *window); -txtbuf *ledit_window_get_primary_clipboard_buffer(void); +txtbuf *window_get_primary_clipboard_buffer(void); -void ledit_window_button_press(ledit_window *window, XEvent *event, int scroll_num); -void ledit_window_button_release(ledit_window *window, XEvent *event); -void ledit_window_drag_motion(ledit_window *window, XEvent *event); -void ledit_window_clipboard_event(ledit_window *window, XEvent *event); +void window_button_press(ledit_window *window, XEvent *event, int scroll_num); +void window_button_release(ledit_window *window, XEvent *event); +void window_drag_motion(ledit_window *window, XEvent *event); +void window_clipboard_event(ledit_window *window, XEvent *event); void xximspot(ledit_window *window, int x, int y);