summaryrefslogtreecommitdiff
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c13
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,