diff options
| author | Albert Cervin <albert@acervin.com> | 2023-03-17 08:43:41 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-03-17 08:43:41 +0100 |
| commit | 0e61e64b4e1036f2bf107efb01bea1017893d5e6 (patch) | |
| tree | afed627a8e4a0d3136e6f5ff3e6ca1a1a7274ca6 /src/lang.h | |
| parent | 40db61eb7a2019ced97f09a9687139f35749f4e0 (diff) | |
| download | dged-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.h | 46 |
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 |
