diff options
| author | Albert Cervin <albert@acervin.com> | 2024-02-01 00:08:06 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2024-02-01 00:09:06 +0100 |
| commit | 1653dfaef03d48a8a3aacfdea33ec6d82cab2a06 (patch) | |
| tree | a122314f47da3c3904b506f830932e576b45092d /src | |
| parent | 0e40d7a21bc0b139086e61e52bac6dc1115703bc (diff) | |
| download | dged-1653dfaef03d48a8a3aacfdea33ec6d82cab2a06.tar.gz dged-1653dfaef03d48a8a3aacfdea33ec6d82cab2a06.tar.xz dged-1653dfaef03d48a8a3aacfdea33ec6d82cab2a06.zip | |
Add git commit syntax
Diffstat (limited to 'src')
| -rw-r--r-- | src/dged/lang.c | 3 | ||||
| -rw-r--r-- | src/dged/syntax.c | 21 | ||||
| -rw-r--r-- | src/main/main.c | 4 |
3 files changed, 23 insertions, 5 deletions
diff --git a/src/dged/lang.c b/src/dged/lang.c index e392136..562f162 100644 --- a/src/dged/lang.c +++ b/src/dged/lang.c @@ -57,6 +57,7 @@ void languages_init(bool register_default) { define_lang("Nix", "nix", ".*\\.nix", 4, "rnix-lsp"); define_lang("Make", "make", ".*(Makefile|\\.mk)", 4, NULL); define_lang("Python", "python", ".*\\.py", 4, NULL); + define_lang("Git Commit Message", "gitcommit", "COMMIT_EDITMSG", 4, NULL); } } @@ -215,6 +216,6 @@ struct language lang_from_id(const char *id) { return lang_from_settings(id); } else { minibuffer_echo_timeout(4, "failed to find language \"%s\"", id); - return lang_from_settings("languages.fnd"); + return g_fundamental; } } diff --git a/src/dged/syntax.c b/src/dged/syntax.c index 0935080..1091123 100644 --- a/src/dged/syntax.c +++ b/src/dged/syntax.c @@ -17,6 +17,7 @@ #include "hash.h" #include "minibuffer.h" #include "path.h" +#include "settings.h" #include "text.h" #include "vec.h" @@ -110,8 +111,17 @@ static const char *read_text(void *payload, uint32_t byte_offset, return NULL; } +static const char *grammar_name_from_buffer(struct buffer *buffer) { + struct setting *s = lang_setting(&buffer->lang, "grammar"); + if (s != NULL && s->value.type == Setting_String) { + return s->value.string_value; + } + + return buffer->lang.name; +} + static const char *lang_folder(struct buffer *buffer) { - const char *langname = buffer->lang.name; + const char *langname = grammar_name_from_buffer(buffer); size_t tspath_len = strlen(treesitter_path); size_t lang_len = strlen(langname); @@ -328,6 +338,7 @@ static void update_parser(struct buffer *buffer, void *userdata, } else if (s8eq(cname, s8("string")) || s8eq(cname, s8("string.special")) || s8eq(cname, s8("string.special.path")) || + s8eq(cname, s8("text.title")) || s8eq(cname, s8("text.uri")) || s8eq(cname, s8("string.special.uri"))) { highlight = true; color = Color_Green; @@ -472,7 +483,7 @@ static void create_parser(struct buffer *buffer, void *userdata) { return; } - const char *langname = buffer->lang.name; + const char *langname = grammar_name_from_buffer(buffer); size_t lang_len = strlen(langname); const char *prefix = "tree_sitter_"; @@ -547,7 +558,13 @@ void syntax_init() { return; } + // TODO: check that it exists + struct language l = lang_from_id("gitcommit"); + lang_setting_set_default(&l, "grammar", + (struct setting_value){.type = Setting_String, + .string_value = "gitcommit"}); buffer_add_create_hook(create_parser, NULL); + lang_destroy(&l); } void syntax_teardown() { diff --git a/src/main/main.c b/src/main/main.c index c40f438..348ac1e 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -285,8 +285,8 @@ int main(int argc, char *argv[]) { struct window *active_window = windows_get_active(); - /* Update the screen by flushing command lists collected from updating the - * buffers. + /* Update the screen by flushing command lists collected + * from updating the buffers. */ TIMED_SCOPE_BEGIN(display); display_begin_render(display); |
