summaryrefslogtreecommitdiff
path: root/syntax.h
diff options
context:
space:
mode:
Diffstat (limited to 'syntax.h')
-rw-r--r--syntax.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/syntax.h b/syntax.h
new file mode 100644
index 0000000..0cb673e
--- /dev/null
+++ b/syntax.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include <stdlib.h>
+
+#include "editor.h"
+#include "row.h"
+
+#define HIGHLIGHT_FLAG_NUMBERS (1 << 0)
+#define HIGHLIGHT_FLAG_STRINGS (1 << 1)
+
+struct editor_syntax {
+ char* filetype;
+ char** filetype_match;
+ char** keywords;
+ char* single_line_comment_start;
+ char* multi_line_comment_start;
+ char* multi_line_comment_end;
+ int flags;
+};
+
+enum editor_highlight {
+ HIGHLIGHT_NORMAL = 0,
+ HIGHLIGHT_COMMENT,
+ HIGHLIGHT_MULTILINE_COMMENT,
+ HIGHLIGHT_KEYWORD1,
+ HIGHLIGHT_KEYWORD2,
+ HIGHLIGHT_STRING,
+ HIGHLIGHT_NUMBER,
+ HIGHLIGHT_MATCH
+};
+
+#define HIGHLIGHT_DATABASE_ENTRY_COUNT (sizeof(highlight_database) / sizeof(highlight_database[0]))
+
+void editor_update_syntax(struct editor_state* editor, struct editor_row* row);
+int editor_syntax_to_colour(int highlight);
+void editor_select_syntax_highlight(struct editor_state* editor);