diff options
Diffstat (limited to 'src/main/main.c')
| -rw-r--r-- | src/main/main.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/main.c b/src/main/main.c index d0d118b..b96edd4 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -214,6 +214,11 @@ int main(int argc, char *argv[]) { #ifdef SYNTAX_ENABLE char *treesitter_path_env = getenv("TREESITTER_GRAMMARS"); + struct setting *path_setting = settings_get("editor.grammars-path"); + char *settings_path = NULL; + if (path_setting != NULL && path_setting->value.type == Setting_String) { + settings_path = path_setting->value.string_value; + } const char *builtin_path = join_path(xstr(DATADIR), "grammars"); const char *treesitter_path[256] = {0}; @@ -229,6 +234,16 @@ int main(int argc, char *argv[]) { } } + if (settings_path != NULL) { + settings_path = strdup(settings_path); + char *result = strtok(settings_path, ":"); + while (result != NULL && treesitter_path_len < 256) { + treesitter_path[treesitter_path_len] = result; + ++treesitter_path_len; + result = strtok(NULL, ":"); + } + } + if (treesitter_path_len < 256) { treesitter_path[treesitter_path_len] = builtin_path; ++treesitter_path_len; @@ -239,6 +254,9 @@ int main(int argc, char *argv[]) { if (treesitter_path_env != NULL) { free((void *)treesitter_path_env); } + if (settings_path != NULL) { + free((void *)settings_path); + } free((void *)builtin_path); #endif |
