[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs extra-modes.c archive.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs extra-modes.c archive.c |
Date: |
Fri, 30 May 2014 22:12:30 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 14/05/30 22:12:30
Modified files:
. : extra-modes.c archive.c
Log message:
improve support for sql files and databases
* dump sqlite databases and syntax colorize output
* add keyword and type support in sql mode
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/extra-modes.c?cvsroot=qemacs&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/qemacs/archive.c?cvsroot=qemacs&r1=1.13&r2=1.14
Patches:
Index: extra-modes.c
===================================================================
RCS file: /sources/qemacs/qemacs/extra-modes.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- extra-modes.c 30 May 2014 17:18:13 -0000 1.26
+++ extra-modes.c 30 May 2014 22:12:30 -0000 1.27
@@ -1055,14 +1055,74 @@
SQL_STYLE_TEXT = QE_STYLE_DEFAULT,
SQL_STYLE_COMMENT = QE_STYLE_COMMENT,
SQL_STYLE_STRING = QE_STYLE_STRING,
- SQL_STYLE_IDENTIFIER = QE_STYLE_KEYWORD,
+ SQL_STYLE_KEYWORD = QE_STYLE_KEYWORD,
+ SQL_STYLE_TYPE = QE_STYLE_TYPE,
+ SQL_STYLE_IDENTIFIER = QE_STYLE_DEFAULT,
SQL_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
};
+static char const sql_keywords[] = {
+ "abs|acos|add|aes_decrypt|aes_encrypt|after|all|alter|analyse|analyze|"
+ "and|as|asc|ascii|asin|atan|atan2|auto_increment|avg|backup|begin|"
+ "benchmark|between|bin|binlog|bit_and|bit_count|bit_length|bit_or|"
+ "bit_xor|both|btree|by|call|case|cast|ceil|ceiling|change|character|"
+ "character_length|char_length|check|checksum|clob|clock|coalesce|"
+ "collate|column|columns|comment|commit|compressed|concat|concat_ws|"
+ "concurrent|constraint|contents|controlfile|conv|convert|cos|cot|"
+ "count|crc32|crc64|create|current_date|current_time|current_timestamp|"
+ "current_user|data|database|databases|declare|default|degrees|delayed|"
+ "delete|desc|describe|directory|disable|discard|div|do|drop|dump|elt|"
+ "enable|enclosed|end|engine|enum|escaped|event|events|execute|exists|"
+ "exp|explain|export_set|fail|false|field|fields|find_in_set|first|"
+ "floor|for|foreign|format|found_rows|from|full|fulltext|function|"
+ "global|go|grant|greatest|group_concat|handler|hash|having|help|hex|"
+ "high_priority|hsieh_hash|if|ifnull|ignore|import|in|index|inet|infile|"
+ "insert|install|instr|interval|into|is|isnull|iterate|jenkins_hash|key|"
+ "keys|last|last_insert_id|lcase|leading|least|leave|left|length|like|"
+ "limit|lines|ln|load|load_file|local|localtime|localtimestamp|locate|"
+ "lock|log|log10|log2|logs|loop|lower|low_priority|lpad|ltrim|make_set|"
+ "max|md5|md5_bin|memory|mid|min|mod|modify|no|none|not|now|null|nullif|"
+ "oct|off|offset|on|optionally|or|ord|order|outfile|password|pi|pid|pow|"
+ "power|prepare|primary|print|procedure|quote|radians|rand|recno|"
+ "release|rename|repair|repeat|replace|restore|return|reverse|revoke|"
+ "right|rollback|round|rpad|rtree|rtrim|rule|savepoint|schema|select|"
+ "sequence|serial|server|session|set|sha|sha1|sha128_bin|sha224_bin|"
+ "sha256_bin|sha384_bin|sha512_bin|show|sign|signed|sin|soundex|source|"
+ "space|spatial|sql_calc_found_rows|sqrt|start|starting|stats|std|"
+ "stddev|stddev_pop|stddev_samp|strcmp|string|structure|substr|"
+ "substring|substring_index|sum|table|tables|tan|temporary|terminated|"
+ "time|timestamp|timings|to|trailing|transaction|trigger|trim|true|"
+ "truncate|type|ucase|unhex|uninstall|unique|unix_timestamp|unknown|"
+ "unlock|update|upper|use|user|using|utf8|value|values|varbinary|"
+ "variables|variance|var_pop|var_samp|verbose|version_comment|view|"
+ "when|where|while|xml|year|yes|"
+ "pragma|"
+ "adddate|addtime|curdate|curtime|date_add|date_sub|date_format|"
+ "datediff|day|dayname|dayofmonth|dayofweek|dayofyear|extract|"
+ "from_days|from_unixtime|get_format|hour|last_day|makedate|maketime|"
+ "microsecond|minute|month|monthname|period_add|period_diff|quarter|"
+ "sec_to_time|second|str_to_date|subdate|subtime|sysdate|timediff|"
+ "time_format|time_to_sec|to_days|utc_date|utc_time|utc_timestamp|"
+ "week|weekday|weekofyear|yearweek|second_microsecond|"
+ "minute_microsecond|minute_second|hour_microsecond|hour_second|"
+ "hour_minute|day_microsecond|day_second|day_minute|day_hour|"
+ "year_month|"
+};
+
+static char const sql_types[] = {
+ "bigint|binary|bit|blob|bool|char|counter|date|datetime|dec|decimal|"
+ "double|fixed|float|int|int16|int24|int32|int48|int64|int8|integer|"
+ "largeint|long|longblob|longtext|mediumblob|mediumint|mediumtext|"
+ "memo|number|numeric|real|smallint|text|tinyblob|tinyint|tinytext|"
+ "uint16|uint24|uint32|uint48|uint64|uint8|ulong|unsigned|varchar|"
+ "varchar2|"
+};
+
static void sql_colorize_line(QEColorizeContext *cp,
unsigned int *str, int n, ModeDef *syn)
{
- int i = 0, start = i, c, style;
+ char keyword[MAX_KEYWORD_SIZE];
+ int i = 0, start = i, c, style, len;
int state = cp->colorize_state;
if (state & IN_SQL_COMMENT)
@@ -1123,13 +1183,39 @@
default:
break;
}
+ /* parse identifiers and keywords */
+ if (qe_isalpha_(c)) {
+ len = 0;
+ keyword[len++] = qe_tolower(c);
+ for (; i < n; i++) {
+ if (qe_isalnum_(str[i])) {
+ if (len < countof(keyword) - 1)
+ keyword[len++] = qe_tolower(str[i]);
+ } else {
+ break;
+ }
+ }
+ keyword[len] = '\0';
+ if (syn && syn->keywords && strfind(syn->keywords, keyword)) {
+ SET_COLOR(str, start, i, SQL_STYLE_KEYWORD);
+ continue;
+ }
+ if (syn && syn->types && strfind(syn->types, keyword)) {
+ SET_COLOR(str, start, i, SQL_STYLE_TYPE);
+ continue;
+ }
+ SET_COLOR(str, start, i, SQL_STYLE_IDENTIFIER);
+ continue;
+ }
}
cp->colorize_state = state;
}
static ModeDef sql_mode = {
.name = "SQL",
- .extensions = "sql|mysql|sqlite|sqlplus",
+ .extensions = "sql|mysql|sqlite|sqlplus|rdb|xdb|db",
+ .keywords = sql_keywords,
+ .types = sql_types,
.colorize_func = sql_colorize_line,
};
Index: archive.c
===================================================================
RCS file: /sources/qemacs/qemacs/archive.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- archive.c 27 May 2014 22:56:39 -0000 1.13
+++ archive.c 30 May 2014 22:12:30 -0000 1.14
@@ -62,6 +62,7 @@
{ "XZ", "xz", "unxz -c $1", "xz > $1" },
{ "BinHex", "hqx", "binhex decode -o /tmp/qe-$$ $1 && "
"cat /tmp/qe-$$ ; rm -f /tmp/qe-$$", NULL },
+ { "sqlite", "xdb|rdb|db", "sqlite3 $1 .dump", NULL },
};
static CompressType *compress_types;
@@ -222,7 +223,7 @@
return 9;
} else {
/* buffer not yet loaded */
- return 60;
+ return 82;
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs extra-modes.c archive.c,
Charlie Gordon <=