/* date = July 8th 2025 10:13 am */ #ifndef FCODER_TREE_SITTER_H #define FCODER_TREE_SITTER_H #include struct Tree_Sitter_Language_Definition { String_Const_u8 extension; u64 extension_hash; TSLanguage* language; TSQuery* highlight_query; Tree_Sitter_Language_Definition* next; }; struct Tree_Sitter_Languages { Arena arena; Tree_Sitter_Language_Definition* languages[4096]; }; global Tree_Sitter_Languages tree_sitter_languages; extern "C" { TSLanguage *tree_sitter_cpp(); TSLanguage *tree_sitter_c(); } CUSTOM_ID(attachment, buffer_tree_sitter_data_id); CUSTOM_ID(attachment, buffer_tree_sitter_parse_task_id); struct Buffer_Tree_Sitter_Data { TSTree* tree; System_Mutex tree_mutex; }; struct Tree_Sitter_Code_Index_Nest_Node { Tree_Sitter_Code_Index_Nest_Node* next; Tree_Sitter_Code_Index_Nest_Node* prev; Tree_Sitter_Code_Index_Nest_Node* parent; Tree_Sitter_Code_Index_Nest_Node* child_first; Tree_Sitter_Code_Index_Nest_Node* child_last; Code_Index_Nest* nest; }; struct Tree_Sitter_Code_Index_Nest_List { Tree_Sitter_Code_Index_Nest_Node* first; Tree_Sitter_Code_Index_Nest_Node* last; }; b8 use_tree_sitter_code_indexing = true; b8 use_tree_sitter_token_coloring = true; function void tree_sitter_code_index_update_tick(Application_Links *app); #endif //FCODER_TREE_SITTER_H