summaryrefslogtreecommitdiff
path: root/src/lang.h
diff options
context:
space:
mode:
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