diff options
| author | Albert Cervin <albert@acervin.com> | 2023-02-21 22:26:36 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-02-21 22:26:36 +0100 |
| commit | 44fd8cde61e3e89e5f83c98900a403e922073727 (patch) | |
| tree | 22ed65a8b3c766fa21c35fe4d567399e3810454a /src/buffer.c | |
| parent | d7bf8702bf32720d93c4e690937bc8b683926be1 (diff) | |
| download | dged-44fd8cde61e3e89e5f83c98900a403e922073727.tar.gz dged-44fd8cde61e3e89e5f83c98900a403e922073727.tar.xz dged-44fd8cde61e3e89e5f83c98900a403e922073727.zip | |
Implement support for settings
Settings are a flat "dictionary" containing
paths to settings on the format:
<category>.<sub-category>.<setting>.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 13 |
1 files changed, 11 insertions, 2 deletions
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 <fcntl.h> @@ -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, |
