From 44fd8cde61e3e89e5f83c98900a403e922073727 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Tue, 21 Feb 2023 22:26:36 +0100 Subject: Implement support for settings Settings are a flat "dictionary" containing paths to settings on the format: ... --- src/buffer.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/buffer.c') diff --git a/src/buffer.c b/src/buffer.c index 60ef0f4..2decdea 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -4,6 +4,7 @@ #include "errno.h" #include "minibuffer.h" #include "reactor.h" +#include "settings.h" #include "utf8.h" #include @@ -149,6 +150,12 @@ void buffer_clear(struct buffer *buffer) { buffer->dot.col = buffer->dot.line = 0; } +void buffer_static_init() { + settings_register_setting( + "editor.tab-width", + (struct setting_value){.type = Setting_Number, .number_value = 4}); +} + void buffer_static_teardown() { for (uint32_t i = 0; i < KILL_RING_SZ; ++i) { if (g_kill_ring.buffer[i].allocated) { @@ -585,8 +592,10 @@ void buffer_newline(struct buffer *buffer) { } void buffer_indent(struct buffer *buffer) { - // TODO: config - buffer_add_text(buffer, (uint8_t *)" ", 4); + struct setting *setting = settings_get("editor.tab-width"); + buffer_add_text( + buffer, (uint8_t *)" ", + setting->value.number_value > 16 ? 16 : setting->value.number_value); } uint32_t buffer_add_update_hook(struct buffer *buffer, update_hook_cb hook, -- cgit v1.2.3