summaryrefslogtreecommitdiff
path: root/src/buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 14389e7..7a7fb84 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -95,18 +95,28 @@ struct buffer {
/** Text data structure */
struct text *text;
+ /** Location of dot (cursor) */
struct buffer_location dot;
+
+ /** Location of mark (where a selection starts) */
struct buffer_location mark;
+
+ /** True if the start of a selection has been set */
bool mark_set;
- // local keymaps
+ /** Buffer-local keymaps in reverse priority order */
struct keymap *keymaps;
+
+ /** Number of buffer-local keymaps */
uint32_t nkeymaps;
+
+ /** Maximum number of keymaps */
uint32_t nkeymaps_max;
- uint32_t scroll_line;
- uint32_t scroll_col;
+ /** Current buffer scroll position */
+ struct buffer_location scroll;
+ /** Buffer update hooks */
struct update_hooks update_hooks;
};
@@ -134,6 +144,9 @@ void buffer_beginning_of_line(struct buffer *buffer);
void buffer_newline(struct buffer *buffer);
void buffer_indent(struct buffer *buffer);
+void buffer_goto_beginning(struct buffer *buffer);
+void buffer_goto_end(struct buffer *buffer);
+
void buffer_set_mark(struct buffer *buffer);
void buffer_clear_mark(struct buffer *buffer);
void buffer_set_mark_at(struct buffer *buffer, uint32_t line, uint32_t col);
@@ -150,6 +163,7 @@ uint32_t buffer_add_update_hook(struct buffer *buffer, update_hook_cb hook,
struct buffer buffer_from_file(char *filename);
void buffer_to_file(struct buffer *buffer);
+void buffer_write_to(struct buffer *buffer, const char *filename);
void buffer_update(struct buffer *buffer, uint32_t width, uint32_t height,
struct command_list *commands, uint64_t frame_time,
@@ -182,6 +196,9 @@ BUFFER_WRAPCMD(buffer_clear_mark);
BUFFER_WRAPCMD(buffer_copy);
BUFFER_WRAPCMD(buffer_cut);
BUFFER_WRAPCMD(buffer_paste);
+BUFFER_WRAPCMD(buffer_paste_older);
+BUFFER_WRAPCMD(buffer_goto_beginning);
+BUFFER_WRAPCMD(buffer_goto_end);
static struct command BUFFER_COMMANDS[] = {
{.name = "kill-line", .fn = buffer_kill_line_cmd},
@@ -203,4 +220,7 @@ static struct command BUFFER_COMMANDS[] = {
{.name = "copy", .fn = buffer_copy_cmd},
{.name = "cut", .fn = buffer_cut_cmd},
{.name = "paste", .fn = buffer_paste_cmd},
+ {.name = "paste-older", .fn = buffer_paste_older_cmd},
+ {.name = "goto-beginning", .fn = buffer_goto_beginning_cmd},
+ {.name = "goto-end", .fn = buffer_goto_end_cmd},
};