summaryrefslogtreecommitdiff
path: root/src/dged/lang.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-05-22 00:00:29 +0200
committerAlbert Cervin <albert@acervin.com>2024-09-12 20:17:56 +0200
commit405da5f84b072ea97b69359454899f45d92d24b6 (patch)
tree20525b4bc44a5d8cbab4d62abe8413e174731db6 /src/dged/lang.c
parent4ab7e453e26afc6e9f4938c65f89463fbba9e267 (diff)
downloaddged-405da5f84b072ea97b69359454899f45d92d24b6.tar.gz
dged-405da5f84b072ea97b69359454899f45d92d24b6.tar.xz
dged-405da5f84b072ea97b69359454899f45d92d24b6.zip
WIP LSP client
This contains the start of an LSP client. Nothing (except starting the LSP server) works at the moment and the feature is disabled by default.
Diffstat (limited to 'src/dged/lang.c')
-rw-r--r--src/dged/lang.c34
1 files changed, 11 insertions, 23 deletions
diff --git a/src/dged/lang.c b/src/dged/lang.c
index 070b96e..92b4fbd 100644
--- a/src/dged/lang.c
+++ b/src/dged/lang.c
@@ -19,17 +19,19 @@ void define_lang(const char *name, const char *id, const char *pattern,
_lang_setting_set_default(
id, "name",
(struct setting_value){.type = Setting_String,
- .string_value = (char *)name});
+ .data.string_value = (char *)name});
_lang_setting_set_default(
id, "pattern",
(struct setting_value){.type = Setting_String,
- .string_value = (char *)pattern});
- _lang_setting_set_default(id, "tab-width",
- (struct setting_value){.type = Setting_Number,
- .number_value = tab_width});
+ .data.string_value = (char *)pattern});
+ _lang_setting_set_default(
+ id, "tab-width",
+ (struct setting_value){.type = Setting_Number,
+ .data.number_value = tab_width});
_lang_setting_set_default(
id, "use-tabs",
- (struct setting_value){.type = Setting_Bool, .bool_value = use_tabs});
+ (struct setting_value){.type = Setting_Bool,
+ .data.bool_value = use_tabs});
}
static struct language g_fundamental = {
@@ -65,7 +67,8 @@ bool lang_is_fundamental(const struct language *lang) {
static struct language lang_from_settings(const char *id) {
struct setting *name = _lang_setting(id, "name");
- const char *name_value = name != NULL ? name->value.string_value : "Unknown";
+ const char *name_value =
+ name != NULL ? name->value.data.string_value : "Unknown";
return (struct language){
.id = strdup(id),
@@ -73,21 +76,6 @@ static struct language lang_from_settings(const char *id) {
};
}
-static void next_ext(const char *curr, const char **nxt, const char **end) {
- if (curr == NULL) {
- *nxt = *end = NULL;
- return;
- }
-
- *nxt = curr;
- *end = curr + strlen(curr);
-
- const char *spc = strchr(curr, ' ');
- if (spc != NULL) {
- *end = spc;
- }
-}
-
void lang_settings(struct language *lang, struct setting **settings[],
uint32_t *nsettings) {
const char *key = setting_join_key("languages", lang->id);
@@ -159,7 +147,7 @@ struct language lang_from_filename(const char *filename) {
struct setting *setting = settings[i];
char *setting_name = strrchr(setting->path, '.');
if (setting_name != NULL && strncmp(setting_name + 1, "pattern", 5) == 0) {
- const char *val = setting->value.string_value;
+ const char *val = setting->value.data.string_value;
regex_t regex;
if (regcomp(&regex, val, REG_EXTENDED) == 0 &&
regexec(&regex, filename, 0, NULL, 0) == 0) {