Added Java support.

This commit is contained in:
GrenderG committed 2017-04-08 02:36:53 +02:00
1 parent de8112ef3f
commit 4bacffa679
1 file changed
+47 -12
+47 -12
View File
@@ -146,13 +146,26 @@ enum editor_highlight {
/*** Filetypes ***/ /*** Filetypes ***/
char* C_HL_extensions[] = {".c", ".h", ".cpp", NULL}; // Array must be terminated with NULL. char* C_HL_extensions[] = {".c", ".h", ".cpp", NULL}; // Array must be terminated with NULL.
char *C_HL_keywords[] = { char* C_HL_keywords[] = {
"switch", "if", "while", "for", "break", "continue", "return", "else", "switch", "if", "while", "for", "break", "continue", "return", "else",
"struct", "union", "typedef", "static", "enum", "class", "case", "struct", "union", "typedef", "static", "enum", "class", "case", "#include",
"#define",
"int|", "long|", "double|", "float|", "char|", "unsigned|", "signed|", "int|", "long|", "double|", "float|", "char|", "unsigned|", "signed|",
"void|", NULL "void|", NULL
}; };
char* JAVA_HL_extensions[] = {".java", NULL};
char* JAVA_HL_keywords[] = {
"switch", "if", "while", "for", "break", "continue", "return", "else",
"in", "public", "private", "protected", "static", "final", "abstract",
"enum", "class", "case", "try", "catch", "do", "extends", "implements",
"finally", "import", "instanceof", "interface", "new", "package", "super",
"native", "strictfp",
"synchronized", "this", "throw", "throws", "transient", "volatile",
"byte|", "char|", "double|", "float|", "int|", "long|", "short|",
"boolean|", NULL
};
struct editor_syntax HL_DB[] = { struct editor_syntax HL_DB[] = {
{ {
"c", "c",
@@ -163,6 +176,15 @@ struct editor_syntax HL_DB[] = {
"*/", "*/",
HL_HIGHLIGHT_NUMBERS | HL_HIGHLIGHT_STRINGS HL_HIGHLIGHT_NUMBERS | HL_HIGHLIGHT_STRINGS
}, },
{
"java",
JAVA_HL_extensions,
JAVA_HL_keywords,
"//",
"/*",
"*/",
HL_HIGHLIGHT_NUMBERS | HL_HIGHLIGHT_STRINGS
},
}; };
// Size of the "Hightlight Database" (HL_DB). // Size of the "Hightlight Database" (HL_DB).
@@ -338,6 +360,13 @@ void editorHandleSigwinch() {
editorRefreshScreen(); editorRefreshScreen();
} }
void editorHandleSigcont() {
disableRawMode();
consoleBufferOpen();
enableRawMode();
editorRefreshScreen();
}
void consoleBufferOpen() { void consoleBufferOpen() {
// Switch to another terminal buffer in order to be able to restore state at exit // Switch to another terminal buffer in order to be able to restore state at exit
// by calling consoleBufferClose(). // by calling consoleBufferClose().
@@ -530,15 +559,17 @@ void editorUpdateSyntax(editor_row* row) {
int editorSyntaxToColor(int highlight) { int editorSyntaxToColor(int highlight) {
// We return ANSI codes for colors. // We return ANSI codes for colors.
// See https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
// for a list of them.
switch (highlight) { switch (highlight) {
case HL_SL_COMMENT: case HL_SL_COMMENT:
case HL_ML_COMMENT: return 36; // Cyan case HL_ML_COMMENT: return 36;
case HL_KEYWORD_1: return 33; // Yellow case HL_KEYWORD_1: return 31;
case HL_KEYWORD_2: return 32; // Green case HL_KEYWORD_2: return 32;
case HL_STRING: return 35; // Magenta. case HL_STRING: return 33;
case HL_NUMBER: return 31; // Red. case HL_NUMBER: return 35;
case HL_MATCH: return 34; // Blue. case HL_MATCH: return 34;
default: return 37; // White. default: return 37;
} }
} }
@@ -1052,7 +1083,7 @@ void editorDrawWelcomeMessage(struct a_buf* ab) {
// Using snprintf to truncate message in case the terminal // Using snprintf to truncate message in case the terminal
// is too tiny to handle the entire string. // is too tiny to handle the entire string.
int welcome_len = snprintf(welcome, sizeof(welcome), int welcome_len = snprintf(welcome, sizeof(welcome),
"tte -- version %s", TTE_VERSION); "tte %s <http://dmoral.es/>", TTE_VERSION);
if (welcome_len > ec.screen_cols) if (welcome_len > ec.screen_cols)
welcome_len = ec.screen_cols; welcome_len = ec.screen_cols;
// Centering the message. // Centering the message.
@@ -1365,7 +1396,11 @@ void initEditor() {
editorUpdateWindowSize(); editorUpdateWindowSize();
// The SIGWINCH signal is sent to a process when its controlling // The SIGWINCH signal is sent to a process when its controlling
// terminal changes its size (a window change). // terminal changes its size (a window change).
signal(SIGWINCH, editorHandleSigwinch); signal(SIGWINCH, editorHandleSigwinch);
// The SIGCONT signal instructs the operating system to continue
// (restart) a process previously paused by the SIGSTOP or SIGTSTP
// signal.
signal(SIGCONT, editorHandleSigcont);
} }
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
@@ -1382,4 +1417,4 @@ int main(int argc, char* argv[]) {
} }
return 0; return 0;
} }