From 3ae33ebfab7545597d48dba173830f262deaf24f Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 2 Mar 2023 12:13:18 -0500 Subject: some CSS highlighting --- development.md | 3 + keywords.h | 44 +++++++++++++-- keywords.py | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- main.c | 12 ++-- syntax.c | 129 +++++++++++++++++++++++++++++++++++++++++- ted.cfg | 4 ++ ted.h | 2 + 7 files changed, 357 insertions(+), 13 deletions(-) diff --git a/development.md b/development.md index 80b7c3b..7ad5b7d 100644 --- a/development.md +++ b/development.md @@ -79,6 +79,9 @@ Update `syntax_register_builtin_languages` accordingly. Make sure to define `comment-start` and `comment-end` for the language in `ted.cfg`. +You will probably want to update `keywords.py` when implementing +syntax highlighting. + ### Syntax highlighting Obviously we don't want to re-highlight the whole file every time a change is made. diff --git a/keywords.h b/keywords.h index 82bab7e..0e60d29 100644 --- a/keywords.h +++ b/keywords.h @@ -27,7 +27,7 @@ static const Keyword syntax_keywords_c_S[121] = {{"SCHAR_MAX", SYNTAX_CONSTANT}, static const Keyword syntax_keywords_c_T[4] = {{"TIME_UTC", SYNTAX_CONSTANT},{"TMP_MAX", SYNTAX_CONSTANT},{"TMP_MAX_S", SYNTAX_CONSTANT},{"TSS_DTOR_ITERATIONS", SYNTAX_CONSTANT}}; static const Keyword syntax_keywords_c_U[19] = {{"UCHAR_MAX", SYNTAX_CONSTANT},{"UINT16_MAX", SYNTAX_CONSTANT},{"UINT32_MAX", SYNTAX_CONSTANT},{"UINT64_MAX", SYNTAX_CONSTANT},{"UINT8_MAX", SYNTAX_CONSTANT},{"UINTMAX_MAX", SYNTAX_CONSTANT},{"UINTPTR_MAX", SYNTAX_CONSTANT},{"UINT_FAST16_MAX", SYNTAX_CONSTANT},{"UINT_FAST32_MAX", SYNTAX_CONSTANT},{"UINT_FAST64_MAX", SYNTAX_CONSTANT},{"UINT_FAST8_MAX", SYNTAX_CONSTANT},{"UINT_LEAST16_MAX", SYNTAX_CONSTANT},{"UINT_LEAST32_MAX", SYNTAX_CONSTANT},{"UINT_LEAST64_MAX", SYNTAX_CONSTANT},{"UINT_LEAST8_MAX", SYNTAX_CONSTANT},{"UINT_MAX", SYNTAX_CONSTANT},{"ULLONG_MAX", SYNTAX_CONSTANT},{"ULONG_MAX", SYNTAX_CONSTANT},{"USHRT_MAX", SYNTAX_CONSTANT}}; static const Keyword syntax_keywords_c_W[5] = {{"WCHAR_MAX", SYNTAX_CONSTANT},{"WCHAR_MIN", SYNTAX_CONSTANT},{"WEOF", SYNTAX_CONSTANT},{"WINT_MAX", SYNTAX_CONSTANT},{"WINT_MIN", SYNTAX_CONSTANT}}; -static const Keyword syntax_keywords_c__[13] = {{"_Alignas", SYNTAX_KEYWORD},{"_Alignof", SYNTAX_KEYWORD},{"_Atomic", SYNTAX_KEYWORD},{"_Bool", SYNTAX_KEYWORD},{"_Complex", SYNTAX_KEYWORD},{"_Generic", SYNTAX_KEYWORD},{"_IOFBF", SYNTAX_CONSTANT},{"_IOLBF", SYNTAX_CONSTANT},{"_IONBF", SYNTAX_CONSTANT},{"_Imaginary", SYNTAX_KEYWORD},{"_Noreturn", SYNTAX_KEYWORD},{"_Static_assert", SYNTAX_KEYWORD},{"_Thread_local", SYNTAX_KEYWORD}}; +static const Keyword syntax_keywords_c_x5f[13] = {{"_Alignas", SYNTAX_KEYWORD},{"_Alignof", SYNTAX_KEYWORD},{"_Atomic", SYNTAX_KEYWORD},{"_Bool", SYNTAX_KEYWORD},{"_Complex", SYNTAX_KEYWORD},{"_Generic", SYNTAX_KEYWORD},{"_IOFBF", SYNTAX_CONSTANT},{"_IOLBF", SYNTAX_CONSTANT},{"_IONBF", SYNTAX_CONSTANT},{"_Imaginary", SYNTAX_KEYWORD},{"_Noreturn", SYNTAX_KEYWORD},{"_Static_assert", SYNTAX_KEYWORD},{"_Thread_local", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_c_a[42] = {{"alignas", SYNTAX_BUILTIN},{"alignof", SYNTAX_BUILTIN},{"atomic_address", SYNTAX_BUILTIN},{"atomic_bool", SYNTAX_BUILTIN},{"atomic_char", SYNTAX_BUILTIN},{"atomic_char16_t", SYNTAX_BUILTIN},{"atomic_char32_t", SYNTAX_BUILTIN},{"atomic_flag", SYNTAX_BUILTIN},{"atomic_int", SYNTAX_BUILTIN},{"atomic_int_fast16_t", SYNTAX_BUILTIN},{"atomic_int_fast32_t", SYNTAX_BUILTIN},{"atomic_int_fast64_t", SYNTAX_BUILTIN},{"atomic_int_fast8_t", SYNTAX_BUILTIN},{"atomic_int_least16_t", SYNTAX_BUILTIN},{"atomic_int_least32_t", SYNTAX_BUILTIN},{"atomic_int_least64_t", SYNTAX_BUILTIN},{"atomic_int_least8_t", SYNTAX_BUILTIN},{"atomic_intmax_t", SYNTAX_BUILTIN},{"atomic_intptr_t", SYNTAX_BUILTIN},{"atomic_llong", SYNTAX_BUILTIN},{"atomic_long", SYNTAX_BUILTIN},{"atomic_ptrdiff_t", SYNTAX_BUILTIN},{"atomic_schar", SYNTAX_BUILTIN},{"atomic_short", SYNTAX_BUILTIN},{"atomic_size_t", SYNTAX_BUILTIN},{"atomic_uchar", SYNTAX_BUILTIN},{"atomic_uint", SYNTAX_BUILTIN},{"atomic_uint_fast16_t", SYNTAX_BUILTIN},{"atomic_uint_fast32_t", SYNTAX_BUILTIN},{"atomic_uint_fast64_t", SYNTAX_BUILTIN},{"atomic_uint_fast8_t", SYNTAX_BUILTIN},{"atomic_uint_least16_t", SYNTAX_BUILTIN},{"atomic_uint_least32_t", SYNTAX_BUILTIN},{"atomic_uint_least64_t", SYNTAX_BUILTIN},{"atomic_uint_least8_t", SYNTAX_BUILTIN},{"atomic_uintmax_t", SYNTAX_BUILTIN},{"atomic_uintptr_t", SYNTAX_BUILTIN},{"atomic_ullong", SYNTAX_BUILTIN},{"atomic_ulong", SYNTAX_BUILTIN},{"atomic_ushort", SYNTAX_BUILTIN},{"atomic_wchar_t", SYNTAX_BUILTIN},{"auto", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_c_b[2] = {{"bool", SYNTAX_BUILTIN},{"break", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_c_c[11] = {{"case", SYNTAX_KEYWORD},{"char", SYNTAX_KEYWORD},{"char16_t", SYNTAX_BUILTIN},{"char32_t", SYNTAX_BUILTIN},{"char8_t", SYNTAX_BUILTIN},{"clock_t", SYNTAX_BUILTIN},{"cnd_t", SYNTAX_BUILTIN},{"complex", SYNTAX_BUILTIN},{"const", SYNTAX_KEYWORD},{"constraint_handler_t", SYNTAX_BUILTIN},{"continue", SYNTAX_KEYWORD}}; @@ -50,7 +50,7 @@ static const Keyword syntax_keywords_c_v[3] = {{"va_list", SYNTAX_BUILTIN},{"voi static const Keyword syntax_keywords_c_w[5] = {{"wchar_t", SYNTAX_BUILTIN},{"wctrans_t", SYNTAX_BUILTIN},{"wctype_t", SYNTAX_BUILTIN},{"while", SYNTAX_KEYWORD},{"wint_t", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_c_x[1] = {{"xtime", SYNTAX_BUILTIN}}; static const KeywordList syntax_all_keywords_c[128] = { - ['A'] = {syntax_keywords_c_A, arr_count(syntax_keywords_c_A)}, ['B'] = {syntax_keywords_c_B, arr_count(syntax_keywords_c_B)}, ['C'] = {syntax_keywords_c_C, arr_count(syntax_keywords_c_C)}, ['D'] = {syntax_keywords_c_D, arr_count(syntax_keywords_c_D)}, ['E'] = {syntax_keywords_c_E, arr_count(syntax_keywords_c_E)}, ['F'] = {syntax_keywords_c_F, arr_count(syntax_keywords_c_F)}, ['H'] = {syntax_keywords_c_H, arr_count(syntax_keywords_c_H)}, ['I'] = {syntax_keywords_c_I, arr_count(syntax_keywords_c_I)}, ['L'] = {syntax_keywords_c_L, arr_count(syntax_keywords_c_L)}, ['M'] = {syntax_keywords_c_M, arr_count(syntax_keywords_c_M)}, ['N'] = {syntax_keywords_c_N, arr_count(syntax_keywords_c_N)}, ['O'] = {syntax_keywords_c_O, arr_count(syntax_keywords_c_O)}, ['P'] = {syntax_keywords_c_P, arr_count(syntax_keywords_c_P)}, ['R'] = {syntax_keywords_c_R, arr_count(syntax_keywords_c_R)}, ['S'] = {syntax_keywords_c_S, arr_count(syntax_keywords_c_S)}, ['T'] = {syntax_keywords_c_T, arr_count(syntax_keywords_c_T)}, ['U'] = {syntax_keywords_c_U, arr_count(syntax_keywords_c_U)}, ['W'] = {syntax_keywords_c_W, arr_count(syntax_keywords_c_W)}, ['_'] = {syntax_keywords_c__, arr_count(syntax_keywords_c__)}, ['a'] = {syntax_keywords_c_a, arr_count(syntax_keywords_c_a)}, ['b'] = {syntax_keywords_c_b, arr_count(syntax_keywords_c_b)}, ['c'] = {syntax_keywords_c_c, arr_count(syntax_keywords_c_c)}, ['d'] = {syntax_keywords_c_d, arr_count(syntax_keywords_c_d)}, ['e'] = {syntax_keywords_c_e, arr_count(syntax_keywords_c_e)}, ['f'] = {syntax_keywords_c_f, arr_count(syntax_keywords_c_f)}, ['g'] = {syntax_keywords_c_g, arr_count(syntax_keywords_c_g)}, ['i'] = {syntax_keywords_c_i, arr_count(syntax_keywords_c_i)}, ['j'] = {syntax_keywords_c_j, arr_count(syntax_keywords_c_j)}, ['l'] = {syntax_keywords_c_l, arr_count(syntax_keywords_c_l)}, ['m'] = {syntax_keywords_c_m, arr_count(syntax_keywords_c_m)}, ['n'] = {syntax_keywords_c_n, arr_count(syntax_keywords_c_n)}, ['o'] = {syntax_keywords_c_o, arr_count(syntax_keywords_c_o)}, ['p'] = {syntax_keywords_c_p, arr_count(syntax_keywords_c_p)}, ['r'] = {syntax_keywords_c_r, arr_count(syntax_keywords_c_r)}, ['s'] = {syntax_keywords_c_s, arr_count(syntax_keywords_c_s)}, ['t'] = {syntax_keywords_c_t, arr_count(syntax_keywords_c_t)}, ['u'] = {syntax_keywords_c_u, arr_count(syntax_keywords_c_u)}, ['v'] = {syntax_keywords_c_v, arr_count(syntax_keywords_c_v)}, ['w'] = {syntax_keywords_c_w, arr_count(syntax_keywords_c_w)}, ['x'] = {syntax_keywords_c_x, arr_count(syntax_keywords_c_x)} + ['A'] = {syntax_keywords_c_A, arr_count(syntax_keywords_c_A)}, ['B'] = {syntax_keywords_c_B, arr_count(syntax_keywords_c_B)}, ['C'] = {syntax_keywords_c_C, arr_count(syntax_keywords_c_C)}, ['D'] = {syntax_keywords_c_D, arr_count(syntax_keywords_c_D)}, ['E'] = {syntax_keywords_c_E, arr_count(syntax_keywords_c_E)}, ['F'] = {syntax_keywords_c_F, arr_count(syntax_keywords_c_F)}, ['H'] = {syntax_keywords_c_H, arr_count(syntax_keywords_c_H)}, ['I'] = {syntax_keywords_c_I, arr_count(syntax_keywords_c_I)}, ['L'] = {syntax_keywords_c_L, arr_count(syntax_keywords_c_L)}, ['M'] = {syntax_keywords_c_M, arr_count(syntax_keywords_c_M)}, ['N'] = {syntax_keywords_c_N, arr_count(syntax_keywords_c_N)}, ['O'] = {syntax_keywords_c_O, arr_count(syntax_keywords_c_O)}, ['P'] = {syntax_keywords_c_P, arr_count(syntax_keywords_c_P)}, ['R'] = {syntax_keywords_c_R, arr_count(syntax_keywords_c_R)}, ['S'] = {syntax_keywords_c_S, arr_count(syntax_keywords_c_S)}, ['T'] = {syntax_keywords_c_T, arr_count(syntax_keywords_c_T)}, ['U'] = {syntax_keywords_c_U, arr_count(syntax_keywords_c_U)}, ['W'] = {syntax_keywords_c_W, arr_count(syntax_keywords_c_W)}, ['_'] = {syntax_keywords_c_x5f, arr_count(syntax_keywords_c_x5f)}, ['a'] = {syntax_keywords_c_a, arr_count(syntax_keywords_c_a)}, ['b'] = {syntax_keywords_c_b, arr_count(syntax_keywords_c_b)}, ['c'] = {syntax_keywords_c_c, arr_count(syntax_keywords_c_c)}, ['d'] = {syntax_keywords_c_d, arr_count(syntax_keywords_c_d)}, ['e'] = {syntax_keywords_c_e, arr_count(syntax_keywords_c_e)}, ['f'] = {syntax_keywords_c_f, arr_count(syntax_keywords_c_f)}, ['g'] = {syntax_keywords_c_g, arr_count(syntax_keywords_c_g)}, ['i'] = {syntax_keywords_c_i, arr_count(syntax_keywords_c_i)}, ['j'] = {syntax_keywords_c_j, arr_count(syntax_keywords_c_j)}, ['l'] = {syntax_keywords_c_l, arr_count(syntax_keywords_c_l)}, ['m'] = {syntax_keywords_c_m, arr_count(syntax_keywords_c_m)}, ['n'] = {syntax_keywords_c_n, arr_count(syntax_keywords_c_n)}, ['o'] = {syntax_keywords_c_o, arr_count(syntax_keywords_c_o)}, ['p'] = {syntax_keywords_c_p, arr_count(syntax_keywords_c_p)}, ['r'] = {syntax_keywords_c_r, arr_count(syntax_keywords_c_r)}, ['s'] = {syntax_keywords_c_s, arr_count(syntax_keywords_c_s)}, ['t'] = {syntax_keywords_c_t, arr_count(syntax_keywords_c_t)}, ['u'] = {syntax_keywords_c_u, arr_count(syntax_keywords_c_u)}, ['v'] = {syntax_keywords_c_v, arr_count(syntax_keywords_c_v)}, ['w'] = {syntax_keywords_c_w, arr_count(syntax_keywords_c_w)}, ['x'] = {syntax_keywords_c_x, arr_count(syntax_keywords_c_x)} }; static const Keyword syntax_keywords_cpp_A[10] = {{"ATOMIC_ADDRESS_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_CHAR16_T_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_CHAR32_T_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_CHAR_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_FLAG_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_INT_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_LLONG_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_LONG_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_SHORT_LOCK_FREE", SYNTAX_CONSTANT},{"ATOMIC_WCHAR_T_LOCK_FREE", SYNTAX_CONSTANT}}; @@ -71,7 +71,7 @@ static const Keyword syntax_keywords_cpp_S[121] = {{"SCHAR_MAX", SYNTAX_CONSTANT static const Keyword syntax_keywords_cpp_T[4] = {{"TIME_UTC", SYNTAX_CONSTANT},{"TMP_MAX", SYNTAX_CONSTANT},{"TMP_MAX_S", SYNTAX_CONSTANT},{"TSS_DTOR_ITERATIONS", SYNTAX_CONSTANT}}; static const Keyword syntax_keywords_cpp_U[19] = {{"UCHAR_MAX", SYNTAX_CONSTANT},{"UINT16_MAX", SYNTAX_CONSTANT},{"UINT32_MAX", SYNTAX_CONSTANT},{"UINT64_MAX", SYNTAX_CONSTANT},{"UINT8_MAX", SYNTAX_CONSTANT},{"UINTMAX_MAX", SYNTAX_CONSTANT},{"UINTPTR_MAX", SYNTAX_CONSTANT},{"UINT_FAST16_MAX", SYNTAX_CONSTANT},{"UINT_FAST32_MAX", SYNTAX_CONSTANT},{"UINT_FAST64_MAX", SYNTAX_CONSTANT},{"UINT_FAST8_MAX", SYNTAX_CONSTANT},{"UINT_LEAST16_MAX", SYNTAX_CONSTANT},{"UINT_LEAST32_MAX", SYNTAX_CONSTANT},{"UINT_LEAST64_MAX", SYNTAX_CONSTANT},{"UINT_LEAST8_MAX", SYNTAX_CONSTANT},{"UINT_MAX", SYNTAX_CONSTANT},{"ULLONG_MAX", SYNTAX_CONSTANT},{"ULONG_MAX", SYNTAX_CONSTANT},{"USHRT_MAX", SYNTAX_CONSTANT}}; static const Keyword syntax_keywords_cpp_W[5] = {{"WCHAR_MAX", SYNTAX_CONSTANT},{"WCHAR_MIN", SYNTAX_CONSTANT},{"WEOF", SYNTAX_CONSTANT},{"WINT_MAX", SYNTAX_CONSTANT},{"WINT_MIN", SYNTAX_CONSTANT}}; -static const Keyword syntax_keywords_cpp__[13] = {{"_Alignas", SYNTAX_KEYWORD},{"_Alignof", SYNTAX_KEYWORD},{"_Atomic", SYNTAX_KEYWORD},{"_Bool", SYNTAX_KEYWORD},{"_Complex", SYNTAX_KEYWORD},{"_Generic", SYNTAX_KEYWORD},{"_IOFBF", SYNTAX_CONSTANT},{"_IOLBF", SYNTAX_CONSTANT},{"_IONBF", SYNTAX_CONSTANT},{"_Imaginary", SYNTAX_KEYWORD},{"_Noreturn", SYNTAX_KEYWORD},{"_Static_assert", SYNTAX_KEYWORD},{"_Thread_local", SYNTAX_KEYWORD}}; +static const Keyword syntax_keywords_cpp_x5f[13] = {{"_Alignas", SYNTAX_KEYWORD},{"_Alignof", SYNTAX_KEYWORD},{"_Atomic", SYNTAX_KEYWORD},{"_Bool", SYNTAX_KEYWORD},{"_Complex", SYNTAX_KEYWORD},{"_Generic", SYNTAX_KEYWORD},{"_IOFBF", SYNTAX_CONSTANT},{"_IOLBF", SYNTAX_CONSTANT},{"_IONBF", SYNTAX_CONSTANT},{"_Imaginary", SYNTAX_KEYWORD},{"_Noreturn", SYNTAX_KEYWORD},{"_Static_assert", SYNTAX_KEYWORD},{"_Thread_local", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_cpp_a[48] = {{"alignas", SYNTAX_BUILTIN},{"alignof", SYNTAX_BUILTIN},{"and", SYNTAX_KEYWORD},{"and_eq", SYNTAX_KEYWORD},{"asm", SYNTAX_KEYWORD},{"atomic_address", SYNTAX_BUILTIN},{"atomic_bool", SYNTAX_BUILTIN},{"atomic_cancel", SYNTAX_KEYWORD},{"atomic_char", SYNTAX_BUILTIN},{"atomic_char16_t", SYNTAX_BUILTIN},{"atomic_char32_t", SYNTAX_BUILTIN},{"atomic_commit", SYNTAX_KEYWORD},{"atomic_flag", SYNTAX_BUILTIN},{"atomic_int", SYNTAX_BUILTIN},{"atomic_int_fast16_t", SYNTAX_BUILTIN},{"atomic_int_fast32_t", SYNTAX_BUILTIN},{"atomic_int_fast64_t", SYNTAX_BUILTIN},{"atomic_int_fast8_t", SYNTAX_BUILTIN},{"atomic_int_least16_t", SYNTAX_BUILTIN},{"atomic_int_least32_t", SYNTAX_BUILTIN},{"atomic_int_least64_t", SYNTAX_BUILTIN},{"atomic_int_least8_t", SYNTAX_BUILTIN},{"atomic_intmax_t", SYNTAX_BUILTIN},{"atomic_intptr_t", SYNTAX_BUILTIN},{"atomic_llong", SYNTAX_BUILTIN},{"atomic_long", SYNTAX_BUILTIN},{"atomic_noexcept", SYNTAX_KEYWORD},{"atomic_ptrdiff_t", SYNTAX_BUILTIN},{"atomic_schar", SYNTAX_BUILTIN},{"atomic_short", SYNTAX_BUILTIN},{"atomic_size_t", SYNTAX_BUILTIN},{"atomic_uchar", SYNTAX_BUILTIN},{"atomic_uint", SYNTAX_BUILTIN},{"atomic_uint_fast16_t", SYNTAX_BUILTIN},{"atomic_uint_fast32_t", SYNTAX_BUILTIN},{"atomic_uint_fast64_t", SYNTAX_BUILTIN},{"atomic_uint_fast8_t", SYNTAX_BUILTIN},{"atomic_uint_least16_t", SYNTAX_BUILTIN},{"atomic_uint_least32_t", SYNTAX_BUILTIN},{"atomic_uint_least64_t", SYNTAX_BUILTIN},{"atomic_uint_least8_t", SYNTAX_BUILTIN},{"atomic_uintmax_t", SYNTAX_BUILTIN},{"atomic_uintptr_t", SYNTAX_BUILTIN},{"atomic_ullong", SYNTAX_BUILTIN},{"atomic_ulong", SYNTAX_BUILTIN},{"atomic_ushort", SYNTAX_BUILTIN},{"atomic_wchar_t", SYNTAX_BUILTIN},{"auto", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_cpp_b[4] = {{"bitand", SYNTAX_KEYWORD},{"bitor", SYNTAX_KEYWORD},{"bool", SYNTAX_KEYWORD},{"break", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_cpp_c[22] = {{"case", SYNTAX_KEYWORD},{"catch", SYNTAX_KEYWORD},{"char", SYNTAX_KEYWORD},{"char16_t", SYNTAX_BUILTIN},{"char32_t", SYNTAX_BUILTIN},{"char8_t", SYNTAX_BUILTIN},{"class", SYNTAX_KEYWORD},{"clock_t", SYNTAX_BUILTIN},{"cnd_t", SYNTAX_BUILTIN},{"co_await", SYNTAX_KEYWORD},{"co_return", SYNTAX_KEYWORD},{"co_yield", SYNTAX_KEYWORD},{"compl", SYNTAX_KEYWORD},{"complex", SYNTAX_BUILTIN},{"concept", SYNTAX_KEYWORD},{"const", SYNTAX_KEYWORD},{"const_cast", SYNTAX_KEYWORD},{"consteval", SYNTAX_KEYWORD},{"constexpr", SYNTAX_KEYWORD},{"constinit", SYNTAX_KEYWORD},{"constraint_handler_t", SYNTAX_BUILTIN},{"continue", SYNTAX_KEYWORD}}; @@ -94,7 +94,7 @@ static const Keyword syntax_keywords_cpp_v[4] = {{"va_list", SYNTAX_BUILTIN},{"v static const Keyword syntax_keywords_cpp_w[5] = {{"wchar_t", SYNTAX_KEYWORD},{"wctrans_t", SYNTAX_BUILTIN},{"wctype_t", SYNTAX_BUILTIN},{"while", SYNTAX_KEYWORD},{"wint_t", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_cpp_x[3] = {{"xor", SYNTAX_KEYWORD},{"xor_eq", SYNTAX_KEYWORD},{"xtime", SYNTAX_BUILTIN}}; static const KeywordList syntax_all_keywords_cpp[128] = { - ['A'] = {syntax_keywords_cpp_A, arr_count(syntax_keywords_cpp_A)}, ['B'] = {syntax_keywords_cpp_B, arr_count(syntax_keywords_cpp_B)}, ['C'] = {syntax_keywords_cpp_C, arr_count(syntax_keywords_cpp_C)}, ['D'] = {syntax_keywords_cpp_D, arr_count(syntax_keywords_cpp_D)}, ['E'] = {syntax_keywords_cpp_E, arr_count(syntax_keywords_cpp_E)}, ['F'] = {syntax_keywords_cpp_F, arr_count(syntax_keywords_cpp_F)}, ['H'] = {syntax_keywords_cpp_H, arr_count(syntax_keywords_cpp_H)}, ['I'] = {syntax_keywords_cpp_I, arr_count(syntax_keywords_cpp_I)}, ['L'] = {syntax_keywords_cpp_L, arr_count(syntax_keywords_cpp_L)}, ['M'] = {syntax_keywords_cpp_M, arr_count(syntax_keywords_cpp_M)}, ['N'] = {syntax_keywords_cpp_N, arr_count(syntax_keywords_cpp_N)}, ['O'] = {syntax_keywords_cpp_O, arr_count(syntax_keywords_cpp_O)}, ['P'] = {syntax_keywords_cpp_P, arr_count(syntax_keywords_cpp_P)}, ['R'] = {syntax_keywords_cpp_R, arr_count(syntax_keywords_cpp_R)}, ['S'] = {syntax_keywords_cpp_S, arr_count(syntax_keywords_cpp_S)}, ['T'] = {syntax_keywords_cpp_T, arr_count(syntax_keywords_cpp_T)}, ['U'] = {syntax_keywords_cpp_U, arr_count(syntax_keywords_cpp_U)}, ['W'] = {syntax_keywords_cpp_W, arr_count(syntax_keywords_cpp_W)}, ['_'] = {syntax_keywords_cpp__, arr_count(syntax_keywords_cpp__)}, ['a'] = {syntax_keywords_cpp_a, arr_count(syntax_keywords_cpp_a)}, ['b'] = {syntax_keywords_cpp_b, arr_count(syntax_keywords_cpp_b)}, ['c'] = {syntax_keywords_cpp_c, arr_count(syntax_keywords_cpp_c)}, ['d'] = {syntax_keywords_cpp_d, arr_count(syntax_keywords_cpp_d)}, ['e'] = {syntax_keywords_cpp_e, arr_count(syntax_keywords_cpp_e)}, ['f'] = {syntax_keywords_cpp_f, arr_count(syntax_keywords_cpp_f)}, ['g'] = {syntax_keywords_cpp_g, arr_count(syntax_keywords_cpp_g)}, ['i'] = {syntax_keywords_cpp_i, arr_count(syntax_keywords_cpp_i)}, ['j'] = {syntax_keywords_cpp_j, arr_count(syntax_keywords_cpp_j)}, ['l'] = {syntax_keywords_cpp_l, arr_count(syntax_keywords_cpp_l)}, ['m'] = {syntax_keywords_cpp_m, arr_count(syntax_keywords_cpp_m)}, ['n'] = {syntax_keywords_cpp_n, arr_count(syntax_keywords_cpp_n)}, ['o'] = {syntax_keywords_cpp_o, arr_count(syntax_keywords_cpp_o)}, ['p'] = {syntax_keywords_cpp_p, arr_count(syntax_keywords_cpp_p)}, ['r'] = {syntax_keywords_cpp_r, arr_count(syntax_keywords_cpp_r)}, ['s'] = {syntax_keywords_cpp_s, arr_count(syntax_keywords_cpp_s)}, ['t'] = {syntax_keywords_cpp_t, arr_count(syntax_keywords_cpp_t)}, ['u'] = {syntax_keywords_cpp_u, arr_count(syntax_keywords_cpp_u)}, ['v'] = {syntax_keywords_cpp_v, arr_count(syntax_keywords_cpp_v)}, ['w'] = {syntax_keywords_cpp_w, arr_count(syntax_keywords_cpp_w)}, ['x'] = {syntax_keywords_cpp_x, arr_count(syntax_keywords_cpp_x)} + ['A'] = {syntax_keywords_cpp_A, arr_count(syntax_keywords_cpp_A)}, ['B'] = {syntax_keywords_cpp_B, arr_count(syntax_keywords_cpp_B)}, ['C'] = {syntax_keywords_cpp_C, arr_count(syntax_keywords_cpp_C)}, ['D'] = {syntax_keywords_cpp_D, arr_count(syntax_keywords_cpp_D)}, ['E'] = {syntax_keywords_cpp_E, arr_count(syntax_keywords_cpp_E)}, ['F'] = {syntax_keywords_cpp_F, arr_count(syntax_keywords_cpp_F)}, ['H'] = {syntax_keywords_cpp_H, arr_count(syntax_keywords_cpp_H)}, ['I'] = {syntax_keywords_cpp_I, arr_count(syntax_keywords_cpp_I)}, ['L'] = {syntax_keywords_cpp_L, arr_count(syntax_keywords_cpp_L)}, ['M'] = {syntax_keywords_cpp_M, arr_count(syntax_keywords_cpp_M)}, ['N'] = {syntax_keywords_cpp_N, arr_count(syntax_keywords_cpp_N)}, ['O'] = {syntax_keywords_cpp_O, arr_count(syntax_keywords_cpp_O)}, ['P'] = {syntax_keywords_cpp_P, arr_count(syntax_keywords_cpp_P)}, ['R'] = {syntax_keywords_cpp_R, arr_count(syntax_keywords_cpp_R)}, ['S'] = {syntax_keywords_cpp_S, arr_count(syntax_keywords_cpp_S)}, ['T'] = {syntax_keywords_cpp_T, arr_count(syntax_keywords_cpp_T)}, ['U'] = {syntax_keywords_cpp_U, arr_count(syntax_keywords_cpp_U)}, ['W'] = {syntax_keywords_cpp_W, arr_count(syntax_keywords_cpp_W)}, ['_'] = {syntax_keywords_cpp_x5f, arr_count(syntax_keywords_cpp_x5f)}, ['a'] = {syntax_keywords_cpp_a, arr_count(syntax_keywords_cpp_a)}, ['b'] = {syntax_keywords_cpp_b, arr_count(syntax_keywords_cpp_b)}, ['c'] = {syntax_keywords_cpp_c, arr_count(syntax_keywords_cpp_c)}, ['d'] = {syntax_keywords_cpp_d, arr_count(syntax_keywords_cpp_d)}, ['e'] = {syntax_keywords_cpp_e, arr_count(syntax_keywords_cpp_e)}, ['f'] = {syntax_keywords_cpp_f, arr_count(syntax_keywords_cpp_f)}, ['g'] = {syntax_keywords_cpp_g, arr_count(syntax_keywords_cpp_g)}, ['i'] = {syntax_keywords_cpp_i, arr_count(syntax_keywords_cpp_i)}, ['j'] = {syntax_keywords_cpp_j, arr_count(syntax_keywords_cpp_j)}, ['l'] = {syntax_keywords_cpp_l, arr_count(syntax_keywords_cpp_l)}, ['m'] = {syntax_keywords_cpp_m, arr_count(syntax_keywords_cpp_m)}, ['n'] = {syntax_keywords_cpp_n, arr_count(syntax_keywords_cpp_n)}, ['o'] = {syntax_keywords_cpp_o, arr_count(syntax_keywords_cpp_o)}, ['p'] = {syntax_keywords_cpp_p, arr_count(syntax_keywords_cpp_p)}, ['r'] = {syntax_keywords_cpp_r, arr_count(syntax_keywords_cpp_r)}, ['s'] = {syntax_keywords_cpp_s, arr_count(syntax_keywords_cpp_s)}, ['t'] = {syntax_keywords_cpp_t, arr_count(syntax_keywords_cpp_t)}, ['u'] = {syntax_keywords_cpp_u, arr_count(syntax_keywords_cpp_u)}, ['v'] = {syntax_keywords_cpp_v, arr_count(syntax_keywords_cpp_v)}, ['w'] = {syntax_keywords_cpp_w, arr_count(syntax_keywords_cpp_w)}, ['x'] = {syntax_keywords_cpp_x, arr_count(syntax_keywords_cpp_x)} }; static const Keyword syntax_keywords_rust_A[2] = {{"AsMut", SYNTAX_BUILTIN},{"AsRef", SYNTAX_BUILTIN}}; @@ -283,7 +283,7 @@ static const Keyword syntax_keywords_python_U[7] = {{"UnboundLocalError", SYNTAX static const Keyword syntax_keywords_python_V[1] = {{"ValueError", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_python_W[2] = {{"Warning", SYNTAX_BUILTIN},{"WindowsError", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_python_Z[1] = {{"ZeroDivisionError", SYNTAX_BUILTIN}}; -static const Keyword syntax_keywords_python__[8] = {{"__build_class__", SYNTAX_BUILTIN},{"__debug__", SYNTAX_BUILTIN},{"__doc__", SYNTAX_BUILTIN},{"__import__", SYNTAX_BUILTIN},{"__loader__", SYNTAX_BUILTIN},{"__name__", SYNTAX_BUILTIN},{"__package__", SYNTAX_BUILTIN},{"__spec__", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_python_x5f[8] = {{"__build_class__", SYNTAX_BUILTIN},{"__debug__", SYNTAX_BUILTIN},{"__doc__", SYNTAX_BUILTIN},{"__import__", SYNTAX_BUILTIN},{"__loader__", SYNTAX_BUILTIN},{"__name__", SYNTAX_BUILTIN},{"__package__", SYNTAX_BUILTIN},{"__spec__", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_python_a[9] = {{"abs", SYNTAX_BUILTIN},{"all", SYNTAX_BUILTIN},{"and", SYNTAX_KEYWORD},{"any", SYNTAX_BUILTIN},{"as", SYNTAX_KEYWORD},{"ascii", SYNTAX_BUILTIN},{"assert", SYNTAX_KEYWORD},{"async", SYNTAX_KEYWORD},{"await", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_python_b[6] = {{"bin", SYNTAX_BUILTIN},{"bool", SYNTAX_BUILTIN},{"break", SYNTAX_KEYWORD},{"breakpoint", SYNTAX_BUILTIN},{"bytearray", SYNTAX_BUILTIN},{"bytes", SYNTAX_BUILTIN}}; static const Keyword syntax_keywords_python_c[9] = {{"callable", SYNTAX_BUILTIN},{"chr", SYNTAX_BUILTIN},{"class", SYNTAX_KEYWORD},{"classmethod", SYNTAX_BUILTIN},{"compile", SYNTAX_BUILTIN},{"complex", SYNTAX_BUILTIN},{"continue", SYNTAX_KEYWORD},{"copyright", SYNTAX_BUILTIN},{"credits", SYNTAX_BUILTIN}}; @@ -307,7 +307,7 @@ static const Keyword syntax_keywords_python_w[2] = {{"while", SYNTAX_KEYWORD},{" static const Keyword syntax_keywords_python_y[1] = {{"yield", SYNTAX_KEYWORD}}; static const Keyword syntax_keywords_python_z[1] = {{"zip", SYNTAX_BUILTIN}}; static const KeywordList syntax_all_keywords_python[128] = { - ['A'] = {syntax_keywords_python_A, arr_count(syntax_keywords_python_A)}, ['B'] = {syntax_keywords_python_B, arr_count(syntax_keywords_python_B)}, ['C'] = {syntax_keywords_python_C, arr_count(syntax_keywords_python_C)}, ['D'] = {syntax_keywords_python_D, arr_count(syntax_keywords_python_D)}, ['E'] = {syntax_keywords_python_E, arr_count(syntax_keywords_python_E)}, ['F'] = {syntax_keywords_python_F, arr_count(syntax_keywords_python_F)}, ['G'] = {syntax_keywords_python_G, arr_count(syntax_keywords_python_G)}, ['I'] = {syntax_keywords_python_I, arr_count(syntax_keywords_python_I)}, ['K'] = {syntax_keywords_python_K, arr_count(syntax_keywords_python_K)}, ['L'] = {syntax_keywords_python_L, arr_count(syntax_keywords_python_L)}, ['M'] = {syntax_keywords_python_M, arr_count(syntax_keywords_python_M)}, ['N'] = {syntax_keywords_python_N, arr_count(syntax_keywords_python_N)}, ['O'] = {syntax_keywords_python_O, arr_count(syntax_keywords_python_O)}, ['P'] = {syntax_keywords_python_P, arr_count(syntax_keywords_python_P)}, ['R'] = {syntax_keywords_python_R, arr_count(syntax_keywords_python_R)}, ['S'] = {syntax_keywords_python_S, arr_count(syntax_keywords_python_S)}, ['T'] = {syntax_keywords_python_T, arr_count(syntax_keywords_python_T)}, ['U'] = {syntax_keywords_python_U, arr_count(syntax_keywords_python_U)}, ['V'] = {syntax_keywords_python_V, arr_count(syntax_keywords_python_V)}, ['W'] = {syntax_keywords_python_W, arr_count(syntax_keywords_python_W)}, ['Z'] = {syntax_keywords_python_Z, arr_count(syntax_keywords_python_Z)}, ['_'] = {syntax_keywords_python__, arr_count(syntax_keywords_python__)}, ['a'] = {syntax_keywords_python_a, arr_count(syntax_keywords_python_a)}, ['b'] = {syntax_keywords_python_b, arr_count(syntax_keywords_python_b)}, ['c'] = {syntax_keywords_python_c, arr_count(syntax_keywords_python_c)}, ['d'] = {syntax_keywords_python_d, arr_count(syntax_keywords_python_d)}, ['e'] = {syntax_keywords_python_e, arr_count(syntax_keywords_python_e)}, ['f'] = {syntax_keywords_python_f, arr_count(syntax_keywords_python_f)}, ['g'] = {syntax_keywords_python_g, arr_count(syntax_keywords_python_g)}, ['h'] = {syntax_keywords_python_h, arr_count(syntax_keywords_python_h)}, ['i'] = {syntax_keywords_python_i, arr_count(syntax_keywords_python_i)}, ['l'] = {syntax_keywords_python_l, arr_count(syntax_keywords_python_l)}, ['m'] = {syntax_keywords_python_m, arr_count(syntax_keywords_python_m)}, ['n'] = {syntax_keywords_python_n, arr_count(syntax_keywords_python_n)}, ['o'] = {syntax_keywords_python_o, arr_count(syntax_keywords_python_o)}, ['p'] = {syntax_keywords_python_p, arr_count(syntax_keywords_python_p)}, ['q'] = {syntax_keywords_python_q, arr_count(syntax_keywords_python_q)}, ['r'] = {syntax_keywords_python_r, arr_count(syntax_keywords_python_r)}, ['s'] = {syntax_keywords_python_s, arr_count(syntax_keywords_python_s)}, ['t'] = {syntax_keywords_python_t, arr_count(syntax_keywords_python_t)}, ['v'] = {syntax_keywords_python_v, arr_count(syntax_keywords_python_v)}, ['w'] = {syntax_keywords_python_w, arr_count(syntax_keywords_python_w)}, ['y'] = {syntax_keywords_python_y, arr_count(syntax_keywords_python_y)}, ['z'] = {syntax_keywords_python_z, arr_count(syntax_keywords_python_z)} + ['A'] = {syntax_keywords_python_A, arr_count(syntax_keywords_python_A)}, ['B'] = {syntax_keywords_python_B, arr_count(syntax_keywords_python_B)}, ['C'] = {syntax_keywords_python_C, arr_count(syntax_keywords_python_C)}, ['D'] = {syntax_keywords_python_D, arr_count(syntax_keywords_python_D)}, ['E'] = {syntax_keywords_python_E, arr_count(syntax_keywords_python_E)}, ['F'] = {syntax_keywords_python_F, arr_count(syntax_keywords_python_F)}, ['G'] = {syntax_keywords_python_G, arr_count(syntax_keywords_python_G)}, ['I'] = {syntax_keywords_python_I, arr_count(syntax_keywords_python_I)}, ['K'] = {syntax_keywords_python_K, arr_count(syntax_keywords_python_K)}, ['L'] = {syntax_keywords_python_L, arr_count(syntax_keywords_python_L)}, ['M'] = {syntax_keywords_python_M, arr_count(syntax_keywords_python_M)}, ['N'] = {syntax_keywords_python_N, arr_count(syntax_keywords_python_N)}, ['O'] = {syntax_keywords_python_O, arr_count(syntax_keywords_python_O)}, ['P'] = {syntax_keywords_python_P, arr_count(syntax_keywords_python_P)}, ['R'] = {syntax_keywords_python_R, arr_count(syntax_keywords_python_R)}, ['S'] = {syntax_keywords_python_S, arr_count(syntax_keywords_python_S)}, ['T'] = {syntax_keywords_python_T, arr_count(syntax_keywords_python_T)}, ['U'] = {syntax_keywords_python_U, arr_count(syntax_keywords_python_U)}, ['V'] = {syntax_keywords_python_V, arr_count(syntax_keywords_python_V)}, ['W'] = {syntax_keywords_python_W, arr_count(syntax_keywords_python_W)}, ['Z'] = {syntax_keywords_python_Z, arr_count(syntax_keywords_python_Z)}, ['_'] = {syntax_keywords_python_x5f, arr_count(syntax_keywords_python_x5f)}, ['a'] = {syntax_keywords_python_a, arr_count(syntax_keywords_python_a)}, ['b'] = {syntax_keywords_python_b, arr_count(syntax_keywords_python_b)}, ['c'] = {syntax_keywords_python_c, arr_count(syntax_keywords_python_c)}, ['d'] = {syntax_keywords_python_d, arr_count(syntax_keywords_python_d)}, ['e'] = {syntax_keywords_python_e, arr_count(syntax_keywords_python_e)}, ['f'] = {syntax_keywords_python_f, arr_count(syntax_keywords_python_f)}, ['g'] = {syntax_keywords_python_g, arr_count(syntax_keywords_python_g)}, ['h'] = {syntax_keywords_python_h, arr_count(syntax_keywords_python_h)}, ['i'] = {syntax_keywords_python_i, arr_count(syntax_keywords_python_i)}, ['l'] = {syntax_keywords_python_l, arr_count(syntax_keywords_python_l)}, ['m'] = {syntax_keywords_python_m, arr_count(syntax_keywords_python_m)}, ['n'] = {syntax_keywords_python_n, arr_count(syntax_keywords_python_n)}, ['o'] = {syntax_keywords_python_o, arr_count(syntax_keywords_python_o)}, ['p'] = {syntax_keywords_python_p, arr_count(syntax_keywords_python_p)}, ['q'] = {syntax_keywords_python_q, arr_count(syntax_keywords_python_q)}, ['r'] = {syntax_keywords_python_r, arr_count(syntax_keywords_python_r)}, ['s'] = {syntax_keywords_python_s, arr_count(syntax_keywords_python_s)}, ['t'] = {syntax_keywords_python_t, arr_count(syntax_keywords_python_t)}, ['v'] = {syntax_keywords_python_v, arr_count(syntax_keywords_python_v)}, ['w'] = {syntax_keywords_python_w, arr_count(syntax_keywords_python_w)}, ['y'] = {syntax_keywords_python_y, arr_count(syntax_keywords_python_y)}, ['z'] = {syntax_keywords_python_z, arr_count(syntax_keywords_python_z)} }; static const Keyword syntax_keywords_html_a[10] = {{"accept-charset=", SYNTAX_BUILTIN},{"accept=", SYNTAX_BUILTIN},{"accesskey=", SYNTAX_BUILTIN},{"action=", SYNTAX_BUILTIN},{"align=", SYNTAX_BUILTIN},{"alt=", SYNTAX_BUILTIN},{"async=", SYNTAX_BUILTIN},{"autocomplete=", SYNTAX_BUILTIN},{"autofocus=", SYNTAX_BUILTIN},{"autoplay=", SYNTAX_BUILTIN}}; @@ -368,3 +368,35 @@ static const KeywordList syntax_all_keywords_glsl[128] = { ['E'] = {syntax_keywords_glsl_E, arr_count(syntax_keywords_glsl_E)}, ['a'] = {syntax_keywords_glsl_a, arr_count(syntax_keywords_glsl_a)}, ['b'] = {syntax_keywords_glsl_b, arr_count(syntax_keywords_glsl_b)}, ['c'] = {syntax_keywords_glsl_c, arr_count(syntax_keywords_glsl_c)}, ['d'] = {syntax_keywords_glsl_d, arr_count(syntax_keywords_glsl_d)}, ['e'] = {syntax_keywords_glsl_e, arr_count(syntax_keywords_glsl_e)}, ['f'] = {syntax_keywords_glsl_f, arr_count(syntax_keywords_glsl_f)}, ['g'] = {syntax_keywords_glsl_g, arr_count(syntax_keywords_glsl_g)}, ['h'] = {syntax_keywords_glsl_h, arr_count(syntax_keywords_glsl_h)}, ['i'] = {syntax_keywords_glsl_i, arr_count(syntax_keywords_glsl_i)}, ['l'] = {syntax_keywords_glsl_l, arr_count(syntax_keywords_glsl_l)}, ['m'] = {syntax_keywords_glsl_m, arr_count(syntax_keywords_glsl_m)}, ['n'] = {syntax_keywords_glsl_n, arr_count(syntax_keywords_glsl_n)}, ['o'] = {syntax_keywords_glsl_o, arr_count(syntax_keywords_glsl_o)}, ['p'] = {syntax_keywords_glsl_p, arr_count(syntax_keywords_glsl_p)}, ['r'] = {syntax_keywords_glsl_r, arr_count(syntax_keywords_glsl_r)}, ['s'] = {syntax_keywords_glsl_s, arr_count(syntax_keywords_glsl_s)}, ['t'] = {syntax_keywords_glsl_t, arr_count(syntax_keywords_glsl_t)}, ['u'] = {syntax_keywords_glsl_u, arr_count(syntax_keywords_glsl_u)}, ['v'] = {syntax_keywords_glsl_v, arr_count(syntax_keywords_glsl_v)}, ['w'] = {syntax_keywords_glsl_w, arr_count(syntax_keywords_glsl_w)} }; +static const Keyword syntax_keywords_css_x2d[1] = {{"-webkit-line-clamp:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_x40[25] = {{"@annotation:", SYNTAX_BUILTIN},{"@bottom-center:", SYNTAX_BUILTIN},{"@character-variant:", SYNTAX_BUILTIN},{"@charset:", SYNTAX_BUILTIN},{"@counter-style:", SYNTAX_BUILTIN},{"@font-face:", SYNTAX_BUILTIN},{"@font-feature-values:", SYNTAX_BUILTIN},{"@historical-forms:", SYNTAX_BUILTIN},{"@import:", SYNTAX_BUILTIN},{"@keyframes:", SYNTAX_BUILTIN},{"@layer:", SYNTAX_BUILTIN},{"@left-bottom:", SYNTAX_BUILTIN},{"@media:", SYNTAX_BUILTIN},{"@namespace:", SYNTAX_BUILTIN},{"@ornaments:", SYNTAX_BUILTIN},{"@page:", SYNTAX_BUILTIN},{"@property:", SYNTAX_BUILTIN},{"@right-bottom:", SYNTAX_BUILTIN},{"@scroll-timeline:", SYNTAX_BUILTIN},{"@styleset:", SYNTAX_BUILTIN},{"@stylistic:", SYNTAX_BUILTIN},{"@supports:", SYNTAX_BUILTIN},{"@swash:", SYNTAX_BUILTIN},{"@top-center:", SYNTAX_BUILTIN},{"@viewport:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_a[56] = {{"above", SYNTAX_CONSTANT},{"abs", SYNTAX_BUILTIN},{"absolute", SYNTAX_CONSTANT},{"accent-color:", SYNTAX_BUILTIN},{"acos", SYNTAX_BUILTIN},{"active", SYNTAX_CONSTANT},{"add", SYNTAX_CONSTANT},{"additive", SYNTAX_CONSTANT},{"additive-symbols:", SYNTAX_BUILTIN},{"after-edge", SYNTAX_CONSTANT},{"alias", SYNTAX_CONSTANT},{"aliceblue", SYNTAX_CONSTANT},{"align-content:", SYNTAX_BUILTIN},{"align-items:", SYNTAX_BUILTIN},{"align-self:", SYNTAX_BUILTIN},{"align-tracks:", SYNTAX_BUILTIN},{"all-petite-caps", SYNTAX_CONSTANT},{"all-scroll", SYNTAX_CONSTANT},{"all-small-caps", SYNTAX_CONSTANT},{"all:", SYNTAX_BUILTIN},{"alpha", SYNTAX_CONSTANT},{"alphabetic", SYNTAX_CONSTANT},{"alternate", SYNTAX_CONSTANT},{"alternate-reverse", SYNTAX_CONSTANT},{"always", SYNTAX_CONSTANT},{"animation-composition:", SYNTAX_BUILTIN},{"animation-delay:", SYNTAX_BUILTIN},{"animation-direction:", SYNTAX_BUILTIN},{"animation-duration:", SYNTAX_BUILTIN},{"animation-fill-mode:", SYNTAX_BUILTIN},{"animation-iteration-count:", SYNTAX_BUILTIN},{"animation-name:", SYNTAX_BUILTIN},{"animation-play-state:", SYNTAX_BUILTIN},{"animation-timeline:", SYNTAX_BUILTIN},{"animation-timing-function:", SYNTAX_BUILTIN},{"animation:", SYNTAX_BUILTIN},{"annotation", SYNTAX_BUILTIN},{"antialiased", SYNTAX_CONSTANT},{"antiquewhite", SYNTAX_CONSTANT},{"appearance:", SYNTAX_BUILTIN},{"aqua", SYNTAX_CONSTANT},{"aquamarine", SYNTAX_CONSTANT},{"ascent-override:", SYNTAX_BUILTIN},{"asin", SYNTAX_BUILTIN},{"aspect-ratio:", SYNTAX_BUILTIN},{"atan", SYNTAX_BUILTIN},{"atan2", SYNTAX_BUILTIN},{"attr", SYNTAX_BUILTIN},{"auto", SYNTAX_CONSTANT},{"auto-pos", SYNTAX_CONSTANT},{"available", SYNTAX_CONSTANT},{"avoid", SYNTAX_CONSTANT},{"avoid-column", SYNTAX_CONSTANT},{"avoid-page", SYNTAX_CONSTANT},{"avoid-region", SYNTAX_CONSTANT},{"azure", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_b[116] = {{"backdrop-filter:", SYNTAX_BUILTIN},{"backface-visibility:", SYNTAX_BUILTIN},{"background-attachment:", SYNTAX_BUILTIN},{"background-blend-mode:", SYNTAX_BUILTIN},{"background-clip:", SYNTAX_BUILTIN},{"background-color:", SYNTAX_BUILTIN},{"background-image:", SYNTAX_BUILTIN},{"background-origin:", SYNTAX_BUILTIN},{"background-position-x:", SYNTAX_BUILTIN},{"background-position-y:", SYNTAX_BUILTIN},{"background-position:", SYNTAX_BUILTIN},{"background-repeat:", SYNTAX_BUILTIN},{"background-size:", SYNTAX_BUILTIN},{"background:", SYNTAX_BUILTIN},{"backwards", SYNTAX_CONSTANT},{"balance", SYNTAX_CONSTANT},{"baseline", SYNTAX_CONSTANT},{"before-edge", SYNTAX_CONSTANT},{"beige", SYNTAX_CONSTANT},{"below", SYNTAX_CONSTANT},{"bevel", SYNTAX_CONSTANT},{"bidi-override", SYNTAX_CONSTANT},{"bisque", SYNTAX_CONSTANT},{"black", SYNTAX_CONSTANT},{"blanchedalmond", SYNTAX_CONSTANT},{"bleed:", SYNTAX_BUILTIN},{"blink", SYNTAX_CONSTANT},{"block", SYNTAX_CONSTANT},{"block-axis", SYNTAX_CONSTANT},{"block-end", SYNTAX_CONSTANT},{"block-overflow:", SYNTAX_BUILTIN},{"block-size:", SYNTAX_BUILTIN},{"block-start", SYNTAX_CONSTANT},{"blue", SYNTAX_CONSTANT},{"blueviolet", SYNTAX_CONSTANT},{"blur", SYNTAX_BUILTIN},{"bold", SYNTAX_CONSTANT},{"bolder", SYNTAX_CONSTANT},{"border-block-color:", SYNTAX_BUILTIN},{"border-block-end-color:", SYNTAX_BUILTIN},{"border-block-end-style:", SYNTAX_BUILTIN},{"border-block-end-width:", SYNTAX_BUILTIN},{"border-block-end:", SYNTAX_BUILTIN},{"border-block-start-color:", SYNTAX_BUILTIN},{"border-block-start-style:", SYNTAX_BUILTIN},{"border-block-start-width:", SYNTAX_BUILTIN},{"border-block-start:", SYNTAX_BUILTIN},{"border-block-style:", SYNTAX_BUILTIN},{"border-block-width:", SYNTAX_BUILTIN},{"border-block:", SYNTAX_BUILTIN},{"border-bottom-color:", SYNTAX_BUILTIN},{"border-bottom-left-radius:", SYNTAX_BUILTIN},{"border-bottom-right-radius:", SYNTAX_BUILTIN},{"border-bottom-style:", SYNTAX_BUILTIN},{"border-bottom-width:", SYNTAX_BUILTIN},{"border-bottom:", SYNTAX_BUILTIN},{"border-box", SYNTAX_CONSTANT},{"border-collapse:", SYNTAX_BUILTIN},{"border-color:", SYNTAX_BUILTIN},{"border-end-end-radius:", SYNTAX_BUILTIN},{"border-end-start-radius:", SYNTAX_BUILTIN},{"border-image-outset:", SYNTAX_BUILTIN},{"border-image-repeat:", SYNTAX_BUILTIN},{"border-image-slice:", SYNTAX_BUILTIN},{"border-image-source:", SYNTAX_BUILTIN},{"border-image-width:", SYNTAX_BUILTIN},{"border-image:", SYNTAX_BUILTIN},{"border-inline-color:", SYNTAX_BUILTIN},{"border-inline-end-color:", SYNTAX_BUILTIN},{"border-inline-end-style:", SYNTAX_BUILTIN},{"border-inline-end-width:", SYNTAX_BUILTIN},{"border-inline-end:", SYNTAX_BUILTIN},{"border-inline-start-color:", SYNTAX_BUILTIN},{"border-inline-start-style:", SYNTAX_BUILTIN},{"border-inline-start-width:", SYNTAX_BUILTIN},{"border-inline-start:", SYNTAX_BUILTIN},{"border-inline-style:", SYNTAX_BUILTIN},{"border-inline-width:", SYNTAX_BUILTIN},{"border-inline:", SYNTAX_BUILTIN},{"border-left-color:", SYNTAX_BUILTIN},{"border-left-style:", SYNTAX_BUILTIN},{"border-left-width:", SYNTAX_BUILTIN},{"border-left:", SYNTAX_BUILTIN},{"border-radius:", SYNTAX_BUILTIN},{"border-right-color:", SYNTAX_BUILTIN},{"border-right-style:", SYNTAX_BUILTIN},{"border-right-width:", SYNTAX_BUILTIN},{"border-right:", SYNTAX_BUILTIN},{"border-spacing:", SYNTAX_BUILTIN},{"border-start-end-radius:", SYNTAX_BUILTIN},{"border-start-start-radius:", SYNTAX_BUILTIN},{"border-style:", SYNTAX_BUILTIN},{"border-top-color:", SYNTAX_BUILTIN},{"border-top-left-radius:", SYNTAX_BUILTIN},{"border-top-right-radius:", SYNTAX_BUILTIN},{"border-top-style:", SYNTAX_BUILTIN},{"border-top-width:", SYNTAX_BUILTIN},{"border-top:", SYNTAX_BUILTIN},{"border-width:", SYNTAX_BUILTIN},{"border:", SYNTAX_BUILTIN},{"both", SYNTAX_CONSTANT},{"bottom", SYNTAX_CONSTANT},{"bottom-outside", SYNTAX_CONSTANT},{"box-decoration-break:", SYNTAX_BUILTIN},{"box-shadow:", SYNTAX_BUILTIN},{"box-sizing:", SYNTAX_BUILTIN},{"break-after:", SYNTAX_BUILTIN},{"break-all", SYNTAX_CONSTANT},{"break-before:", SYNTAX_BUILTIN},{"break-inside:", SYNTAX_BUILTIN},{"break-word", SYNTAX_CONSTANT},{"brightness", SYNTAX_BUILTIN},{"brown", SYNTAX_CONSTANT},{"bullets", SYNTAX_CONSTANT},{"burlywood", SYNTAX_CONSTANT},{"butt", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_c[78] = {{"cadetblue", SYNTAX_CONSTANT},{"calc", SYNTAX_BUILTIN},{"capitalize", SYNTAX_CONSTANT},{"caption", SYNTAX_CONSTANT},{"caption-side:", SYNTAX_BUILTIN},{"caret-color:", SYNTAX_BUILTIN},{"caret-shape:", SYNTAX_BUILTIN},{"caret:", SYNTAX_BUILTIN},{"cell", SYNTAX_CONSTANT},{"center", SYNTAX_CONSTANT},{"central", SYNTAX_CONSTANT},{"char", SYNTAX_CONSTANT},{"character-variant", SYNTAX_BUILTIN},{"chartreuse", SYNTAX_CONSTANT},{"chocolate", SYNTAX_CONSTANT},{"circle", SYNTAX_BUILTIN},{"clamp", SYNTAX_BUILTIN},{"clear:", SYNTAX_BUILTIN},{"clip-path:", SYNTAX_BUILTIN},{"clip:", SYNTAX_BUILTIN},{"clone", SYNTAX_CONSTANT},{"close-quote", SYNTAX_CONSTANT},{"closest-corner", SYNTAX_CONSTANT},{"closest-side", SYNTAX_CONSTANT},{"col-resize", SYNTAX_CONSTANT},{"collapse", SYNTAX_CONSTANT},{"color-burn", SYNTAX_CONSTANT},{"color-dodge", SYNTAX_CONSTANT},{"color-scheme:", SYNTAX_BUILTIN},{"color:", SYNTAX_BUILTIN},{"column", SYNTAX_CONSTANT},{"column-count:", SYNTAX_BUILTIN},{"column-fill:", SYNTAX_BUILTIN},{"column-gap:", SYNTAX_BUILTIN},{"column-reverse", SYNTAX_CONSTANT},{"column-rule-color:", SYNTAX_BUILTIN},{"column-rule-style:", SYNTAX_BUILTIN},{"column-rule-width:", SYNTAX_BUILTIN},{"column-rule:", SYNTAX_BUILTIN},{"column-span:", SYNTAX_BUILTIN},{"column-width:", SYNTAX_BUILTIN},{"columns:", SYNTAX_BUILTIN},{"common-ligatures", SYNTAX_CONSTANT},{"compact", SYNTAX_CONSTANT},{"condensed", SYNTAX_CONSTANT},{"conic-gradient", SYNTAX_BUILTIN},{"contain-intrinsic-block-size:", SYNTAX_BUILTIN},{"contain-intrinsic-height:", SYNTAX_BUILTIN},{"contain-intrinsic-inline-size:", SYNTAX_BUILTIN},{"contain-intrinsic-size:", SYNTAX_BUILTIN},{"contain-intrinsic-width:", SYNTAX_BUILTIN},{"contain:", SYNTAX_BUILTIN},{"content-box", SYNTAX_CONSTANT},{"content-visibility:", SYNTAX_BUILTIN},{"content:", SYNTAX_BUILTIN},{"contents", SYNTAX_CONSTANT},{"context-menu", SYNTAX_CONSTANT},{"contextual", SYNTAX_CONSTANT},{"contrast", SYNTAX_BUILTIN},{"copy", SYNTAX_CONSTANT},{"coral", SYNTAX_CONSTANT},{"cornflowerblue", SYNTAX_CONSTANT},{"cornsilk", SYNTAX_CONSTANT},{"cos", SYNTAX_BUILTIN},{"counter-increment:", SYNTAX_BUILTIN},{"counter-reset:", SYNTAX_BUILTIN},{"counter-set:", SYNTAX_BUILTIN},{"counters", SYNTAX_BUILTIN},{"cover", SYNTAX_CONSTANT},{"crimson", SYNTAX_CONSTANT},{"crisp-edges", SYNTAX_CONSTANT},{"crispEdges", SYNTAX_CONSTANT},{"cross-fade", SYNTAX_BUILTIN},{"crosshair", SYNTAX_CONSTANT},{"cubic-bezier", SYNTAX_BUILTIN},{"cursor:", SYNTAX_BUILTIN},{"cyan", SYNTAX_CONSTANT},{"cyclic", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_d[50] = {{"dark", SYNTAX_CONSTANT},{"darkblue", SYNTAX_CONSTANT},{"darkcyan", SYNTAX_CONSTANT},{"darken", SYNTAX_CONSTANT},{"darkgoldenrod", SYNTAX_CONSTANT},{"darkgray", SYNTAX_CONSTANT},{"darkgreen", SYNTAX_CONSTANT},{"darkgrey", SYNTAX_CONSTANT},{"darkkhaki", SYNTAX_CONSTANT},{"darkmagenta", SYNTAX_CONSTANT},{"darkolivegreen", SYNTAX_CONSTANT},{"darkorange", SYNTAX_CONSTANT},{"darkorchid", SYNTAX_CONSTANT},{"darkred", SYNTAX_CONSTANT},{"darksalmon", SYNTAX_CONSTANT},{"darkseagreen", SYNTAX_CONSTANT},{"darkslateblue", SYNTAX_CONSTANT},{"darkslategray", SYNTAX_CONSTANT},{"darkslategrey", SYNTAX_CONSTANT},{"darkturquoise", SYNTAX_CONSTANT},{"darkviolet", SYNTAX_CONSTANT},{"dashed", SYNTAX_CONSTANT},{"decimal", SYNTAX_CONSTANT},{"deeppink", SYNTAX_CONSTANT},{"deepskyblue", SYNTAX_CONSTANT},{"default", SYNTAX_CONSTANT},{"dense", SYNTAX_CONSTANT},{"descent-override:", SYNTAX_BUILTIN},{"diagonal-fractions", SYNTAX_CONSTANT},{"difference", SYNTAX_CONSTANT},{"digits", SYNTAX_CONSTANT},{"dimgray", SYNTAX_CONSTANT},{"dimgrey", SYNTAX_CONSTANT},{"direction:", SYNTAX_BUILTIN},{"disabled", SYNTAX_CONSTANT},{"disc", SYNTAX_CONSTANT},{"discretionary-ligatures", SYNTAX_CONSTANT},{"display:", SYNTAX_BUILTIN},{"distribute", SYNTAX_CONSTANT},{"distribute-all-lines", SYNTAX_CONSTANT},{"distribute-letter", SYNTAX_CONSTANT},{"distribute-space", SYNTAX_CONSTANT},{"dodgerblue", SYNTAX_CONSTANT},{"dot", SYNTAX_CONSTANT},{"dotted", SYNTAX_CONSTANT},{"double", SYNTAX_CONSTANT},{"double-circle", SYNTAX_CONSTANT},{"downleft", SYNTAX_CONSTANT},{"downright", SYNTAX_CONSTANT},{"drop-shadow", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_e[24] = {{"e-resize", SYNTAX_CONSTANT},{"each-line", SYNTAX_CONSTANT},{"ease", SYNTAX_CONSTANT},{"ease-in", SYNTAX_CONSTANT},{"ease-in-out", SYNTAX_CONSTANT},{"ease-out", SYNTAX_CONSTANT},{"economy", SYNTAX_CONSTANT},{"element", SYNTAX_BUILTIN},{"ellipse", SYNTAX_BUILTIN},{"ellipsis", SYNTAX_CONSTANT},{"embed", SYNTAX_CONSTANT},{"empty-cells:", SYNTAX_BUILTIN},{"end", SYNTAX_CONSTANT},{"env", SYNTAX_BUILTIN},{"evenodd", SYNTAX_CONSTANT},{"ew-resize", SYNTAX_CONSTANT},{"exact", SYNTAX_CONSTANT},{"exclude", SYNTAX_CONSTANT},{"exclusion", SYNTAX_CONSTANT},{"exp", SYNTAX_BUILTIN},{"expanded", SYNTAX_CONSTANT},{"extends", SYNTAX_CONSTANT},{"extra-condensed", SYNTAX_CONSTANT},{"extra-expanded", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_f[52] = {{"fallback:", SYNTAX_BUILTIN},{"farthest-corner", SYNTAX_CONSTANT},{"farthest-side", SYNTAX_CONSTANT},{"fill", SYNTAX_CONSTANT},{"fill-available", SYNTAX_CONSTANT},{"fill-box", SYNTAX_CONSTANT},{"filled", SYNTAX_CONSTANT},{"filter:", SYNTAX_BUILTIN},{"firebrick", SYNTAX_CONSTANT},{"fit-content", SYNTAX_CONSTANT},{"fixed", SYNTAX_CONSTANT},{"flat", SYNTAX_CONSTANT},{"flex-basis:", SYNTAX_BUILTIN},{"flex-direction:", SYNTAX_BUILTIN},{"flex-flow:", SYNTAX_BUILTIN},{"flex-grow:", SYNTAX_BUILTIN},{"flex-shrink:", SYNTAX_BUILTIN},{"flex-wrap:", SYNTAX_BUILTIN},{"flex:", SYNTAX_BUILTIN},{"flip", SYNTAX_CONSTANT},{"float:", SYNTAX_BUILTIN},{"floralwhite", SYNTAX_CONSTANT},{"flow-root", SYNTAX_CONSTANT},{"font-display:", SYNTAX_BUILTIN},{"font-family:", SYNTAX_BUILTIN},{"font-feature-settings:", SYNTAX_BUILTIN},{"font-kerning:", SYNTAX_BUILTIN},{"font-language-override:", SYNTAX_BUILTIN},{"font-optical-sizing:", SYNTAX_BUILTIN},{"font-size-adjust:", SYNTAX_BUILTIN},{"font-size:", SYNTAX_BUILTIN},{"font-stretch:", SYNTAX_BUILTIN},{"font-style:", SYNTAX_BUILTIN},{"font-synthesis:", SYNTAX_BUILTIN},{"font-variant-alternates:", SYNTAX_BUILTIN},{"font-variant-caps:", SYNTAX_BUILTIN},{"font-variant-east-asian:", SYNTAX_BUILTIN},{"font-variant-ligatures:", SYNTAX_BUILTIN},{"font-variant-numeric:", SYNTAX_BUILTIN},{"font-variant-position:", SYNTAX_BUILTIN},{"font-variant:", SYNTAX_BUILTIN},{"font-variation-settings:", SYNTAX_BUILTIN},{"font-weight:", SYNTAX_BUILTIN},{"font:", SYNTAX_BUILTIN},{"forced-color-adjust:", SYNTAX_BUILTIN},{"forestgreen", SYNTAX_CONSTANT},{"format", SYNTAX_BUILTIN},{"forwards", SYNTAX_CONSTANT},{"freeze", SYNTAX_CONSTANT},{"from-image", SYNTAX_CONSTANT},{"fuchsia", SYNTAX_CONSTANT},{"full-width", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_g[30] = {{"gainsboro", SYNTAX_CONSTANT},{"gap:", SYNTAX_BUILTIN},{"geometricPrecision", SYNTAX_CONSTANT},{"georgian", SYNTAX_CONSTANT},{"ghostwhite", SYNTAX_CONSTANT},{"gold", SYNTAX_CONSTANT},{"goldenrod", SYNTAX_CONSTANT},{"grab", SYNTAX_CONSTANT},{"grabbing", SYNTAX_CONSTANT},{"gray", SYNTAX_CONSTANT},{"grayscale", SYNTAX_BUILTIN},{"green", SYNTAX_CONSTANT},{"greenyellow", SYNTAX_CONSTANT},{"grey", SYNTAX_CONSTANT},{"grid-area:", SYNTAX_BUILTIN},{"grid-auto-columns:", SYNTAX_BUILTIN},{"grid-auto-flow:", SYNTAX_BUILTIN},{"grid-auto-rows:", SYNTAX_BUILTIN},{"grid-column-end:", SYNTAX_BUILTIN},{"grid-column-start:", SYNTAX_BUILTIN},{"grid-column:", SYNTAX_BUILTIN},{"grid-row-end:", SYNTAX_BUILTIN},{"grid-row-start:", SYNTAX_BUILTIN},{"grid-row:", SYNTAX_BUILTIN},{"grid-template-areas:", SYNTAX_BUILTIN},{"grid-template-columns:", SYNTAX_BUILTIN},{"grid-template-rows:", SYNTAX_BUILTIN},{"grid-template:", SYNTAX_BUILTIN},{"grid:", SYNTAX_BUILTIN},{"groove", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_h[23] = {{"hand", SYNTAX_CONSTANT},{"hanging", SYNTAX_CONSTANT},{"hanging-punctuation:", SYNTAX_BUILTIN},{"hard-light", SYNTAX_CONSTANT},{"height:", SYNTAX_BUILTIN},{"help", SYNTAX_CONSTANT},{"hidden", SYNTAX_CONSTANT},{"hide", SYNTAX_CONSTANT},{"historical-forms", SYNTAX_CONSTANT},{"historical-ligatures", SYNTAX_CONSTANT},{"honeydew", SYNTAX_CONSTANT},{"horizontal", SYNTAX_CONSTANT},{"horizontal-tb", SYNTAX_CONSTANT},{"hotpink", SYNTAX_CONSTANT},{"hsl", SYNTAX_BUILTIN},{"hsla", SYNTAX_BUILTIN},{"hue", SYNTAX_CONSTANT},{"hue-rotate", SYNTAX_BUILTIN},{"hwb", SYNTAX_BUILTIN},{"hyphenate-character:", SYNTAX_BUILTIN},{"hyphenate-limit-chars:", SYNTAX_BUILTIN},{"hyphens:", SYNTAX_BUILTIN},{"hypot", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_i[50] = {{"icon", SYNTAX_CONSTANT},{"ideograph-alpha", SYNTAX_CONSTANT},{"ideograph-numeric", SYNTAX_CONSTANT},{"ideograph-parenthesis", SYNTAX_CONSTANT},{"ideograph-space", SYNTAX_CONSTANT},{"ideographic", SYNTAX_CONSTANT},{"image", SYNTAX_BUILTIN},{"image-orientation:", SYNTAX_BUILTIN},{"image-rendering:", SYNTAX_BUILTIN},{"image-resolution:", SYNTAX_BUILTIN},{"image-set", SYNTAX_BUILTIN},{"inactive", SYNTAX_CONSTANT},{"indianred", SYNTAX_CONSTANT},{"indigo", SYNTAX_CONSTANT},{"infinite", SYNTAX_CONSTANT},{"inherit", SYNTAX_CONSTANT},{"inherits:", SYNTAX_BUILTIN},{"initial", SYNTAX_CONSTANT},{"initial-letter-align:", SYNTAX_BUILTIN},{"initial-letter:", SYNTAX_BUILTIN},{"initial-value:", SYNTAX_BUILTIN},{"inline", SYNTAX_CONSTANT},{"inline-axis", SYNTAX_CONSTANT},{"inline-block", SYNTAX_CONSTANT},{"inline-end", SYNTAX_CONSTANT},{"inline-flex", SYNTAX_CONSTANT},{"inline-grid", SYNTAX_CONSTANT},{"inline-list-item", SYNTAX_CONSTANT},{"inline-size:", SYNTAX_BUILTIN},{"inline-start", SYNTAX_CONSTANT},{"inline-table", SYNTAX_CONSTANT},{"input-security:", SYNTAX_BUILTIN},{"inset", SYNTAX_BUILTIN},{"inset-block-end:", SYNTAX_BUILTIN},{"inset-block-start:", SYNTAX_BUILTIN},{"inset-block:", SYNTAX_BUILTIN},{"inset-inline-end:", SYNTAX_BUILTIN},{"inset-inline-start:", SYNTAX_BUILTIN},{"inset-inline:", SYNTAX_BUILTIN},{"inside", SYNTAX_CONSTANT},{"inter-character", SYNTAX_CONSTANT},{"inter-ideograph", SYNTAX_CONSTANT},{"inter-word", SYNTAX_CONSTANT},{"intersect", SYNTAX_CONSTANT},{"invert", SYNTAX_BUILTIN},{"isolate", SYNTAX_CONSTANT},{"isolate-override", SYNTAX_CONSTANT},{"isolation:", SYNTAX_BUILTIN},{"italic", SYNTAX_CONSTANT},{"ivory", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_j[10] = {{"jis04", SYNTAX_CONSTANT},{"jis78", SYNTAX_CONSTANT},{"jis83", SYNTAX_CONSTANT},{"jis90", SYNTAX_CONSTANT},{"justify", SYNTAX_CONSTANT},{"justify-all", SYNTAX_CONSTANT},{"justify-content:", SYNTAX_BUILTIN},{"justify-items:", SYNTAX_BUILTIN},{"justify-self:", SYNTAX_BUILTIN},{"justify-tracks:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_k[3] = {{"kannada", SYNTAX_CONSTANT},{"keep-all", SYNTAX_CONSTANT},{"khaki", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_l[60] = {{"lab", SYNTAX_BUILTIN},{"landscape", SYNTAX_CONSTANT},{"large", SYNTAX_CONSTANT},{"larger", SYNTAX_CONSTANT},{"lavender", SYNTAX_CONSTANT},{"lavenderblush", SYNTAX_CONSTANT},{"lawngreen", SYNTAX_CONSTANT},{"layer", SYNTAX_BUILTIN},{"lch", SYNTAX_BUILTIN},{"leader", SYNTAX_BUILTIN},{"left", SYNTAX_CONSTANT},{"lemonchiffon", SYNTAX_CONSTANT},{"letter-spacing:", SYNTAX_BUILTIN},{"light", SYNTAX_CONSTANT},{"lightblue", SYNTAX_CONSTANT},{"lightcoral", SYNTAX_CONSTANT},{"lightcyan", SYNTAX_CONSTANT},{"lighten", SYNTAX_CONSTANT},{"lighter", SYNTAX_CONSTANT},{"lightgoldenrodyellow", SYNTAX_CONSTANT},{"lightgray", SYNTAX_CONSTANT},{"lightgreen", SYNTAX_CONSTANT},{"lightgrey", SYNTAX_CONSTANT},{"lightpink", SYNTAX_CONSTANT},{"lightsalmon", SYNTAX_CONSTANT},{"lightseagreen", SYNTAX_CONSTANT},{"lightskyblue", SYNTAX_CONSTANT},{"lightslategray", SYNTAX_CONSTANT},{"lightslategrey", SYNTAX_CONSTANT},{"lightsteelblue", SYNTAX_CONSTANT},{"lightyellow", SYNTAX_CONSTANT},{"lime", SYNTAX_CONSTANT},{"limegreen", SYNTAX_CONSTANT},{"line", SYNTAX_CONSTANT},{"line-break:", SYNTAX_BUILTIN},{"line-clamp:", SYNTAX_BUILTIN},{"line-edge", SYNTAX_CONSTANT},{"line-gap-override:", SYNTAX_BUILTIN},{"line-height-step:", SYNTAX_BUILTIN},{"line-height:", SYNTAX_BUILTIN},{"line-through", SYNTAX_CONSTANT},{"linear", SYNTAX_CONSTANT},{"linear-gradient", SYNTAX_BUILTIN},{"linearRGB", SYNTAX_CONSTANT},{"linen", SYNTAX_CONSTANT},{"lining-nums", SYNTAX_CONSTANT},{"list-item", SYNTAX_CONSTANT},{"list-style-image:", SYNTAX_BUILTIN},{"list-style-position:", SYNTAX_BUILTIN},{"list-style-type:", SYNTAX_BUILTIN},{"list-style:", SYNTAX_BUILTIN},{"local", SYNTAX_BUILTIN},{"log", SYNTAX_BUILTIN},{"loose", SYNTAX_CONSTANT},{"lowercase", SYNTAX_CONSTANT},{"lr", SYNTAX_CONSTANT},{"lr-tb", SYNTAX_CONSTANT},{"ltr", SYNTAX_CONSTANT},{"luminance", SYNTAX_CONSTANT},{"luminosity", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_m[85] = {{"magenta", SYNTAX_CONSTANT},{"main-size", SYNTAX_CONSTANT},{"mandatory", SYNTAX_CONSTANT},{"manipulation", SYNTAX_CONSTANT},{"manual", SYNTAX_CONSTANT},{"margin-block-end:", SYNTAX_BUILTIN},{"margin-block-start:", SYNTAX_BUILTIN},{"margin-block:", SYNTAX_BUILTIN},{"margin-bottom:", SYNTAX_BUILTIN},{"margin-box", SYNTAX_CONSTANT},{"margin-inline-end:", SYNTAX_BUILTIN},{"margin-inline-start:", SYNTAX_BUILTIN},{"margin-inline:", SYNTAX_BUILTIN},{"margin-left:", SYNTAX_BUILTIN},{"margin-right:", SYNTAX_BUILTIN},{"margin-top:", SYNTAX_BUILTIN},{"margin-trim:", SYNTAX_BUILTIN},{"margin:", SYNTAX_BUILTIN},{"marks:", SYNTAX_BUILTIN},{"maroon", SYNTAX_CONSTANT},{"mask-border-mode:", SYNTAX_BUILTIN},{"mask-border-outset:", SYNTAX_BUILTIN},{"mask-border-repeat:", SYNTAX_BUILTIN},{"mask-border-slice:", SYNTAX_BUILTIN},{"mask-border-source:", SYNTAX_BUILTIN},{"mask-border-width:", SYNTAX_BUILTIN},{"mask-border:", SYNTAX_BUILTIN},{"mask-clip:", SYNTAX_BUILTIN},{"mask-composite:", SYNTAX_BUILTIN},{"mask-image:", SYNTAX_BUILTIN},{"mask-mode:", SYNTAX_BUILTIN},{"mask-origin:", SYNTAX_BUILTIN},{"mask-position:", SYNTAX_BUILTIN},{"mask-repeat:", SYNTAX_BUILTIN},{"mask-size:", SYNTAX_BUILTIN},{"mask-type:", SYNTAX_BUILTIN},{"mask:", SYNTAX_BUILTIN},{"masonry-auto-flow:", SYNTAX_BUILTIN},{"match-parent", SYNTAX_CONSTANT},{"match-source", SYNTAX_CONSTANT},{"math-depth:", SYNTAX_BUILTIN},{"math-shift:", SYNTAX_BUILTIN},{"math-style:", SYNTAX_BUILTIN},{"mathematical", SYNTAX_CONSTANT},{"matrix", SYNTAX_BUILTIN},{"matrix3d", SYNTAX_BUILTIN},{"max", SYNTAX_BUILTIN},{"max-block-size:", SYNTAX_BUILTIN},{"max-content", SYNTAX_CONSTANT},{"max-height:", SYNTAX_BUILTIN},{"max-inline-size:", SYNTAX_BUILTIN},{"max-lines:", SYNTAX_BUILTIN},{"max-width:", SYNTAX_BUILTIN},{"max-zoom:", SYNTAX_BUILTIN},{"medium", SYNTAX_CONSTANT},{"mediumaquamarine", SYNTAX_CONSTANT},{"mediumblue", SYNTAX_CONSTANT},{"mediumorchid", SYNTAX_CONSTANT},{"mediumpurple", SYNTAX_CONSTANT},{"mediumseagreen", SYNTAX_CONSTANT},{"mediumslateblue", SYNTAX_CONSTANT},{"mediumspringgreen", SYNTAX_CONSTANT},{"mediumturquoise", SYNTAX_CONSTANT},{"mediumvioletred", SYNTAX_CONSTANT},{"menu", SYNTAX_CONSTANT},{"message-box", SYNTAX_CONSTANT},{"middle", SYNTAX_CONSTANT},{"midnightblue", SYNTAX_CONSTANT},{"min", SYNTAX_BUILTIN},{"min-block-size:", SYNTAX_BUILTIN},{"min-content", SYNTAX_CONSTANT},{"min-height:", SYNTAX_BUILTIN},{"min-inline-size:", SYNTAX_BUILTIN},{"min-width:", SYNTAX_BUILTIN},{"min-zoom:", SYNTAX_BUILTIN},{"minmax", SYNTAX_BUILTIN},{"mintcream", SYNTAX_CONSTANT},{"mistyrose", SYNTAX_CONSTANT},{"miter", SYNTAX_CONSTANT},{"mix-blend-mode:", SYNTAX_BUILTIN},{"mixed", SYNTAX_CONSTANT},{"moccasin", SYNTAX_CONSTANT},{"mod", SYNTAX_BUILTIN},{"move", SYNTAX_CONSTANT},{"multiply", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_n[29] = {{"n-resize", SYNTAX_CONSTANT},{"narrower", SYNTAX_CONSTANT},{"navajowhite", SYNTAX_CONSTANT},{"navy", SYNTAX_CONSTANT},{"ne-resize", SYNTAX_CONSTANT},{"nearest-neighbor", SYNTAX_CONSTANT},{"negative:", SYNTAX_BUILTIN},{"nesw-resize", SYNTAX_CONSTANT},{"newspaper", SYNTAX_CONSTANT},{"no-change", SYNTAX_CONSTANT},{"no-clip", SYNTAX_CONSTANT},{"no-close-quote", SYNTAX_CONSTANT},{"no-common-ligatures", SYNTAX_CONSTANT},{"no-contextual", SYNTAX_CONSTANT},{"no-discretionary-ligatures", SYNTAX_CONSTANT},{"no-drop", SYNTAX_CONSTANT},{"no-historical-ligatures", SYNTAX_CONSTANT},{"no-open-quote", SYNTAX_CONSTANT},{"no-repeat", SYNTAX_CONSTANT},{"none", SYNTAX_CONSTANT},{"nonzero", SYNTAX_CONSTANT},{"normal", SYNTAX_CONSTANT},{"not-allowed", SYNTAX_CONSTANT},{"nowrap", SYNTAX_CONSTANT},{"ns-resize", SYNTAX_CONSTANT},{"numbers", SYNTAX_CONSTANT},{"numeric", SYNTAX_CONSTANT},{"nw-resize", SYNTAX_CONSTANT},{"nwse-resize", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_o[51] = {{"object-fit:", SYNTAX_BUILTIN},{"object-position:", SYNTAX_BUILTIN},{"oblique", SYNTAX_CONSTANT},{"offset-anchor:", SYNTAX_BUILTIN},{"offset-distance:", SYNTAX_BUILTIN},{"offset-path:", SYNTAX_BUILTIN},{"offset-position:", SYNTAX_BUILTIN},{"offset-rotate:", SYNTAX_BUILTIN},{"offset:", SYNTAX_BUILTIN},{"oldlace", SYNTAX_CONSTANT},{"oldstyle-nums", SYNTAX_CONSTANT},{"olive", SYNTAX_CONSTANT},{"olivedrab", SYNTAX_CONSTANT},{"opacity", SYNTAX_BUILTIN},{"open", SYNTAX_CONSTANT},{"open-quote", SYNTAX_CONSTANT},{"optimizeLegibility", SYNTAX_CONSTANT},{"optimizeQuality", SYNTAX_CONSTANT},{"optimizeSpeed", SYNTAX_CONSTANT},{"optional", SYNTAX_CONSTANT},{"orange", SYNTAX_CONSTANT},{"orangered", SYNTAX_CONSTANT},{"orchid", SYNTAX_CONSTANT},{"order:", SYNTAX_BUILTIN},{"ordinal", SYNTAX_CONSTANT},{"orientation:", SYNTAX_BUILTIN},{"ornaments", SYNTAX_BUILTIN},{"orphans:", SYNTAX_BUILTIN},{"outline-color:", SYNTAX_BUILTIN},{"outline-offset:", SYNTAX_BUILTIN},{"outline-style:", SYNTAX_BUILTIN},{"outline-width:", SYNTAX_BUILTIN},{"outline:", SYNTAX_BUILTIN},{"outset", SYNTAX_CONSTANT},{"outside", SYNTAX_CONSTANT},{"over", SYNTAX_CONSTANT},{"overflow-anchor:", SYNTAX_BUILTIN},{"overflow-block:", SYNTAX_BUILTIN},{"overflow-clip-margin:", SYNTAX_BUILTIN},{"overflow-inline:", SYNTAX_BUILTIN},{"overflow-wrap:", SYNTAX_BUILTIN},{"overflow-x:", SYNTAX_BUILTIN},{"overflow-y:", SYNTAX_BUILTIN},{"overflow:", SYNTAX_BUILTIN},{"overlay", SYNTAX_CONSTANT},{"overline", SYNTAX_CONSTANT},{"overscroll-behavior-block:", SYNTAX_BUILTIN},{"overscroll-behavior-inline:", SYNTAX_BUILTIN},{"overscroll-behavior-x:", SYNTAX_BUILTIN},{"overscroll-behavior-y:", SYNTAX_BUILTIN},{"overscroll-behavior:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_p[63] = {{"pad:", SYNTAX_BUILTIN},{"padding-block-end:", SYNTAX_BUILTIN},{"padding-block-start:", SYNTAX_BUILTIN},{"padding-block:", SYNTAX_BUILTIN},{"padding-bottom:", SYNTAX_BUILTIN},{"padding-inline-end:", SYNTAX_BUILTIN},{"padding-inline-start:", SYNTAX_BUILTIN},{"padding-inline:", SYNTAX_BUILTIN},{"padding-left:", SYNTAX_BUILTIN},{"padding-right:", SYNTAX_BUILTIN},{"padding-top:", SYNTAX_BUILTIN},{"padding:", SYNTAX_BUILTIN},{"page", SYNTAX_CONSTANT},{"page-break-after:", SYNTAX_BUILTIN},{"page-break-before:", SYNTAX_BUILTIN},{"page-break-inside:", SYNTAX_BUILTIN},{"paint", SYNTAX_BUILTIN},{"paint-order:", SYNTAX_BUILTIN},{"painted", SYNTAX_CONSTANT},{"palegoldenrod", SYNTAX_CONSTANT},{"palegreen", SYNTAX_CONSTANT},{"paleturquoise", SYNTAX_CONSTANT},{"palevioletred", SYNTAX_CONSTANT},{"pan-down", SYNTAX_CONSTANT},{"pan-left", SYNTAX_CONSTANT},{"pan-right", SYNTAX_CONSTANT},{"pan-up", SYNTAX_CONSTANT},{"pan-x", SYNTAX_CONSTANT},{"pan-y", SYNTAX_CONSTANT},{"papayawhip", SYNTAX_CONSTANT},{"path", SYNTAX_BUILTIN},{"paused", SYNTAX_CONSTANT},{"peachpuff", SYNTAX_CONSTANT},{"perspective", SYNTAX_BUILTIN},{"perspective-origin:", SYNTAX_BUILTIN},{"peru", SYNTAX_CONSTANT},{"petite-caps", SYNTAX_CONSTANT},{"pink", SYNTAX_CONSTANT},{"pixelated", SYNTAX_CONSTANT},{"place-content:", SYNTAX_BUILTIN},{"place-items:", SYNTAX_BUILTIN},{"place-self:", SYNTAX_BUILTIN},{"plaintext", SYNTAX_CONSTANT},{"plum", SYNTAX_CONSTANT},{"pointer", SYNTAX_CONSTANT},{"pointer-events:", SYNTAX_BUILTIN},{"polygon", SYNTAX_BUILTIN},{"portrait", SYNTAX_CONSTANT},{"position:", SYNTAX_BUILTIN},{"pow", SYNTAX_BUILTIN},{"powderblue", SYNTAX_CONSTANT},{"pre", SYNTAX_CONSTANT},{"pre-line", SYNTAX_CONSTANT},{"pre-wrap", SYNTAX_CONSTANT},{"prefix:", SYNTAX_BUILTIN},{"preserve-3d", SYNTAX_CONSTANT},{"print-color-adjust:", SYNTAX_BUILTIN},{"progress", SYNTAX_CONSTANT},{"progressive", SYNTAX_CONSTANT},{"proportional-nums", SYNTAX_CONSTANT},{"proportional-width", SYNTAX_CONSTANT},{"proximity", SYNTAX_CONSTANT},{"purple", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_q[1] = {{"quotes:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_r[49] = {{"radial", SYNTAX_CONSTANT},{"radial-gradient", SYNTAX_BUILTIN},{"range:", SYNTAX_BUILTIN},{"rect", SYNTAX_BUILTIN},{"recto", SYNTAX_CONSTANT},{"red", SYNTAX_CONSTANT},{"region", SYNTAX_CONSTANT},{"relative", SYNTAX_CONSTANT},{"rem", SYNTAX_BUILTIN},{"remove", SYNTAX_CONSTANT},{"repeat", SYNTAX_BUILTIN},{"repeating-conic-gradient", SYNTAX_BUILTIN},{"repeating-linear-gradient", SYNTAX_BUILTIN},{"repeating-radial-gradient", SYNTAX_BUILTIN},{"reset-size", SYNTAX_CONSTANT},{"resize:", SYNTAX_BUILTIN},{"reverse", SYNTAX_CONSTANT},{"reversed", SYNTAX_BUILTIN},{"revert", SYNTAX_CONSTANT},{"rgb", SYNTAX_BUILTIN},{"rgba", SYNTAX_BUILTIN},{"ridge", SYNTAX_CONSTANT},{"right", SYNTAX_CONSTANT},{"rl", SYNTAX_CONSTANT},{"rl-tb", SYNTAX_CONSTANT},{"rosybrown", SYNTAX_CONSTANT},{"rotate", SYNTAX_BUILTIN},{"rotate3d", SYNTAX_BUILTIN},{"rotateX", SYNTAX_BUILTIN},{"rotateY", SYNTAX_BUILTIN},{"rotateZ", SYNTAX_BUILTIN},{"round", SYNTAX_CONSTANT},{"row", SYNTAX_CONSTANT},{"row-gap:", SYNTAX_BUILTIN},{"row-resize", SYNTAX_CONSTANT},{"row-reverse", SYNTAX_CONSTANT},{"row-severse", SYNTAX_CONSTANT},{"royalblue", SYNTAX_CONSTANT},{"rtl", SYNTAX_CONSTANT},{"ruby", SYNTAX_CONSTANT},{"ruby-align:", SYNTAX_BUILTIN},{"ruby-base", SYNTAX_CONSTANT},{"ruby-base-container", SYNTAX_CONSTANT},{"ruby-merge:", SYNTAX_BUILTIN},{"ruby-position:", SYNTAX_BUILTIN},{"ruby-text", SYNTAX_CONSTANT},{"ruby-text-container", SYNTAX_CONSTANT},{"run-in", SYNTAX_CONSTANT},{"running", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_s[129] = {{"s-resize", SYNTAX_CONSTANT},{"sRGB", SYNTAX_CONSTANT},{"saddlebrown", SYNTAX_CONSTANT},{"salmon", SYNTAX_CONSTANT},{"sandybrown", SYNTAX_CONSTANT},{"saturate", SYNTAX_BUILTIN},{"saturation", SYNTAX_CONSTANT},{"scale", SYNTAX_BUILTIN},{"scale-down", SYNTAX_CONSTANT},{"scale3d", SYNTAX_BUILTIN},{"scaleX", SYNTAX_BUILTIN},{"scaleY", SYNTAX_BUILTIN},{"scaleZ", SYNTAX_BUILTIN},{"screen", SYNTAX_CONSTANT},{"scroll", SYNTAX_BUILTIN},{"scroll-behavior:", SYNTAX_BUILTIN},{"scroll-margin-block-end:", SYNTAX_BUILTIN},{"scroll-margin-block-start:", SYNTAX_BUILTIN},{"scroll-margin-block:", SYNTAX_BUILTIN},{"scroll-margin-bottom:", SYNTAX_BUILTIN},{"scroll-margin-inline-end:", SYNTAX_BUILTIN},{"scroll-margin-inline-start:", SYNTAX_BUILTIN},{"scroll-margin-inline:", SYNTAX_BUILTIN},{"scroll-margin-left:", SYNTAX_BUILTIN},{"scroll-margin-right:", SYNTAX_BUILTIN},{"scroll-margin-top:", SYNTAX_BUILTIN},{"scroll-margin:", SYNTAX_BUILTIN},{"scroll-padding-block-end:", SYNTAX_BUILTIN},{"scroll-padding-block-start:", SYNTAX_BUILTIN},{"scroll-padding-block:", SYNTAX_BUILTIN},{"scroll-padding-bottom:", SYNTAX_BUILTIN},{"scroll-padding-inline-end:", SYNTAX_BUILTIN},{"scroll-padding-inline-start:", SYNTAX_BUILTIN},{"scroll-padding-inline:", SYNTAX_BUILTIN},{"scroll-padding-left:", SYNTAX_BUILTIN},{"scroll-padding-right:", SYNTAX_BUILTIN},{"scroll-padding-top:", SYNTAX_BUILTIN},{"scroll-padding:", SYNTAX_BUILTIN},{"scroll-snap-align:", SYNTAX_BUILTIN},{"scroll-snap-stop:", SYNTAX_BUILTIN},{"scroll-snap-type:", SYNTAX_BUILTIN},{"scroll-timeline-axis:", SYNTAX_BUILTIN},{"scroll-timeline-name:", SYNTAX_BUILTIN},{"scroll-timeline:", SYNTAX_BUILTIN},{"scrollbar-color:", SYNTAX_BUILTIN},{"scrollbar-gutter:", SYNTAX_BUILTIN},{"scrollbar-width:", SYNTAX_BUILTIN},{"se-resize", SYNTAX_CONSTANT},{"seagreen", SYNTAX_CONSTANT},{"seashell", SYNTAX_CONSTANT},{"selector", SYNTAX_BUILTIN},{"semi-condensed", SYNTAX_CONSTANT},{"semi-expanded", SYNTAX_CONSTANT},{"separate", SYNTAX_CONSTANT},{"sepia", SYNTAX_BUILTIN},{"sesame", SYNTAX_CONSTANT},{"shape-image-threshold:", SYNTAX_BUILTIN},{"shape-margin:", SYNTAX_BUILTIN},{"shape-outside:", SYNTAX_BUILTIN},{"show", SYNTAX_CONSTANT},{"sideways", SYNTAX_CONSTANT},{"sideways-left", SYNTAX_CONSTANT},{"sideways-lr", SYNTAX_CONSTANT},{"sideways-right", SYNTAX_CONSTANT},{"sideways-rl", SYNTAX_CONSTANT},{"sienna", SYNTAX_CONSTANT},{"sign", SYNTAX_BUILTIN},{"silver", SYNTAX_CONSTANT},{"simplified", SYNTAX_CONSTANT},{"sin", SYNTAX_BUILTIN},{"size-adjust:", SYNTAX_BUILTIN},{"size:", SYNTAX_BUILTIN},{"skew", SYNTAX_BUILTIN},{"skewX", SYNTAX_BUILTIN},{"skewY", SYNTAX_BUILTIN},{"skyblue", SYNTAX_CONSTANT},{"slashed-zero", SYNTAX_CONSTANT},{"slateblue", SYNTAX_CONSTANT},{"slategray", SYNTAX_CONSTANT},{"slategrey", SYNTAX_CONSTANT},{"slice", SYNTAX_CONSTANT},{"small", SYNTAX_CONSTANT},{"small-caps", SYNTAX_CONSTANT},{"small-caption", SYNTAX_CONSTANT},{"smaller", SYNTAX_CONSTANT},{"smooth", SYNTAX_CONSTANT},{"snow", SYNTAX_CONSTANT},{"soft-light", SYNTAX_CONSTANT},{"solid", SYNTAX_CONSTANT},{"space", SYNTAX_CONSTANT},{"space-around", SYNTAX_CONSTANT},{"space-between", SYNTAX_CONSTANT},{"space-evenly", SYNTAX_CONSTANT},{"speak-as:", SYNTAX_BUILTIN},{"spell-out", SYNTAX_CONSTANT},{"springgreen", SYNTAX_CONSTANT},{"sqrt", SYNTAX_BUILTIN},{"square", SYNTAX_CONSTANT},{"src:", SYNTAX_BUILTIN},{"stacked-fractions", SYNTAX_CONSTANT},{"start", SYNTAX_CONSTANT},{"static", SYNTAX_CONSTANT},{"status-bar", SYNTAX_CONSTANT},{"steelblue", SYNTAX_CONSTANT},{"step-end", SYNTAX_CONSTANT},{"step-start", SYNTAX_CONSTANT},{"steps", SYNTAX_BUILTIN},{"sticky", SYNTAX_CONSTANT},{"stretch", SYNTAX_CONSTANT},{"strict", SYNTAX_CONSTANT},{"stroke", SYNTAX_CONSTANT},{"stroke-box", SYNTAX_CONSTANT},{"style", SYNTAX_CONSTANT},{"styleset", SYNTAX_BUILTIN},{"stylistic", SYNTAX_BUILTIN},{"sub", SYNTAX_CONSTANT},{"subgrid", SYNTAX_CONSTANT},{"subpixel-antialiased", SYNTAX_CONSTANT},{"subtract", SYNTAX_CONSTANT},{"suffix:", SYNTAX_BUILTIN},{"super", SYNTAX_CONSTANT},{"supports", SYNTAX_BUILTIN},{"sw-resize", SYNTAX_CONSTANT},{"swap", SYNTAX_CONSTANT},{"swash", SYNTAX_BUILTIN},{"symbolic", SYNTAX_CONSTANT},{"symbols", SYNTAX_BUILTIN},{"syntax:", SYNTAX_BUILTIN},{"system:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_t[76] = {{"tab-size:", SYNTAX_BUILTIN},{"table", SYNTAX_CONSTANT},{"table-caption", SYNTAX_CONSTANT},{"table-cell", SYNTAX_CONSTANT},{"table-column", SYNTAX_CONSTANT},{"table-column-group", SYNTAX_CONSTANT},{"table-footer-group", SYNTAX_CONSTANT},{"table-header-group", SYNTAX_CONSTANT},{"table-layout:", SYNTAX_BUILTIN},{"table-row", SYNTAX_CONSTANT},{"table-row-group", SYNTAX_CONSTANT},{"tabular-nums", SYNTAX_CONSTANT},{"tan", SYNTAX_BUILTIN},{"target-counter", SYNTAX_BUILTIN},{"target-counters", SYNTAX_BUILTIN},{"target-text", SYNTAX_BUILTIN},{"tb", SYNTAX_CONSTANT},{"tb-rl", SYNTAX_CONSTANT},{"teal", SYNTAX_CONSTANT},{"text", SYNTAX_CONSTANT},{"text-after-edge", SYNTAX_CONSTANT},{"text-align-last:", SYNTAX_BUILTIN},{"text-align:", SYNTAX_BUILTIN},{"text-before-edge", SYNTAX_CONSTANT},{"text-bottom", SYNTAX_CONSTANT},{"text-combine-upright:", SYNTAX_BUILTIN},{"text-decoration-color:", SYNTAX_BUILTIN},{"text-decoration-line:", SYNTAX_BUILTIN},{"text-decoration-skip-ink:", SYNTAX_BUILTIN},{"text-decoration-skip:", SYNTAX_BUILTIN},{"text-decoration-style:", SYNTAX_BUILTIN},{"text-decoration-thickness:", SYNTAX_BUILTIN},{"text-decoration:", SYNTAX_BUILTIN},{"text-emphasis-color:", SYNTAX_BUILTIN},{"text-emphasis-position:", SYNTAX_BUILTIN},{"text-emphasis-style:", SYNTAX_BUILTIN},{"text-emphasis:", SYNTAX_BUILTIN},{"text-indent:", SYNTAX_BUILTIN},{"text-justify:", SYNTAX_BUILTIN},{"text-orientation:", SYNTAX_BUILTIN},{"text-overflow:", SYNTAX_BUILTIN},{"text-rendering:", SYNTAX_BUILTIN},{"text-shadow:", SYNTAX_BUILTIN},{"text-size-adjust:", SYNTAX_BUILTIN},{"text-top", SYNTAX_CONSTANT},{"text-transform:", SYNTAX_BUILTIN},{"text-underline-offset:", SYNTAX_BUILTIN},{"text-underline-position:", SYNTAX_BUILTIN},{"thick", SYNTAX_CONSTANT},{"thin", SYNTAX_CONSTANT},{"thistle", SYNTAX_CONSTANT},{"titling-caps", SYNTAX_CONSTANT},{"tomato", SYNTAX_CONSTANT},{"top", SYNTAX_CONSTANT},{"top-outside", SYNTAX_CONSTANT},{"touch", SYNTAX_CONSTANT},{"touch-action:", SYNTAX_BUILTIN},{"traditional", SYNTAX_CONSTANT},{"transform-box:", SYNTAX_BUILTIN},{"transform-origin:", SYNTAX_BUILTIN},{"transform-style:", SYNTAX_BUILTIN},{"transform:", SYNTAX_BUILTIN},{"transition-delay:", SYNTAX_BUILTIN},{"transition-duration:", SYNTAX_BUILTIN},{"transition-property:", SYNTAX_BUILTIN},{"transition-timing-function:", SYNTAX_BUILTIN},{"transition:", SYNTAX_BUILTIN},{"translate", SYNTAX_BUILTIN},{"translate3d", SYNTAX_BUILTIN},{"translateX", SYNTAX_BUILTIN},{"translateY", SYNTAX_BUILTIN},{"translateZ", SYNTAX_BUILTIN},{"transparent", SYNTAX_CONSTANT},{"triangle", SYNTAX_CONSTANT},{"turquoise", SYNTAX_CONSTANT},{"type", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_u[16] = {{"ultra-condensed", SYNTAX_CONSTANT},{"ultra-expanded", SYNTAX_CONSTANT},{"under", SYNTAX_CONSTANT},{"underline", SYNTAX_CONSTANT},{"unicase", SYNTAX_CONSTANT},{"unicode-bidi:", SYNTAX_BUILTIN},{"unicode-range:", SYNTAX_BUILTIN},{"unset", SYNTAX_CONSTANT},{"upleft", SYNTAX_CONSTANT},{"uppercase", SYNTAX_CONSTANT},{"upright", SYNTAX_CONSTANT},{"url", SYNTAX_BUILTIN},{"use-glyph-orientation", SYNTAX_CONSTANT},{"use-script", SYNTAX_CONSTANT},{"user-select:", SYNTAX_BUILTIN},{"user-zoom:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_v[16] = {{"var", SYNTAX_BUILTIN},{"verso", SYNTAX_CONSTANT},{"vertical", SYNTAX_CONSTANT},{"vertical-align:", SYNTAX_BUILTIN},{"vertical-ideographic", SYNTAX_CONSTANT},{"vertical-lr", SYNTAX_CONSTANT},{"vertical-rl", SYNTAX_CONSTANT},{"vertical-text", SYNTAX_CONSTANT},{"view-box", SYNTAX_CONSTANT},{"viewport-fit:", SYNTAX_BUILTIN},{"violet", SYNTAX_CONSTANT},{"visibility:", SYNTAX_BUILTIN},{"visible", SYNTAX_CONSTANT},{"visibleFill", SYNTAX_CONSTANT},{"visiblePainted", SYNTAX_CONSTANT},{"visibleStroke", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_w[20] = {{"w-resize", SYNTAX_CONSTANT},{"wait", SYNTAX_CONSTANT},{"wavy", SYNTAX_CONSTANT},{"weight", SYNTAX_CONSTANT},{"wheat", SYNTAX_CONSTANT},{"white", SYNTAX_CONSTANT},{"white-space:", SYNTAX_BUILTIN},{"whitesmoke", SYNTAX_CONSTANT},{"whitespace", SYNTAX_CONSTANT},{"wider", SYNTAX_CONSTANT},{"widows:", SYNTAX_BUILTIN},{"width:", SYNTAX_BUILTIN},{"will-change:", SYNTAX_BUILTIN},{"word-break:", SYNTAX_BUILTIN},{"word-spacing:", SYNTAX_BUILTIN},{"word-wrap:", SYNTAX_BUILTIN},{"words", SYNTAX_CONSTANT},{"wrap", SYNTAX_CONSTANT},{"wrap-reverse", SYNTAX_CONSTANT},{"writing-mode:", SYNTAX_BUILTIN}}; +static const Keyword syntax_keywords_css_x[5] = {{"x", SYNTAX_CONSTANT},{"x-large", SYNTAX_CONSTANT},{"x-small", SYNTAX_CONSTANT},{"xx-large", SYNTAX_CONSTANT},{"xx-small", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_y[3] = {{"y", SYNTAX_CONSTANT},{"yellow", SYNTAX_CONSTANT},{"yellowgreen", SYNTAX_CONSTANT}}; +static const Keyword syntax_keywords_css_z[5] = {{"z-index:", SYNTAX_BUILTIN},{"zero", SYNTAX_CONSTANT},{"zoom-in", SYNTAX_CONSTANT},{"zoom-out", SYNTAX_CONSTANT},{"zoom:", SYNTAX_BUILTIN}}; +static const KeywordList syntax_all_keywords_css[128] = { + ['-'] = {syntax_keywords_css_x2d, arr_count(syntax_keywords_css_x2d)}, ['@'] = {syntax_keywords_css_x40, arr_count(syntax_keywords_css_x40)}, ['a'] = {syntax_keywords_css_a, arr_count(syntax_keywords_css_a)}, ['b'] = {syntax_keywords_css_b, arr_count(syntax_keywords_css_b)}, ['c'] = {syntax_keywords_css_c, arr_count(syntax_keywords_css_c)}, ['d'] = {syntax_keywords_css_d, arr_count(syntax_keywords_css_d)}, ['e'] = {syntax_keywords_css_e, arr_count(syntax_keywords_css_e)}, ['f'] = {syntax_keywords_css_f, arr_count(syntax_keywords_css_f)}, ['g'] = {syntax_keywords_css_g, arr_count(syntax_keywords_css_g)}, ['h'] = {syntax_keywords_css_h, arr_count(syntax_keywords_css_h)}, ['i'] = {syntax_keywords_css_i, arr_count(syntax_keywords_css_i)}, ['j'] = {syntax_keywords_css_j, arr_count(syntax_keywords_css_j)}, ['k'] = {syntax_keywords_css_k, arr_count(syntax_keywords_css_k)}, ['l'] = {syntax_keywords_css_l, arr_count(syntax_keywords_css_l)}, ['m'] = {syntax_keywords_css_m, arr_count(syntax_keywords_css_m)}, ['n'] = {syntax_keywords_css_n, arr_count(syntax_keywords_css_n)}, ['o'] = {syntax_keywords_css_o, arr_count(syntax_keywords_css_o)}, ['p'] = {syntax_keywords_css_p, arr_count(syntax_keywords_css_p)}, ['q'] = {syntax_keywords_css_q, arr_count(syntax_keywords_css_q)}, ['r'] = {syntax_keywords_css_r, arr_count(syntax_keywords_css_r)}, ['s'] = {syntax_keywords_css_s, arr_count(syntax_keywords_css_s)}, ['t'] = {syntax_keywords_css_t, arr_count(syntax_keywords_css_t)}, ['u'] = {syntax_keywords_css_u, arr_count(syntax_keywords_css_u)}, ['v'] = {syntax_keywords_css_v, arr_count(syntax_keywords_css_v)}, ['w'] = {syntax_keywords_css_w, arr_count(syntax_keywords_css_w)}, ['x'] = {syntax_keywords_css_x, arr_count(syntax_keywords_css_x)}, ['y'] = {syntax_keywords_css_y, arr_count(syntax_keywords_css_y)}, ['z'] = {syntax_keywords_css_z, arr_count(syntax_keywords_css_z)} +}; + diff --git a/keywords.py b/keywords.py index 72de967..b9fbad0 100755 --- a/keywords.py +++ b/keywords.py @@ -25,13 +25,18 @@ def process_keywords(keywords): def output_keywords(file, keywords, language): keywords = process_keywords(keywords) + def escape(c): + if c.isalpha(): + return c + else: + return 'x{:x}'.format(ord(c)) for (c, kwds) in sorted(keywords.items()): kwds = list(sorted(kwds)) - file.write('static const Keyword syntax_keywords_{}_{}[{}] = {{'.format(language, c, len(kwds))) + file.write('static const Keyword syntax_keywords_{}_{}[{}] = {{'.format(language, escape(c), len(kwds))) file.write(','.join(map(lambda kwd: '{"'+kwd[0]+'", ' + types[kwd[1]] + '}', kwds)) + '};\n') file.write('static const KeywordList syntax_all_keywords_{}[128] = {{\n'.format(language)) file.write('\t'+', '.join(["['{}'] = {{syntax_keywords_{}_{}, arr_count(syntax_keywords_{}_{})}}".format( - c, language, c, language, c) for c in sorted(keywords.keys())]) + '\n') + c, language, escape(c), language, escape(c)) for c in sorted(keywords.keys())]) + '\n') file.write('};\n\n') def cant_overlap(*args): @@ -407,6 +412,170 @@ builtins_go = [ 'comparable' ] +builtins_css = [ + '-webkit-line-clamp:', '@annotation:', '@bottom-center:', '@character-variant:', '@charset:', '@counter-style:', + '@font-face:', '@font-feature-values:', '@historical-forms:', '@import:', '@keyframes:', '@layer:', '@left-bottom:', + '@media:', '@namespace:', '@ornaments:', '@page:', '@property:', '@right-bottom:', '@scroll-timeline:', '@styleset:', + '@stylistic:', '@supports:', '@swash:', '@top-center:', '@viewport:', 'abs', 'accent-color:', 'acos', + 'additive-symbols:', 'align-content:', 'align-items:', 'align-self:', 'align-tracks:', 'all:', 'animation:', + 'animation-composition:', 'animation-delay:', 'animation-direction:', 'animation-duration:', 'animation-fill-mode:', + 'animation-iteration-count:', 'animation-name:', 'animation-play-state:', 'animation-timeline:', + 'animation-timing-function:', 'annotation', 'appearance:', 'ascent-override:', 'asin', 'aspect-ratio:', 'atan', + 'atan2', 'attr', 'backdrop-filter:', 'backface-visibility:', 'background:', 'background-attachment:', + 'background-blend-mode:', 'background-clip:', 'background-color:', 'background-image:', 'background-origin:', + 'background-position:', 'background-position-x:', 'background-position-y:', 'background-repeat:', 'background-size:', + 'bleed:', 'block-overflow:', 'block-size:', 'blur', 'border:', 'border-block:', 'border-block-color:', + 'border-block-end:', 'border-block-end-color:', 'border-block-end-style:', 'border-block-end-width:', + 'border-block-start:', 'border-block-start-color:', 'border-block-start-style:', 'border-block-start-width:', + 'border-block-style:', 'border-block-width:', 'border-bottom:', 'border-bottom-color:', 'border-bottom-left-radius:', + 'border-bottom-right-radius:', 'border-bottom-style:', 'border-bottom-width:', 'border-collapse:', 'border-color:', + 'border-end-end-radius:', 'border-end-start-radius:', 'border-image:', 'border-image-outset:', 'border-image-repeat:', + 'border-image-slice:', 'border-image-source:', 'border-image-width:', 'border-inline:', 'border-inline-color:', + 'border-inline-end:', 'border-inline-end-color:', 'border-inline-end-style:', 'border-inline-end-width:', + 'border-inline-start:', 'border-inline-start-color:', 'border-inline-start-style:', 'border-inline-start-width:', + 'border-inline-style:', 'border-inline-width:', 'border-left:', 'border-left-color:', 'border-left-style:', + 'border-left-width:', 'border-radius:', 'border-right:', 'border-right-color:', 'border-right-style:', + 'border-right-width:', 'border-spacing:', 'border-start-end-radius:', 'border-start-start-radius:', 'border-style:', + 'border-top:', 'border-top-color:', 'border-top-left-radius:', 'border-top-right-radius:', 'border-top-style:', + 'border-top-width:', 'border-width:', 'box-decoration-break:', 'box-shadow:', 'box-sizing:', 'break-after:', + 'break-before:', 'break-inside:', 'brightness', 'calc', 'caption-side:', 'caret:', 'caret-color:', 'caret-shape:', + 'character-variant', 'circle', 'clamp', 'clear:', 'clip:', 'clip-path:', 'color:', 'color-scheme:', 'column-count:', + 'column-fill:', 'column-gap:', 'column-rule:', 'column-rule-color:', 'column-rule-style:', 'column-rule-width:', + 'column-span:', 'column-width:', 'columns:', 'conic-gradient', 'contain:', 'contain-intrinsic-block-size:', + 'contain-intrinsic-height:', 'contain-intrinsic-inline-size:', 'contain-intrinsic-size:', 'contain-intrinsic-width:', + 'content:', 'content-visibility:', 'contrast', 'cos', 'counter-increment:', 'counter-reset:', 'counter-set:', + 'counters', 'cross-fade', 'cubic-bezier', 'cursor:', 'descent-override:', 'direction:', 'display:', 'drop-shadow', + 'element', 'ellipse', 'empty-cells:', 'env', 'exp', 'fallback:', 'filter:', 'flex:', 'flex-basis:', 'flex-direction:', + 'flex-flow:', 'flex-grow:', 'flex-shrink:', 'flex-wrap:', 'float:', 'font:', 'font-display:', 'font-family:', + 'font-feature-settings:', 'font-kerning:', 'font-language-override:', 'font-optical-sizing:', 'font-size:', + 'font-size-adjust:', 'font-stretch:', 'font-style:', 'font-synthesis:', 'font-variant:', 'font-variant-alternates:', + 'font-variant-caps:', 'font-variant-east-asian:', 'font-variant-ligatures:', 'font-variant-numeric:', + 'font-variant-position:', 'font-variation-settings:', 'font-weight:', 'forced-color-adjust:', 'format', 'gap:', + 'grayscale', 'grid:', 'grid-area:', 'grid-auto-columns:', 'grid-auto-flow:', 'grid-auto-rows:', 'grid-column:', + 'grid-column-end:', 'grid-column-start:', 'grid-row:', 'grid-row-end:', 'grid-row-start:', 'grid-template:', + 'grid-template-areas:', 'grid-template-columns:', 'grid-template-rows:', 'hanging-punctuation:', 'height:', 'hsl', + 'hsla', 'hue-rotate', 'hwb', 'hyphenate-character:', 'hyphenate-limit-chars:', 'hyphens:', 'hypot', 'image', + 'image-orientation:', 'image-rendering:', 'image-resolution:', 'image-set', 'inherits:', 'initial-letter:', + 'initial-letter-align:', 'initial-value:', 'inline-size:', 'input-security:', 'inset', 'inset-block:', + 'inset-block-end:', 'inset-block-start:', 'inset-inline:', 'inset-inline-end:', 'inset-inline-start:', 'invert', + 'isolation:', 'justify-content:', 'justify-items:', 'justify-self:', 'justify-tracks:', 'lab', 'layer', 'lch', + 'leader', 'letter-spacing:', 'line-break:', 'line-clamp:', 'line-gap-override:', 'line-height:', 'line-height-step:', + 'linear-gradient', 'list-style:', 'list-style-image:', 'list-style-position:', 'list-style-type:', 'local', 'log', + 'margin:', 'margin-block:', 'margin-block-end:', 'margin-block-start:', 'margin-bottom:', 'margin-inline:', + 'margin-inline-end:', 'margin-inline-start:', 'margin-left:', 'margin-right:', 'margin-top:', 'margin-trim:', 'marks:', + 'mask:', 'mask-border:', 'mask-border-mode:', 'mask-border-outset:', 'mask-border-repeat:', 'mask-border-slice:', + 'mask-border-source:', 'mask-border-width:', 'mask-clip:', 'mask-composite:', 'mask-image:', 'mask-mode:', + 'mask-origin:', 'mask-position:', 'mask-repeat:', 'mask-size:', 'mask-type:', 'masonry-auto-flow:', 'math-depth:', + 'math-shift:', 'math-style:', 'matrix', 'matrix3d', 'max', 'max-block-size:', 'max-height:', 'max-inline-size:', + 'max-lines:', 'max-width:', 'max-zoom:', 'min', 'min-block-size:', 'min-height:', 'min-inline-size:', 'min-width:', + 'min-zoom:', 'minmax', 'mix-blend-mode:', 'mod', 'negative:', 'object-fit:', 'object-position:', 'offset:', + 'offset-anchor:', 'offset-distance:', 'offset-path:', 'offset-position:', 'offset-rotate:', 'opacity', 'order:', + 'orientation:', 'ornaments', 'orphans:', 'outline:', 'outline-color:', 'outline-offset:', 'outline-style:', + 'outline-width:', 'overflow:', 'overflow-anchor:', 'overflow-block:', 'overflow-clip-margin:', 'overflow-inline:', + 'overflow-wrap:', 'overflow-x:', 'overflow-y:', 'overscroll-behavior:', 'overscroll-behavior-block:', + 'overscroll-behavior-inline:', 'overscroll-behavior-x:', 'overscroll-behavior-y:', 'pad:', 'padding:', + 'padding-block:', 'padding-block-end:', 'padding-block-start:', 'padding-bottom:', 'padding-inline:', + 'padding-inline-end:', 'padding-inline-start:', 'padding-left:', 'padding-right:', 'padding-top:', 'page-break-after:', + 'page-break-before:', 'page-break-inside:', 'paint', 'paint-order:', 'path', 'perspective', 'perspective-origin:', + 'place-content:', 'place-items:', 'place-self:', 'pointer-events:', 'polygon', 'position:', 'pow', 'prefix:', + 'print-color-adjust:', 'quotes:', 'radial-gradient', 'range:', 'rect', 'rem', 'repeat', 'repeating-conic-gradient', + 'repeating-linear-gradient', 'repeating-radial-gradient', 'resize:', 'reversed', 'rgb', 'rgba', 'rotate', 'rotate3d', + 'rotateX', 'rotateY', 'rotateZ', 'row-gap:', 'ruby-align:', 'ruby-merge:', 'ruby-position:', 'saturate', 'scale', + 'scale3d', 'scaleX', 'scaleY', 'scaleZ', 'scroll', 'scroll-behavior:', 'scroll-margin:', 'scroll-margin-block:', + 'scroll-margin-block-end:', 'scroll-margin-block-start:', 'scroll-margin-bottom:', 'scroll-margin-inline:', + 'scroll-margin-inline-end:', 'scroll-margin-inline-start:', 'scroll-margin-left:', 'scroll-margin-right:', + 'scroll-margin-top:', 'scroll-padding:', 'scroll-padding-block:', 'scroll-padding-block-end:', + 'scroll-padding-block-start:', 'scroll-padding-bottom:', 'scroll-padding-inline:', 'scroll-padding-inline-end:', + 'scroll-padding-inline-start:', 'scroll-padding-left:', 'scroll-padding-right:', 'scroll-padding-top:', + 'scroll-snap-align:', 'scroll-snap-stop:', 'scroll-snap-type:', 'scroll-timeline:', 'scroll-timeline-axis:', + 'scroll-timeline-name:', 'scrollbar-color:', 'scrollbar-gutter:', 'scrollbar-width:', 'selector', 'sepia', + 'shape-image-threshold:', 'shape-margin:', 'shape-outside:', 'sign', 'sin', 'size:', 'size-adjust:', 'skew', 'skewX', + 'skewY', 'speak-as:', 'sqrt', 'src:', 'steps', 'styleset', 'stylistic', 'suffix:', 'supports', 'swash', 'symbols', + 'syntax:', 'system:', 'tab-size:', 'table-layout:', 'tan', 'target-counter', 'target-counters', 'target-text', + 'text-align:', 'text-align-last:', 'text-combine-upright:', 'text-decoration:', 'text-decoration-color:', + 'text-decoration-line:', 'text-decoration-skip:', 'text-decoration-skip-ink:', 'text-decoration-style:', + 'text-decoration-thickness:', 'text-emphasis:', 'text-emphasis-color:', 'text-emphasis-position:', + 'text-emphasis-style:', 'text-indent:', 'text-justify:', 'text-orientation:', 'text-overflow:', 'text-rendering:', + 'text-shadow:', 'text-size-adjust:', 'text-transform:', 'text-underline-offset:', 'text-underline-position:', + 'touch-action:', 'transform:', 'transform-box:', 'transform-origin:', 'transform-style:', 'transition:', + 'transition-delay:', 'transition-duration:', 'transition-property:', 'transition-timing-function:', 'translate', + 'translate3d', 'translateX', 'translateY', 'translateZ', 'type', 'unicode-bidi:', 'unicode-range:', 'url', + 'user-select:', 'user-zoom:', 'var', 'vertical-align:', 'viewport-fit:', 'visibility:', 'white-space:', 'widows:', + 'width:', 'will-change:', 'word-break:', 'word-spacing:', 'word-wrap:', 'writing-mode:', 'z-index:', 'zoom:' +] + +constants_css = [ + 'aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige', 'bisque', 'black', 'blanchedalmond', 'blue', + 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', + 'crimson', 'cyan', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkgrey', 'darkkhaki', + 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', + 'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', + 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fuchsia', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', + 'gray', 'green', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', + 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', + 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', + 'lightslategrey', 'lightsteelblue', 'lightyellow', 'lime', 'limegreen', 'linen', 'magenta', 'maroon', + 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', + 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', + 'navajowhite', 'navy', 'oldlace', 'olive', 'olivedrab', 'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', + 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple', 'red', + 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'silver', 'skyblue', + 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'teal', 'thistle', 'tomato', + 'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen', + 'above', 'absolute', 'active', 'add', 'additive', 'after-edge', 'alias', 'all-petite-caps', 'all-scroll', + 'all-small-caps', 'alpha', 'alphabetic', 'alternate', 'alternate-reverse', 'always', 'antialiased', 'auto', 'auto-pos', + 'available', 'avoid', 'avoid-column', 'avoid-page', 'avoid-region', 'backwards', 'balance', 'baseline', 'before-edge', + 'below', 'bevel', 'bidi-override', 'blink', 'block', 'block-axis', 'block-start', 'block-end', 'bold', 'bolder', + 'border-box', 'both', 'bottom', 'bottom-outside', 'break-all', 'break-word', 'bullets', 'butt', 'capitalize', + 'caption', 'cell', 'center', 'central', 'char', 'clone', 'close-quote', 'closest-corner', + 'closest-side', 'col-resize', 'collapse', 'color-burn', 'color-dodge', 'column', 'column-reverse', + 'common-ligatures', 'compact', 'condensed', 'content-box', 'contents', 'context-menu', + 'contextual', 'copy', 'cover', 'crisp-edges', 'crispEdges', 'crosshair', 'cyclic', 'dark', 'darken', 'dashed', + 'decimal', 'default', 'dense', 'diagonal-fractions', 'difference', 'digits', 'disabled', 'disc', + 'discretionary-ligatures', 'distribute', 'distribute-all-lines', 'distribute-letter', 'distribute-space', 'dot', + 'dotted', 'double', 'double-circle', 'downleft', 'downright', 'e-resize', 'each-line', 'ease', 'ease-in', + 'ease-in-out', 'ease-out', 'economy', 'ellipsis', 'embed', 'end', 'evenodd', 'ew-resize', 'exact', + 'exclude', 'exclusion', 'expanded', 'extends', 'extra-condensed', 'extra-expanded', 'farthest-corner', + 'farthest-side', 'fill', 'fill-available', 'fill-box', 'filled', 'fit-content', 'fixed', 'flat', + 'flip', 'flow-root', 'forwards', 'freeze', 'from-image', 'full-width', 'geometricPrecision', 'georgian', + 'grab', 'grabbing', 'groove', 'hand', 'hanging', 'hard-light', 'help', 'hidden', 'hide', + 'historical-forms', 'historical-ligatures', 'horizontal', 'horizontal-tb', 'hue', 'icon', 'ideograph-alpha', + 'ideograph-numeric', 'ideograph-parenthesis', 'ideograph-space', 'ideographic', 'inactive', 'infinite', 'inherit', + 'initial', 'inline', 'inline-axis', 'inline-block', 'inline-end', 'inline-flex', 'inline-grid', 'inline-list-item', + 'inline-start', 'inline-table', 'inside', 'inter-character', 'inter-ideograph', 'inter-word', 'intersect', + 'isolate', 'isolate-override', 'italic', 'jis04', 'jis78', 'jis83', 'jis90', 'justify', 'justify-all', + 'kannada', 'keep-all', 'landscape', 'large', 'larger', 'left', 'light', 'lighten', 'lighter', 'line', 'line-edge', + 'line-through', 'linear', 'linearRGB', 'lining-nums', 'list-item', 'loose', 'lowercase', 'lr', 'lr-tb', 'ltr', + 'luminance', 'luminosity', 'main-size', 'mandatory', 'manipulation', 'manual', 'margin-box', 'match-parent', + 'match-source', 'mathematical', 'max-content', 'medium', 'menu', 'message-box', 'middle', 'min-content', 'miter', + 'mixed', 'move', 'multiply', 'n-resize', 'narrower', 'ne-resize', 'nearest-neighbor', 'nesw-resize', 'newspaper', + 'no-change', 'no-clip', 'no-close-quote', 'no-common-ligatures', 'no-contextual', 'no-discretionary-ligatures', + 'no-drop', 'no-historical-ligatures', 'no-open-quote', 'no-repeat', 'none', 'nonzero', 'normal', 'not-allowed', + 'nowrap', 'ns-resize', 'numbers', 'numeric', 'nw-resize', 'nwse-resize', 'oblique', 'oldstyle-nums', 'open', + 'open-quote', 'optimizeLegibility', 'optimizeQuality', 'optimizeSpeed', 'optional', 'ordinal', 'outset', 'outside', + 'over', 'overlay', 'overline', 'page', 'painted', 'pan-down', 'pan-left', 'pan-right', + 'pan-up', 'pan-x', 'pan-y', 'paused', 'petite-caps', 'pixelated', 'plaintext', 'pointer', 'portrait', 'pre', + 'pre-line', 'pre-wrap', 'preserve-3d', 'progress', 'progressive', 'proportional-nums', 'proportional-width', + 'proximity', 'radial', 'recto', 'region', 'relative', 'remove', 'reset-size', 'reverse', + 'revert', 'ridge', 'right', 'rl', 'rl-tb', 'round', 'row', 'row-resize', 'row-reverse', 'row-severse', 'rtl', 'ruby', + 'ruby-base', 'ruby-base-container', 'ruby-text', 'ruby-text-container', 'run-in', 'running', 's-resize', 'saturation', + 'scale-down', 'screen', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', + 'sesame', 'show', 'sideways', 'sideways-left', 'sideways-lr', 'sideways-right', 'sideways-rl', 'simplified', + 'slashed-zero', 'slice', 'small', 'small-caps', 'small-caption', 'smaller', 'smooth', 'soft-light', 'solid', 'space', + 'space-around', 'space-between', 'space-evenly', 'spell-out', 'square', 'sRGB', 'stacked-fractions', 'start', 'static', + 'status-bar', 'swap', 'step-end', 'step-start', 'sticky', 'stretch', 'strict', 'stroke', 'stroke-box', 'style', 'sub', + 'subgrid', 'subpixel-antialiased', 'subtract', 'super', 'sw-resize', 'symbolic', 'table', 'table-caption', + 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', + 'table-row-group', 'tabular-nums', 'tb', 'tb-rl', 'text', 'text-after-edge', 'text-before-edge', 'text-bottom', + 'text-top', 'thick', 'thin', 'titling-caps', 'top', 'top-outside', 'touch', 'traditional', 'transparent', 'triangle', + 'ultra-condensed', 'ultra-expanded', 'under', 'underline', 'unicase', 'unset', 'upleft', 'uppercase', 'upright', + 'use-glyph-orientation', 'use-script', 'verso', 'vertical', 'vertical-ideographic', 'vertical-lr', 'vertical-rl', + 'vertical-text', 'view-box', 'visible', 'visibleFill', 'visiblePainted', 'visibleStroke', 'w-resize', 'wait', 'wavy', + 'weight', 'whitespace', 'wider', 'words', 'wrap', 'wrap-reverse', 'x', 'x-large', 'x-small', 'xx-large', 'xx-small', + 'y', 'zero', 'zoom-in', 'zoom-out' +] + + file = open('keywords.h', 'w') file.write('''// keywords for all languages ted supports // This file was auto-generated by keywords.py @@ -427,6 +596,8 @@ cant_overlap(keywords_c, constants_c, builtins_c) cant_overlap(keywords_rust, builtins_rust, constants_rust) cant_overlap(keywords_python, builtins_python) cant_overlap(keywords_javascript, builtins_javascript, constants_javascript) +cant_overlap(constants_css, builtins_css) +cant_overlap(constants_glsl, builtins_glsl, keywords_glsl) c_things = label(keywords_c, SYNTAX_KEYWORD) + label(constants_c, SYNTAX_CONSTANT) + label(builtins_c, SYNTAX_BUILTIN) output_keywords(file, c_things, 'c') cpp_things = c_things + label(keywords_cpp, SYNTAX_KEYWORD) @@ -447,4 +618,5 @@ output_keywords(file, label(builtins_html, SYNTAX_BUILTIN), 'html') output_keywords(file, label(constants_config, SYNTAX_CONSTANT), 'config') output_keywords(file, label(keywords_glsl, SYNTAX_KEYWORD) + label(constants_glsl, SYNTAX_CONSTANT) + label(builtins_glsl, SYNTAX_BUILTIN), 'glsl') +output_keywords(file, label(builtins_css, SYNTAX_BUILTIN) + label(constants_css, SYNTAX_CONSTANT), 'css') file.close() diff --git a/main.c b/main.c index c5c263a..80fe636 100644 --- a/main.c +++ b/main.c @@ -1,24 +1,28 @@ /* +@TODO: +- CSS [a=b] selectors + - other CSS things? +- preserve permissions on save FUTURE FEATURES: -- manual.md - CSS highlighting - option for separate colors for read/write highlights - styles ([color] sections) - for this, it would be nice to have #include in ted.cfg +- open multiple files with command line arguments +- better undo chaining (dechain on backspace?) +- manual.md +- regenerate tags for completion too if there are no results - make go-to-definition/hover/highlight modifier key configurable - font setting & support for multiple fonts to cover more characters - support for variable-width fonts - robust find (results shouldn't move around when you type things) -- open multiple files with command line arguments - document links using LSP textDocument/documentLink request - rename using LSP (textDocument/rename) - we have request writing & response parsing support for it, but that hasn't been tested yet - i'm putting this off for now since it seems hard to have undo support for it. - possible idea: open all files altered, and create undo chains for each of them. if there are too many files, give an error like "use a different tool for this" -- better undo chaining (dechain on backspace?) - allow multiple fonts (fonts directory?) -- regenerate tags for completion too if there are no results - config variables - bind key to multiple commands - plugins? diff --git a/syntax.c b/syntax.c index 7a2dc3a..b412ea7 100644 --- a/syntax.c +++ b/syntax.c @@ -65,6 +65,11 @@ enum { SYNTAX_STATE_TED_CFG_STRING_BACKTICK = 0x02u, // `-delimited string }; +enum { + SYNTAX_STATE_CSS_COMMENT = 0x01u, + SYNTAX_STATE_CSS_IN_BRACES = 0x02u, +}; + typedef struct { Language lang; char *name; @@ -193,6 +198,10 @@ static bool syntax_number_continues(Language lang, const char32_t *line, u32 lin return false; } } + if (lang == LANG_CSS && line[i] < 128 && isalpha((char)line[i])) { + // units + return true; + } return (line[i] < CHAR_MAX && (strchr(SYNTAX_DIGITS, (char)line[i]) || (i && line[i-1] == 'e' && (line[i] == '+' || line[i] == '-')))); @@ -207,6 +216,10 @@ static bool is_keyword(Language lang, char32_t c) { if (c == '!') return true; break; + case LANG_CSS: + if (c == '-' || c == '@' || c == ':') + return true; + break; case LANG_HTML: case LANG_XML: if (c == '-' || c == '=') @@ -1680,6 +1693,115 @@ static void syntax_highlight_text(SyntaxState *state, const char32_t *line, u32 } } +static void syntax_highlight_css(SyntaxState *state_ptr, const char32_t *line, u32 line_len, SyntaxCharType *char_types) { + SyntaxState state = *state_ptr; + bool in_comment = (state & SYNTAX_STATE_CSS_COMMENT) != 0; + bool in_braces = (state & SYNTAX_STATE_CSS_IN_BRACES) != 0; + + for (u32 i = 0; i < line_len; ++i) { + bool has_1_char = i + 1 < line_len; + bool dealt_with = false; + char32_t c = line[i]; + + if (in_comment) { + if (c == '/' && i > 0 && line[i - 1] == '*') { + in_comment = false; + if (char_types) char_types[i] = SYNTAX_COMMENT; + dealt_with = true; + } + } else switch (c) { + case '/': + if (has_1_char) { + if (line[i + 1] == '*') { + in_comment = true; // /* + } + } + break; + case '{': + in_braces = true; + break; + case '}': + in_braces = false; + break; + case '.': + case '#': + if (!in_braces && char_types) { + char_types[i] = SYNTAX_KEYWORD; + for (++i; i < line_len; ++i) { + if (is32_alnum(line[i]) || line[i] == '-' || line[i] == '_') { + char_types[i] = SYNTAX_KEYWORD; + } else { + break; + } + } + --i; // we will increment i in the loop + dealt_with = true; + } + if (c == '#' && in_braces && char_types) { + // color which we'll treat as a number. + goto number; + } + break; + case ANY_DIGIT: + number: { + // a number! + bool number = false; + if (char_types) { + number = true; + if (i) { + if (line[i - 1] == '.') { + // support .6, for example + char_types[i - 1] = SYNTAX_CONSTANT; + } else if (is32_word(line[i - 1])) { + // actually, this isn't a number. it's something like a*6* or u3*2*. + number = false; + } + } + } + if (number) { + char_types[i++] = SYNTAX_CONSTANT; + while (syntax_number_continues(LANG_CSS, line, line_len, i)) { + char_types[i] = SYNTAX_CONSTANT; + ++i; + } + --i; // we will increment i in the loop + dealt_with = true; + } + } break; + default: { + if ((i && is_keyword(LANG_CSS, line[i - 1])) || !is_keyword(LANG_CSS, c) || is32_digit(c)) + break; // can't be a keyword on its own. + + if (in_braces && char_types) { + u32 keyword_len = syntax_keyword_len(LANG_CSS, line, i, line_len); + Keyword const *keyword = syntax_keyword_lookup(syntax_all_keywords_css, &line[i], keyword_len); + + if (keyword) { + SyntaxCharType type = keyword->type; + for (size_t j = 0; j < keyword_len; ++j) { + char_types[i++] = type; + } + --i; // we'll increment i from the for loop + dealt_with = true; + break; + } + } + } break; + } + if (char_types && !dealt_with) { + SyntaxCharType type = SYNTAX_NORMAL; + if (in_comment) + type = SYNTAX_COMMENT; + char_types[i] = type; + } + } + *state_ptr = (SyntaxState)( + (in_comment * SYNTAX_STATE_CSS_COMMENT) + | (in_braces * SYNTAX_STATE_CSS_IN_BRACES) + ); +} + + typedef struct { Language lang; SyntaxHighlightFunction func; @@ -1831,6 +1953,12 @@ void syntax_register_builtin_languages(void) { .lsp_identifier = "glsl", .highlighter = syntax_highlight_html, }, + { + .id = LANG_CSS, + .name = "CSS", + .lsp_identifier = "css", + .highlighter = syntax_highlight_css + }, }; for (size_t i = 0; i < arr_count(builtins); ++i) { @@ -1838,7 +1966,6 @@ void syntax_register_builtin_languages(void) { } } - void syntax_register_language(const LanguageInfo *info) { if (!info->id || info->id > LANG_USER_MAX) { debug_println("Bad language ID: %" PRIu32, info->id); diff --git a/ted.cfg b/ted.cfg index 3304ecb..6bf60d3 100644 --- a/ted.cfg +++ b/ted.cfg @@ -171,6 +171,9 @@ comment-end = " -->" comment-start = "" +[CSS.core] +comment-start = "/* " +comment-end = " */" # phantom completions are just annoying if you're not actually programming [Markdown.core] @@ -438,6 +441,7 @@ TypeScript = .ts JSON = .json Java = .java Go = .go +CSS = .css # You can add language-specific settings like this: # [HTML.core] diff --git a/ted.h b/ted.h index d1f758e..5990a58 100644 --- a/ted.h +++ b/ted.h @@ -82,6 +82,8 @@ enum { LANG_GLSL = 16, /// plain text LANG_TEXT = 17, + /// CSS + LANG_CSS = 18, /// all user-defined languages are greater than this. LANG_USER_MIN = 100000, -- cgit v1.2.3