-
Hi everyone, First of all, thank you for this library – it's amazing! 😄 Currently, I'm having difficulties using the highlight library in C... Do you have any examples? Below is my non-working code 😭 . Any help is appreciated! extern const TSLanguage *tree_sitter_json(void);
void _test(void)
{
const char source_code[] = "[1, null]";
const char highlight_query[] = "(pair\n"
"key: (_) @string.special.key)\n"
"(string) @string\n"
"(number) @number\n"
"[\n"
" (null)\n"
" (true)\n"
" (false)\n"
"] @constant.builtin\n"
"(escape_sequence) @escape\n"
"(comment) @comment";
const char regex[] = "{\n"
" \"tree-sitter\": [\n"
" {\n"
" \"scope\": \"source.json\",\n"
" \"file-types\": [\n"
" \"json\"\n"
" ]\n"
" }\n"
" ]\n"
"}\n";
const char *highlight_names[] = {"number"};
const char *attribute_strings[] = {"red"};
TSHighlighter *highlighter = ts_highlighter_new(highlight_names, attribute_strings, 1);
ts_highlighter_add_language(highlighter, "source.json", regex, tree_sitter_json(), highlight_query, NULL, NULL, sizeof(highlight_query), 0, 0);
TSHighlightBuffer *buffer = ts_highlight_buffer_new();
ts_highlighter_highlight(highlighter, "source.json", source_code, sizeof(source_code), buffer, 0);
printf("buffer length: %u\n", ts_highlight_buffer_len(buffer));
printf("%s\n", ts_highlight_buffer_content(buffer));
ts_highlight_buffer_delete(buffer);
ts_highlighter_delete(highlighter);
} |
Beta Was this translation helpful? Give feedback.
Answered by
wervin
Dec 7, 2023
Replies: 1 comment
-
Okay, I should have verified whether extern const TSLanguage *tree_sitter_json(void);
void _test(void)
{
const char source_code[] = "[1, null]";
const char highlight_query[] = "(number) @number";
const char *highlight_names[] = {"number"};
const char *attribute_strings[] = {"red"};
TSHighlighter *highlighter = ts_highlighter_new(highlight_names, attribute_strings, 1);
ts_highlighter_add_language(highlighter, "source.json", NULL, tree_sitter_json(), highlight_query, NULL, NULL, sizeof(highlight_query) - 1, 0, 0);
TSHighlightBuffer *buffer = ts_highlight_buffer_new();
ts_highlighter_highlight(highlighter, "source.json", source_code, sizeof(source_code), buffer, 0);
const uint8_t *raw = ts_highlight_buffer_content(buffer);
printf("%s\n", raw);
ts_highlight_buffer_delete(buffer);
ts_highlighter_delete(highlighter);
} |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
wervin
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Okay, I should have verified whether
ts_highlighter_add_language
returned an error, that should provide the answer. And now, it works! 😄