diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/BashSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/BashSyntaxHighlighter.kt new file mode 100644 index 0000000..f9a6e05 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/BashSyntaxHighlighter.kt @@ -0,0 +1,28 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class BashSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "case", + "coproc", + "do", + "done", + "elif", + "else", + "esac", + "fi", + "for", + "function", + "if", + "in", + "select", + "then", + "until", + "while", + "time", + "[[", + "]]" + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("#") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CSharpSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CSharpSyntaxHighlighter.kt new file mode 100644 index 0000000..89ddae7 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CSharpSyntaxHighlighter.kt @@ -0,0 +1,87 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class CSharpSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "abstract", + "as", + "base", + "bool", + "break", + "byte", + "case", + "catch", + "char", + "checked", + "class", + "const", + "continue", + "decimal", + "default", + "delegate", + "do", + "double", + "else", + "enum", + "event", + "explicit", + "extern", + "false", + "finally", + "fixed", + "float", + "for", + "foreach", + "goto", + "if", + "implicit", + "in", + "int", + "interface", + "internal", + "is", + "lock", + "long", + "namespace", + "new", + "null", + "object", + "operator", + "out", + "override", + "params", + "private", + "protected", + "public", + "readonly", + "ref", + "return", + "sbyte", + "sealed", + "short", + "sizeof", + "stackalloc", + "static", + "string", + "struct", + "switch", + "this", + "throw", + "true", + "try", + "typeof", + "uint", + "ulong", + "unchecked", + "unsafe", + "ushort", + "using", + "virtual", + "void", + "volatile", + "while", + + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("[") && word.endsWith("]") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CppSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CppSyntaxHighlighter.kt new file mode 100644 index 0000000..ffc72f3 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/CppSyntaxHighlighter.kt @@ -0,0 +1,61 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class CppSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "asm", + "double", + "new", + "switch", + "auto", + "else", + "operator", + "template", + "break", + "enum", + "private", + "this", + "case", + "extern", + "protected", + "throw", + "catch", + "float", + "public", + "try", + "char", + "for", + "register", + "typedef", + "class", + "friend", + "return", + "union", + "const", + "#include", + "#define", + "#ifndef", + "#endif", + "goto", + "short", + "unsigned", + "continue", + "if", + "signed", + "virtual", + "default", + "inline", + "sizeof", + "void", + "delete", + "int", + "static", + "volatile", + "do", + "long", + "struct", + "while", + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/DartSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/DartSyntaxHighlighter.kt new file mode 100644 index 0000000..6b10fb2 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/DartSyntaxHighlighter.kt @@ -0,0 +1,76 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class DartSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "abstract", + "as", + "assert", + "async", + "await", + "base", + "break", + "case", + "catch", + "class", + "const", + "continue", + "covariant", + "default", + "deferred", + "do", + "dynamic", + "else", + "enum", + "export", + "extends", + "extension", + "external", + "factory", + "false", + "final", + "finally", + "for", + "Function", + "get", + "hide", + "if", + "implements", + "import", + "in", + "interface", + "is", + "late", + "library", + "mixin", + "new", + "null", + "of", + "on", + "operator", + "part", + "required", + "rethrow", + "return", + "sealed ", + "set", + "show ", + "static", + "super", + "switch", + "sync ", + "this", + "throw", + "true", + "try", + "type", + "typedef", + "var", + "void", + "when ", + "with", + "while", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("@") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/GoSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/GoSyntaxHighlighter.kt new file mode 100644 index 0000000..e029194 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/GoSyntaxHighlighter.kt @@ -0,0 +1,34 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class GoSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "break", + "default", + "func", + "interface", + "select", + "case", + "defer", + "go", + "map", + "struct", + "chan", + "else", + "goto", + "package", + "switch", + "const", + "fallthrough", + "if", + "range", + "type", + "continue", + "for", + "import", + "return", + "var", + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/JavaSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/JavaSyntaxHighlighter.kt new file mode 100644 index 0000000..eb4877a --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/JavaSyntaxHighlighter.kt @@ -0,0 +1,59 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class JavaSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "abstract", + "continue", + "for", + "new", + "switch", + "assert", + "default", + "goto*", + "package", + "synchronized", + "boolean", + "do", + "if", + "private", + "this", + "break", + "double", + "implements", + "protected", + "throw", + "byte", + "else", + "import", + "public", + "throws", + "case", + "enum****", + "instanceof", + "return", + "transient", + "catch", + "extends", + "int", + "short", + "try", + "char", + "final", + "interface", + "static", + "void", + "class", + "finally", + "long", + "strictfp**", + "volatile", + "const*", + "float", + "native", + "super", + "while", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("@") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/LuaSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/LuaSyntaxHighlighter.kt new file mode 100644 index 0000000..b562873 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/LuaSyntaxHighlighter.kt @@ -0,0 +1,30 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class LuaSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "and", + "break", + "do", + "else", + "elseif", + "end", + "false", + "for", + "function", + "if", + "in", + "local", + "nil", + "not", + "or", + "repeat", + "return", + "then", + "true", + "until", + "while" + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("--") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ObjectiveCSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ObjectiveCSyntaxHighlighter.kt new file mode 100644 index 0000000..f7ff47e --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ObjectiveCSyntaxHighlighter.kt @@ -0,0 +1,59 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class ObjectiveCSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "auto", + "else", + "long", + "switch", + "break", + "enum", + "register", + "typedef", + "case", + "extern", + "return", + "union", + "char", + "float", + "short", + "unsigned", + "const", + "for", + "signed", + "void", + "continue", + "goto", + "sizeof", + "volatile", + "default", + "if", + "static", + "while", + "do", + "int", + "struct", + "_Packed", + "double", + "protocol", + "interface", + "@interface", + "implementation", + "@implementation", + "NSObject", + "NSInteger", + "NSNumber", + "CGFloat", + "property", + "nonatomic", + "retain", + "strong", + "weak", + "unsafe_unretained", + "readwrite", + "readonly", + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PhpSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PhpSyntaxHighlighter.kt new file mode 100644 index 0000000..21a9d58 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PhpSyntaxHighlighter.kt @@ -0,0 +1,79 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class PhpSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "__halt_compiler()", + "abstract", + "and", + "array()", + "as", + "break", + "callable", + "case", + "catch", + "class", + "clone", + "const", + "continue", + "declare", + "default", + "die()", + "do", + "echo", + "else", + "elseif", + "empty()", + "enddeclare", + "endfor", + "endforeach", + "endif", + "endswitch", + "endwhile", + "eval()", + "exit()", + "extends", + "final", + "finally", + "fn (as of PHP 7.4)", + "for", + "foreach", + "function", + "global", + "goto", + "if", + "implements", + "include", + "include_once", + "instanceof", + "insteadof", + "interface", + "isset()", + "list()", + "match (as of PHP 8.0)", + "namespace", + "new", + "or", + "print", + "private", + "protected", + "public", + "readonly (as of PHP 8.1.0) *", + "require", + "require_once", + "return", + "static", + "switch", + "throw", + "trait", + "try", + "unset()", + "use", + "var", + "while", + "xor", + "yield", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("@@") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/RubySyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/RubySyntaxHighlighter.kt new file mode 100644 index 0000000..486f4da --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/RubySyntaxHighlighter.kt @@ -0,0 +1,50 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class RubySyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "BEGIN", + "END", + "alias", + "and", + "begin", + "break", + "case", + "class", + "def", + "defined", + "do", + "else", + "elsif", + "end", + "false", + "ensure", + "for", + "if", + "in", + "module", + "next", + "nil", + "not", + "or", + "redo", + "rescue", + "retry", + "return", + "self", + "super", + "then", + "true", + "undef", + "unless", + "until", + "when", + "while", + "yield", + "_ENCODING_", + "_LINE_", + "_FILE_", + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("#") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SQLSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SQLSyntaxHighlighter.kt new file mode 100644 index 0000000..e6bd737 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SQLSyntaxHighlighter.kt @@ -0,0 +1,936 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class SQLSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "ABORT", + "ABORTSESSION", + "ABS", + "ABSENT", + "ABSOLUTE", + "ACCESS", + "ACCESSIBLE", + "ACCESS_LOCK", + "ACCOUNT", + "ACOS", + "ACOSH", + "ACTION", + "ADD", + "ADD_MONTHS", + "ADMIN", + "AFTER", + "AGGREGATE", + "ALIAS", + "ALL", + "ALLOCATE", + "ALLOW", + "ALTER", + "ALTERAND", + "AMP", + "ANALYSE", + "ANALYZE", + "AND", + "ANSIDATE", + "ANY", + "ANY_VALUE", + "ARE", + "ARRAY", + "ARRAY_AGG", + "ARRAY_EXISTS", + "ARRAY_MAX_CARDINALITY", + "AS", + "ASC", + "ASENSITIVE", + "ASIN", + "ASINH", + "ASSERTION", + "ASSOCIATE", + "ASUTIME", + "ASYMMETRIC", + "AT", + "ATAN", + "ATAN2", + "ATANH", + "ATOMIC", + "AUDIT", + "AUTHORIZATION", + "AUX", + "AUXILIARY", + "AVE", + "AVERAGE", + "AVG", + "BACKUP", + "BEFORE", + "BEGIN", + "BEGIN_FRAME", + "BEGIN_PARTITION", + "BETWEEN", + "BIGINT", + "BINARY", + "BIT", + "BLOB", + "BOOLEAN", + "BOTH", + "BREADTH", + "BREAK", + "BROWSE", + "BT", + "BTRIM", + "BUFFERPOOL", + "BULK", + "BUT", + "BY", + "BYTE", + "BYTEINT", + "BYTES", + "CALL", + "CALLED", + "CAPTURE", + "CARDINALITY", + "CASCADE", + "CASCADED", + "CASE", + "CASESPECIFIC", + "CASE_N", + "CAST", + "CATALOG", + "CCSID", + "CD", + "CEIL", + "CEILING", + "CHANGE", + "CHAR", + "CHAR2HEXINT", + "CHARACTER", + "CHARACTERS", + "CHARACTER_LENGTH", + "CHARS", + "CHAR_LENGTH", + "CHECK", + "CHECKPOINT", + "CLASS", + "CLASSIFIER", + "CLOB", + "CLONE", + "CLOSE", + "CLUSTER", + "CLUSTERED", + "CM", + "COALESCE", + "COLLATE", + "COLLATION", + "COLLECT", + "COLLECTION", + "COLLID", + "COLUMN", + "COLUMN_VALUE", + "COMMENT", + "COMMIT", + "COMPLETION", + "COMPRESS", + "COMPUTE", + "CONCAT", + "CONCURRENTLY", + "CONDITION", + "CONNECT", + "CONNECTION", + "CONSTRAINT", + "CONSTRAINTS", + "CONSTRUCTOR", + "CONTAINS", + "CONTAINSTABLE", + "CONTENT", + "CONTINUE", + "CONVERT", + "CONVERT_TABLE_HEADER", + "COPY", + "CORR", + "CORRESPONDING", + "COS", + "COSH", + "COUNT", + "COVAR_POP", + "COVAR_SAMP", + "CREATE", + "CROSS", + "CS", + "CSUM", + "CT", + "CUBE", + "CUME_DIST", + "CURRENT", + "CURRENT_CATALOG", + "CURRENT_DATE", + "CURRENT_DEFAULT_TRANSFORM_GROUP", + "CURRENT_LC_CTYPE", + "CURRENT_PATH", + "CURRENT_ROLE", + "CURRENT_ROW", + "CURRENT_SCHEMA", + "CURRENT_SERVER", + "CURRENT_TIME", + "CURRENT_TIMESTAMP", + "CURRENT_TIMEZONE", + "CURRENT_TRANSFORM_GROUP_FOR_TYPE", + "CURRENT_USER", + "CURRVAL", + "CURSOR", + "CV", + "CYCLE", + "DATA", + "DATABASE", + "DATABASES", + "DATABLOCKSIZE", + "DATE", + "DATEFORM", + "DAY", + "DAYS", + "DAY_HOUR", + "DAY_MICROSECOND", + "DAY_MINUTE", + "DAY_SECOND", + "DBCC", + "DBINFO", + "DEALLOCATE", + "DEC", + "DECFLOAT", + "DECIMAL", + "DECLARE", + "DEFAULT", + "DEFERRABLE", + "DEFERRED", + "DEFINE", + "DEGREES", + "DEL", + "DELAYED", + "DELETE", + "DENSE_RANK", + "DENY", + "DEPTH", + "DEREF", + "DESC", + "DESCRIBE", + "DESCRIPTOR", + "DESTROY", + "DESTRUCTOR", + "DETERMINISTIC", + "DIAGNOSTIC", + "DIAGNOSTICS", + "DICTIONARY", + "DISABLE", + "DISABLED", + "DISALLOW", + "DISCONNECT", + "DISK", + "DISTINCT", + "DISTINCTROW", + "DISTRIBUTED", + "DIV", + "DO", + "DOCUMENT", + "DOMAIN", + "DOUBLE", + "DROP", + "DSSIZE", + "DUAL", + "DUMP", + "DYNAMIC", + "EACH", + "ECHO", + "EDITPROC", + "ELEMENT", + "ELSE", + "ELSEIF", + "EMPTY", + "ENABLED", + "ENCLOSED", + "ENCODING", + "ENCRYPTION", + "END", + "END", + "ENDING", + "END_FRAME", + "END_PARTITION", + "EQ", + "EQUALS", + "ERASE", + "ERRLVL", + "ERROR", + "ERRORFILES", + "ERRORTABLES", + "ESCAPE", + "ESCAPED", + "ET", + "EVERY", + "EXCEPT", + "EXCEPTION", + "EXCLUSIVE", + "EXEC", + "EXECUTE", + "EXISTS", + "EXIT", + "EXP", + "EXPLAIN", + "EXTERNAL", + "EXTRACT", + "FALLBACK", + "FALSE", + "FASTEXPORT", + "FENCED", + "FETCH", + "FIELDPROC", + "FILE", + "FILLFACTOR", + "FILTER", + "FINAL", + "FIRST", + "FIRST_VALUE", + "FLOAT", + "FLOAT4", + "FLOAT8", + "FLOOR", + "FOR", + "FORCE", + "FOREIGN", + "FORMAT", + "FOUND", + "FRAME_ROW", + "FREE", + "FREESPACE", + "FREETEXT", + "FREETEXTTABLE", + "FREEZE", + "FROM", + "FULL", + "FULLTEXT", + "FUNCTION", + "FUSION", + "GE", + "GENERAL", + "GENERATED", + "GET", + "GIVE", + "GLOBAL", + "GO", + "GOTO", + "GRANT", + "GRAPHIC", + "GREATEST", + "GROUP", + "GROUPING", + "GROUPS", + "GT", + "HANDLER", + "HASH", + "HASHAMP", + "HASHBAKAMP", + "HASHBUCKET", + "HASHROW", + "HAVING", + "HELP", + "HIGH_PRIORITY", + "HOLD", + "HOLDLOCK", + "HOST", + "HOUR", + "HOURS", + "HOUR_MICROSECOND", + "HOUR_MINUTE", + "HOUR_SECOND", + "IDENTIFIED", + "IDENTITY", + "IDENTITYCOL", + "IDENTITY_INSERT", + "IF", + "IGNORE", + "ILIKE", + "IMMEDIATE", + "IN", + "INCLUSIVE", + "INCONSISTENT", + "INCREMENT", + "INDEX", + "INDICATOR", + "INFILE", + "INHERIT", + "INITIAL", + "INITIALIZE", + "INITIALLY", + "INITIATE", + "INNER", + "INOUT", + "INPUT", + "INS", + "INSENSITIVE", + "INSERT", + "INSTEAD", + "INT", + "INT1", + "INT2", + "INT3", + "INT4", + "INT8", + "INTEGER", + "INTEGERDATE", + "INTERSECT", + "INTERSECTION", + "INTERVAL", + "INTO", + "IO_AFTER_GTIDS", + "IO_BEFORE_GTIDS", + "IS", + "ISNULL", + "ISOBID", + "ISOLATION", + "ITERATE", + "JAR", + "JOIN", + "JOURNAL", + "JSON", + "JSON_ARRAY", + "JSON_ARRAYAGG", + "JSON_EXISTS", + "JSON_OBJECT", + "JSON_OBJECTAGG", + "JSON_QUERY", + "JSON_SCALAR", + "JSON_SERIALIZE", + "JSON_TABLE", + "JSON_TABLE_PRIMITIVE", + "JSON_VALUE", + "KEEP", + "KEY", + "KEYS", + "KILL", + "KURTOSIS", + "LABEL", + "LAG", + "LANGUAGE", + "LARGE", + "LAST", + "LAST_VALUE", + "LATERAL", + "LC_CTYPE", + "LE", + "LEAD", + "LEADING", + "LEAST", + "LEAVE", + "LEFT", + "LESS", + "LEVEL", + "LIKE", + "LIKE_REGEX", + "LIMIT", + "LINEAR", + "LINENO", + "LINES", + "LISTAGG", + "LN", + "LOAD", + "LOADING", + "LOCAL", + "LOCALE", + "LOCALTIME", + "LOCALTIMESTAMP", + "LOCATOR", + "LOCATORS", + "LOCK", + "LOCKING", + "LOCKMAX", + "LOCKSIZE", + "LOG", + "LOG10", + "LOGGING", + "LOGON", + "LONG", + "LONGBLOB", + "LONGTEXT", + "LOOP", + "LOWER", + "LOW_PRIORITY", + "LPAD", + "LT", + "LTRIM", + "MACRO", + "MAINTAINED", + "MAP", + "MASTER_BIND", + "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", + "MATCHES", + "MATCH_NUMBER", + "MATCH_RECOGNIZE", + "MATERIALIZED", + "MAVG", + "MAX", + "MAXEXTENTS", + "MAXIMUM", + "MAXVALUE", + "MCHARACTERS", + "MDIFF", + "MEDIUMBLOB", + "MEDIUMINT", + "MEDIUMTEXT", + "MEMBER", + "MERGE", + "METHOD", + "MICROSECOND", + "MICROSECONDS", + "MIDDLEINT", + "MIN", + "MINDEX", + "MINIMUM", + "MINUS", + "MINUTE", + "MINUTES", + "MINUTE_MICROSECOND", + "MINUTE_SECOND", + "MLINREG", + "MLOAD", + "MLSLABEL", + "MOD", + "MODE", + "MODIFIES", + "MODIFY", + "MODULE", + "MONITOR", + "MONRESOURCE", + "MONSESSION", + "MONTH", + "MONTHS", + "MSUBSTR", + "MSUM", + "MULTISET", + "NAMED", + "NAMES", + "NATIONAL", + "NATURAL", + "NCHAR", + "NCLOB", + "NE", + "NESTED_TABLE_ID", + "NEW", + "NEW_TABLE", + "NEXT", + "NEXTVAL", + "NO", + "NOAUDIT", + "NOCHECK", + "NOCOMPRESS", + "NONCLUSTERED", + "NONE", + "NORMALIZE", + "NOT", + "NOTNULL", + "NOWAIT", + "NO_WRITE_TO_BINLOG", + "NTH_VALUE", + "NTILE", + "NULL", + "NULLIF", + "NULLIFZERO", + "NULLS", + "NUMBER", + "NUMERIC", + "NUMPARTS", + "OBID", + "OBJECT", + "OBJECTS", + "OCCURRENCES_REGEX", + "OCTET_LENGTH", + "OF", + "OFF", + "OFFLINE", + "OFFSET", + "OFFSETS", + "OLD", + "OLD_TABLE", + "OMIT", + "ON", + "ONE", + "ONLINE", + "ONLY", + "OPEN", + "OPENDATASOURCE", + "OPENQUERY", + "OPENROWSET", + "OPENXML", + "OPERATION", + "OPTIMIZATION", + "OPTIMIZE", + "OPTIMIZER_COSTS", + "OPTION", + "OPTIONALLY", + "OR", + "ORDER", + "ORDINALITY", + "ORGANIZATION", + "OUT", + "OUTER", + "OUTFILE", + "OUTPUT", + "OVER", + "OVERLAPS", + "OVERLAY", + "OVERRIDE", + "PACKAGE", + "PAD", + "PADDED", + "PARAMETER", + "PARAMETERS", + "PART", + "PARTIAL", + "PARTITION", + "PARTITIONED", + "PARTITIONING", + "PASSWORD", + "PATH", + "PATTERN", + "PCTFREE", + "PER", + "PERCENT", + "PERCENTILE_CONT", + "PERCENTILE_DISC", + "PERCENT_RANK", + "PERIOD", + "PERM", + "PERMANENT", + "PIECESIZE", + "PIVOT", + "PLACING", + "PLAN", + "PORTION", + "POSITION", + "POSITION_REGEX", + "POSTFIX", + "POWER", + "PRECEDES", + "PRECISION", + "PREFIX", + "PREORDER", + "PREPARE", + "PRESERVE", + "PREVVAL", + "PRIMARY", + "PRINT", + "PRIOR", + "PRIQTY", + "PRIVATE", + "PRIVILEGES", + "PROC", + "PROCEDURE", + "PROFILE", + "PROGRAM", + "PROPORTIONAL", + "PROTECTION", + "PSID", + "PTF", + "PUBLIC", + "PURGE", + "QUALIFIED", + "QUALIFY", + "QUANTILE", + "QUERY", + "QUERYNO", + "RADIANS", + "RAISERROR", + "RANDOM", + "RANGE", + "RANGE_N", + "RANK", + "RAW", + "READ", + "READS", + "READTEXT", + "READ_WRITE", + "REAL", + "RECONFIGURE", + "RECURSIVE", + "REF", + "REFERENCES", + "REFERENCING", + "REFRESH", + "REGEXP", + "REGR_AVGX", + "REGR_AVGY", + "REGR_COUNT", + "REGR_INTERCEPT", + "REGR_R2", + "REGR_SLOPE", + "REGR_SXX", + "REGR_SXY", + "REGR_SYY", + "RELATIVE", + "RELEASE", + "RENAME", + "REPEAT", + "REPLACE", + "REPLICATION", + "REPOVERRIDE", + "REQUEST", + "REQUIRE", + "RESIGNAL", + "RESOURCE", + "RESTART", + "RESTORE", + "RESTRICT", + "RESULT", + "RESULT_SET_LOCATOR", + "RESUME", + "RET", + "RETRIEVE", + "RETURN", + "RETURNING", + "RETURNS", + "REVALIDATE", + "REVERT", + "REVOKE", + "RIGHT", + "RIGHTS", + "RLIKE", + "ROLE", + "ROLLBACK", + "ROLLFORWARD", + "ROLLUP", + "ROUND_CEILING", + "ROUND_DOWN", + "ROUND_FLOOR", + "ROUND_HALF_DOWN", + "ROUND_HALF_EVEN", + "ROUND_HALF_UP", + "ROUND_UP", + "ROUTINE", + "ROW", + "ROWCOUNT", + "ROWGUIDCOL", + "ROWID", + "ROWNUM", + "ROWS", + "ROWSET", + "ROW_NUMBER", + "RPAD", + "RULE", + "RUN", + "RUNNING", + "SAMPLE", + "SAMPLEID", + "SAVE", + "SAVEPOINT", + "SCHEMA", + "SCHEMAS", + "SCOPE", + "SCRATCHPAD", + "SCROLL", + "SEARCH", + "SECOND", + "SECONDS", + "SECOND_MICROSECOND", + "SECQTY", + "SECTION", + "SECURITY", + "SECURITYAUDIT", + "SEEK", + "SEL", + "SELECT", + "SEMANTICKEYPHRASETABLE", + "SEMANTICSIMILARITYDETAILSTABLE", + "SEMANTICSIMILARITYTABLE", + "SENSITIVE", + "SEPARATOR", + "SEQUENCE", + "SESSION", + "SESSION_USER", + "SET", + "SETRESRATE", + "SETS", + "SETSESSRATE", + "SETUSER", + "SHARE", + "SHOW", + "SHUTDOWN", + "SIGNAL", + "SIMILAR", + "SIMPLE", + "SIN", + "SINH", + "SIZE", + "SKEW", + "SKIP", + "SMALLINT", + "SOME", + "SOUNDEX", + "SOURCE", + "SPACE", + "SPATIAL", + "SPECIFIC", + "SPECIFICTYPE", + "SPOOL", + "SQL", + "SQLEXCEPTION", + "SQLSTATE", + "SQLTEXT", + "SQLWARNING", + "SQL_BIG_RESULT", + "SQL_CALC_FOUND_ROWS", + "SQL_SMALL_RESULT", + "SQRT", + "SS", + "SSL", + "STANDARD", + "START", + "STARTING", + "STARTUP", + "STATE", + "STATEMENT", + "STATIC", + "STATISTICS", + "STAY", + "STDDEV_POP", + "STDDEV_SAMP", + "STEPINFO", + "STOGROUP", + "STORED", + "STORES", + "STRAIGHT_JOIN", + "STRING_CS", + "STRUCTURE", + "STYLE", + "SUBMULTISET", + "SUBSCRIBER", + "SUBSET", + "SUBSTR", + "SUBSTRING", + "SUBSTRING_REGEX", + "SUCCEEDS", + "SUCCESSFUL", + "SUM", + "SUMMARY", + "SUSPEND", + "SYMMETRIC", + "SYNONYM", + "SYSDATE", + "SYSTEM", + "SYSTEM_TIME", + "SYSTEM_USER", + "SYSTIMESTAMP", + "TABLE", + "TABLESAMPLE", + "TABLESPACE", + "TAN", + "TANH", + "TBL_CS", + "TEMPORARY", + "TERMINATE", + "TERMINATED", + "TEXTSIZE", + "THAN", + "THEN", + "THRESHOLD", + "TIME", + "TIMESTAMP", + "TIMEZONE_HOUR", + "TIMEZONE_MINUTE", + "TINYBLOB", + "TINYINT", + "TINYTEXT", + "TITLE", + "TO", + "TOP", + "TRACE", + "TRAILING", + "TRAN", + "TRANSACTION", + "TRANSLATE", + "TRANSLATE_CHK", + "TRANSLATE_REGEX", + "TRANSLATION", + "TREAT", + "TRIGGER", + "TRIM", + "TRIM_ARRAY", + "TRUE", + "TRUNCATE", + "TRY_CONVERT", + "TSEQUAL", + "TYPE", + "UC", + "UESCAPE", + "UID", + "UNDEFINED", + "UNDER", + "UNDO", + "UNION", + "UNIQUE", + "UNKNOWN", + "UNLOCK", + "UNNEST", + "UNPIVOT", + "UNSIGNED", + "UNTIL", + "UPD", + "UPDATE", + "UPDATETEXT", + "UPPER", + "UPPERCASE", + "USAGE", + "USE", + "USER", + "USING", + "UTC_DATE", + "UTC_TIME", + "UTC_TIMESTAMP", + "VALIDATE", + "VALIDPROC", + "VALUE", + "VALUES", + "VALUE_OF", + "VARBINARY", + "VARBYTE", + "VARCHAR", + "VARCHAR2", + "VARCHARACTER", + "VARGRAPHIC", + "VARIABLE", + "VARIADIC", + "VARIANT", + "VARYING", + "VAR_POP", + "VAR_SAMP", + "VCAT", + "VERBOSE", + "VERSIONING", + "VIEW", + "VIRTUAL", + "VOLATILE", + "VOLUMES", + "WAIT", + "WAITFOR", + "WHEN", + "WHENEVER", + "WHERE", + "WHILE", + "WIDTH_BUCKET", + "WINDOW", + "WITH", + "WITHIN", + "WITHIN_GROUP", + "WITHOUT", + "WLM", + "WORK", + "WRITE", + "WRITETEXT", + "XMLCAST", + "XMLEXISTS", + "XMLNAMESPACES", + "XOR", + "YEAR", + "YEARS", + "YEAR_MONTH", + "ZEROFILL", + "ZEROIFNULL", + "ZONE", + ) + + override fun isAnnotation(word: String): Boolean = false + override fun isComment(line: String): Boolean = line.startsWith("--") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ScalaSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ScalaSyntaxHighlighter.kt new file mode 100644 index 0000000..50fb39e --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/ScalaSyntaxHighlighter.kt @@ -0,0 +1,48 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class ScalaSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "abstract", + "case", + "catch", + "class", + "def", + "do", + "else", + "extends", + "false", + "final", + "finally", + "for", + "forSome", + "if", + "implicit", + "import", + "lazy", + "match", + "new", + "null", + "object", + "override", + "package", + "private", + "protected", + "return", + "sealed", + "super", + "this", + "throw", + "trait", + "true", + "try", + "type", + "val", + "var", + "while", + "with", + "yield", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("@") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SwiftSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SwiftSyntaxHighlighter.kt new file mode 100644 index 0000000..73cd6b0 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SwiftSyntaxHighlighter.kt @@ -0,0 +1,61 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class SwiftSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "associatedtype", + "class", + "deinit", + "enum", + "extension", + "fileprivate", + "func", + "import", + "init", + "inout", + "internal", + "let", + "open", + "operator", + "private", + "protocol", + "public", + "static", + "struct", + "subscript", + "typealias", + "var", + "break", + "case", + "continue", + "default", + "defer", + "do", + "else", + "fallthrough", + "for", + "guard", + "if", + "in", + "repeat", + "return", + "switch", + "where", + "while", + "as", + "catch", + "false", + "is", + "nil", + "rethrows", + "super", + "self", + "Self", + "throw", + "throws", + "true", + "try", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("#") + override fun isComment(line: String): Boolean = line.startsWith("//") +} \ No newline at end of file diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt index a51b095..8ab21c9 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt @@ -76,6 +76,19 @@ fun getSyntaxHighlighterFromExtension(extension: String?): SyntaxHighlighter { private enum class HighlightLanguagesSupported(val extensions: List, val highlighter: () -> SyntaxHighlighter) { Kotlin(listOf("kt", "kts"), { KotlinSyntaxHighlighter() }), Rust(listOf("rs"), { RustSyntaxHighlighter() }), - TypeScript(listOf("js", "jsx", "ts", "tsx", "vue", "astro"), { TypeScriptSyntaxHighlighter() }), + TypeScript(listOf("js", "jsx", "ts", "tsx", "vue", "astro"), { TypeScriptSyntaxHighlighter() }), // JS & various frameworks files also included Python(listOf("py"), { PythonSyntaxHighlighter() }), + Java(listOf("java"), { JavaSyntaxHighlighter() }), + CSharp(listOf("cs"), { CSharpSyntaxHighlighter() }), + Cpp(listOf("c", "cpp", "c", "h", "hh", "hpp"), { CppSyntaxHighlighter() }), // C files also included + PHP(listOf("php"), { PhpSyntaxHighlighter() }), + SQL(listOf("sql"), { SQLSyntaxHighlighter() }), + Ruby(listOf("rb"), { RubySyntaxHighlighter() }), + Go(listOf("go"), { GoSyntaxHighlighter() }), + Dart(listOf("dart"), { DartSyntaxHighlighter() }), + Swift(listOf("swift"), { SwiftSyntaxHighlighter() }), + Scala(listOf("scala", "sc"), { ScalaSyntaxHighlighter() }), + Lua(listOf("lua"), { LuaSyntaxHighlighter() }), + ObjectiveC(listOf("m", "mm"), { ObjectiveCSyntaxHighlighter() }), + Bash(listOf("sh", "bash", "zsh"), { BashSyntaxHighlighter() }), } \ No newline at end of file