summaryrefslogtreecommitdiff
path: root/src/lang.h
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2023-03-17 08:43:41 +0100
committerAlbert Cervin <albert@acervin.com>2023-03-17 08:43:41 +0100
commit0e61e64b4e1036f2bf107efb01bea1017893d5e6 (patch)
treeafed627a8e4a0d3136e6f5ff3e6ca1a1a7274ca6 /src/lang.h
parent40db61eb7a2019ced97f09a9687139f35749f4e0 (diff)
downloaddged-0e61e64b4e1036f2bf107efb01bea1017893d5e6.tar.gz
dged-0e61e64b4e1036f2bf107efb01bea1017893d5e6.tar.xz
dged-0e61e64b4e1036f2bf107efb01bea1017893d5e6.zip
Implement support for languages
Uses the settings system to implement a small system for per-language settings.
Diffstat (limited to 'src/lang.h')
-rw-r--r--src/lang.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/lang.h b/src/lang.h
new file mode 100644
index 0000000..984e207
--- /dev/null
+++ b/src/lang.h
@@ -0,0 +1,46 @@
+#ifndef _LANG_H
+#define _LANG_H
+
+#include <stdbool.h>
+#include <stdint.h>
+
+/**
+ * Settings for a programming language.
+ */
+struct language {
+ /** Descriptive name of the programming language */
+ const char *name;
+
+ /** Tab width for indentation */
+ uint32_t tab_width;
+
+ /** Path to the language server */
+ const char *lang_srv;
+};
+
+/**
+ * Initialize languages.
+ *
+ * @param[in] register_default Set to true to register some well known
+ * languages.
+ */
+void languages_init(bool register_default);
+
+/**
+ * Get a language config by file name extension.
+ *
+ * @param[in] ext File extension
+ * @returns A language config instance or the default language if not found.
+ */
+struct language lang_from_extension(const char *ext);
+
+/**
+ * Get a language config by id. The language id is a short (all-lowercase)
+ * string identifying the language.
+ *
+ * @param[in] id The language id.
+ * @returns A language config instance or the default language if not found.
+ */
+struct language lang_from_id(const char *id);
+
+#endif