Added basic syntax highlighting for the other most common programming languages

This commit is contained in:
Abdelilah El Aissaoui 2024-07-16 20:08:35 +02:00
parent 633e75acaa
commit 26f2aeaaf6
No known key found for this signature in database
GPG Key ID: 7587FC860F594869
14 changed files with 1622 additions and 1 deletions

View File

@ -0,0 +1,28 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class BashSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("#")
}

View File

@ -0,0 +1,87 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class CSharpSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,61 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class CppSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,76 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class DartSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,34 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class GoSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,59 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class JavaSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,30 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class LuaSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("--")
}

View File

@ -0,0 +1,59 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class ObjectiveCSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,79 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class PhpSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,50 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class RubySyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("#")
}

View File

@ -0,0 +1,936 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class SQLSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("--")
}

View File

@ -0,0 +1,48 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class ScalaSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -0,0 +1,61 @@
package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter
class SwiftSyntaxHighlighter : SyntaxHighlighter() {
override fun loadKeywords(): List<String> = 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("//")
}

View File

@ -76,6 +76,19 @@ fun getSyntaxHighlighterFromExtension(extension: String?): SyntaxHighlighter {
private enum class HighlightLanguagesSupported(val extensions: List<String>, val highlighter: () -> SyntaxHighlighter) { private enum class HighlightLanguagesSupported(val extensions: List<String>, val highlighter: () -> SyntaxHighlighter) {
Kotlin(listOf("kt", "kts"), { KotlinSyntaxHighlighter() }), Kotlin(listOf("kt", "kts"), { KotlinSyntaxHighlighter() }),
Rust(listOf("rs"), { RustSyntaxHighlighter() }), 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() }), 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() }),
} }