summaryrefslogtreecommitdiff
path: root/src/dged/settings.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2023-11-26 23:08:06 +0100
committerAlbert Cervin <albert@acervin.com>2024-01-15 10:39:56 +0100
commit64d6816a36567274551dd4f067fe4d05b1445cc0 (patch)
tree50f8dc895d363ab391d30226f665870d8ce263b5 /src/dged/settings.c
parentc87888f10dfb54590c5aae8311b7aff887193d9a (diff)
downloaddged-64d6816a36567274551dd4f067fe4d05b1445cc0.tar.gz
dged-64d6816a36567274551dd4f067fe4d05b1445cc0.tar.xz
dged-64d6816a36567274551dd4f067fe4d05b1445cc0.zip
Completion rework
- Add support for building with clang Also fix some annoying bugs: - Visual column was wrong when using tabs - Add shift-tab for inserting an actual tab - Fix minibuffer sometimes having dot above it
Diffstat (limited to 'src/dged/settings.c')
-rw-r--r--src/dged/settings.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/dged/settings.c b/src/dged/settings.c
index 4370aa9..7b5e4dc 100644
--- a/src/dged/settings.c
+++ b/src/dged/settings.c
@@ -116,6 +116,9 @@ static int32_t parse_toml(struct parser *state, char **errmsgs[]) {
VEC_INIT(&errs, 16);
struct token t = {0};
+ int64_t i = 0;
+ bool b = false;
+ char *v = NULL, *err = NULL;
while (parser_next_token(state, &t)) {
switch (t.type) {
case Token_Table:
@@ -145,26 +148,26 @@ static int32_t parse_toml(struct parser *state, char **errmsgs[]) {
curkey = calloc(len, 1);
if (curtbl != NULL) {
strcpy(curkey, curtbl);
- strncat(curkey, ".", 1);
+ curkey[strlen(curtbl)] = '.';
}
strncat(curkey, (char *)t.data, t.len);
break;
case Token_IntValue:
- int64_t i = *((int64_t *)t.data);
+ i = *((int64_t *)t.data);
settings_upsert(curkey, (struct setting_value){.type = Setting_Number,
.number_value = i});
break;
case Token_BoolValue:
- bool b = *((bool *)t.data);
+ b = *((bool *)t.data);
settings_upsert(curkey, (struct setting_value){.type = Setting_Bool,
.bool_value = b});
break;
case Token_StringValue:
- char *v = calloc(t.len + 1, 1);
+ v = calloc(t.len + 1, 1);
strncpy(v, (char *)t.data, t.len);
settings_upsert(curkey, (struct setting_value){.type = Setting_String,
.string_value = v});
@@ -172,11 +175,14 @@ static int32_t parse_toml(struct parser *state, char **errmsgs[]) {
break;
case Token_Error:
- char *err = malloc(t.len + 128);
+ err = malloc(t.len + 128);
snprintf(err, t.len + 128, "error (%d:%d): %.*s\n", t.row, t.col, t.len,
(char *)t.data);
VEC_PUSH(&errs, err);
break;
+
+ case Token_Comment:
+ break;
}
}