From 0418c00ea40d61946475b69db0c6c86b29a87b8e Mon Sep 17 00:00:00 2001 From: Saumya Bhatnagar Date: Sun, 3 Jun 2018 09:17:44 +0530 Subject: [PATCH] Syntax highlight two types of keywords. --- .vscode/settings.json | 5 +++++ editor | Bin 25188 -> 25236 bytes editor.c | 42 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9c8b867 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "termios.h": "c" + } +} \ No newline at end of file diff --git a/editor b/editor index 5be2e09bde7d6862319f0c1e8b86d1692cc24a1a..dc4b7736ba1386c0f2207623e5f82daea6b89360 100755 GIT binary patch delta 8255 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 hm|0gnieekeywords; + char *scs = E.syntax->singleline_comment_start; int scs_len = scs ? strlen(scs) : 0; @@ -306,6 +319,25 @@ void editorUpdateSyntax(editorrow *row) { } } + if (prev_sep) { + int j; + for (j = 0; keywords[j]; j++) { + int klen = strlen(keywords[j]); + int kw2 = keywords[j][klen - 1] == '|'; + if (kw2) klen--; + if (!strncmp(&row->render[i], keywords[j], klen) && + is_separator(row->render[i + klen])) { + memset(&row->hl[i], kw2 ? HL_KEYWORD2 : HL_KEYWORD1, klen); + i += klen; + break; + } + } + if (keywords[j] != NULL) { + prev_sep = 0; + continue; + } + } + prev_sep = is_separator(c); i++; } @@ -316,10 +348,14 @@ int editorSyntaxToColor(int hl) { case HL_NUMBER: return 32; case HL_MATCH: // search query match - return 31; + return 91; case HL_STRING: return 33; case HL_COMMENT: + return 92; + case HL_KEYWORD1: + return 31; + case HL_KEYWORD2: return 34; default: return 37;