4coder/code/custom/4coder_tree_sitter.h

77 lines
1.6 KiB
C
Raw Permalink Normal View History

/* date = July 8th 2025 10:13 am */
#ifndef FCODER_TREE_SITTER_H
#define FCODER_TREE_SITTER_H
#include <tree_sitter/api.h>
enum Tree_Sitter_Language_Query_Kind
{
Tree_Sitter_Language_Query_Highlights,
Tree_Sitter_Language_Query_Functions,
Tree_Sitter_Language_Query_Types,
Tree_Sitter_Language_Query_Count,
};
struct Tree_Sitter_Language_Queries
{
TSQuery* ptr[Tree_Sitter_Language_Query_Count];
};
struct Tree_Sitter_Language_Definition
{
String_Const_u8 extension;
u64 extension_hash;
TSLanguage* language;
Tree_Sitter_Language_Queries queries;
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();
2025-07-10 19:10:17 +00:00
TSLanguage *tree_sitter_jai();
}
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