mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
	
	
		
			297 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			297 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:     mysql | ||
|  | " Maintainer:   Kenneth J. Pronovici <pronovic@ieee.org> | ||
|  | " Last Change:  $Date$ | ||
|  | " Filenames:    *.mysql | ||
|  | " URL:		ftp://cedar-solutions.com/software/mysql.vim | ||
|  | " Note:		The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 | ||
|  | 
 | ||
|  | " For version 5.x: Clear all syntax items | ||
|  | " For version 6.x: Quit when a syntax file was already loaded | ||
|  | if version < 600 | ||
|  |   syntax clear | ||
|  | elseif exists("b:current_syntax") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | " Always ignore case | ||
|  | syn case ignore | ||
|  | 
 | ||
|  | " General keywords which don't fall into other categories | ||
|  | syn keyword mysqlKeyword	 action add after aggregate all alter as asc auto_increment avg avg_row_length | ||
|  | syn keyword mysqlKeyword	 both by | ||
|  | syn keyword mysqlKeyword	 cascade change character check checksum column columns comment constraint create cross | ||
|  | syn keyword mysqlKeyword	 current_date current_time current_timestamp | ||
|  | syn keyword mysqlKeyword	 data database databases day day_hour day_minute day_second | ||
|  | syn keyword mysqlKeyword	 default delayed delay_key_write delete desc describe distinct distinctrow drop | ||
|  | syn keyword mysqlKeyword	 enclosed escape escaped explain | ||
|  | syn keyword mysqlKeyword	 fields file first flush for foreign from full function | ||
|  | syn keyword mysqlKeyword	 global grant grants group | ||
|  | syn keyword mysqlKeyword	 having heap high_priority hosts hour hour_minute hour_second | ||
|  | syn keyword mysqlKeyword	 identified ignore index infile inner insert insert_id into isam | ||
|  | syn keyword mysqlKeyword	 join | ||
|  | syn keyword mysqlKeyword	 key keys kill last_insert_id leading left limit lines load local lock logs long | ||
|  | syn keyword mysqlKeyword	 low_priority | ||
|  | syn keyword mysqlKeyword	 match max_rows middleint min_rows minute minute_second modify month myisam | ||
|  | syn keyword mysqlKeyword	 natural no | ||
|  | syn keyword mysqlKeyword	 on optimize option optionally order outer outfile | ||
|  | syn keyword mysqlKeyword	 pack_keys partial password primary privileges procedure process processlist | ||
|  | syn keyword mysqlKeyword	 read references reload rename replace restrict returns revoke row rows | ||
|  | syn keyword mysqlKeyword	 second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off | ||
|  | syn keyword mysqlKeyword	 sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting | ||
|  | syn keyword mysqlKeyword	 status straight_join string | ||
|  | syn keyword mysqlKeyword	 table tables temporary terminated to trailing type | ||
|  | syn keyword mysqlKeyword	 unique unlock unsigned update usage use using | ||
|  | syn keyword mysqlKeyword	 values varbinary variables varying | ||
|  | syn keyword mysqlKeyword	 where with write | ||
|  | syn keyword mysqlKeyword	 year_month | ||
|  | syn keyword mysqlKeyword	 zerofill | ||
|  | 
 | ||
|  | " Special values | ||
|  | syn keyword mysqlSpecial	 false null true | ||
|  | 
 | ||
|  | " Strings (single- and double-quote) | ||
|  | syn region mysqlString		 start=+"+  skip=+\\\\\|\\"+  end=+"+ | ||
|  | syn region mysqlString		 start=+'+  skip=+\\\\\|\\'+  end=+'+ | ||
|  | 
 | ||
|  | " Numbers and hexidecimal values | ||
|  | syn match mysqlNumber		 "-\=\<[0-9]*\>" | ||
|  | syn match mysqlNumber		 "-\=\<[0-9]*\.[0-9]*\>" | ||
|  | syn match mysqlNumber		 "-\=\<[0-9]*e[+-]\=[0-9]*\>" | ||
|  | syn match mysqlNumber		 "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" | ||
|  | syn match mysqlNumber		 "\<0x[abcdefABCDEF0-9]*\>" | ||
|  | 
 | ||
|  | " User variables | ||
|  | syn match mysqlVariable		 "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*" | ||
|  | 
 | ||
|  | " Comments (c-style, mysql-style and modified sql-style) | ||
|  | syn region mysqlComment		 start="/\*"  end="\*/" | ||
|  | syn match mysqlComment		 "#.*" | ||
|  | syn match mysqlComment		 "-- .*" | ||
|  | syn sync ccomment mysqlComment | ||
|  | 
 | ||
|  | " Column types | ||
|  | " | ||
|  | " This gets a bit ugly.  There are two different problems we have to | ||
|  | " deal with. | ||
|  | " | ||
|  | " The first problem is that some keywoards like 'float' can be used | ||
|  | " both with and without specifiers, i.e. 'float', 'float(1)' and | ||
|  | " 'float(@var)' are all valid.  We have to account for this and we | ||
|  | " also have to make sure that garbage like floatn or float_(1) is not | ||
|  | " highlighted. | ||
|  | " | ||
|  | " The second problem is that some of these keywords are included in | ||
|  | " function names.  For instance, year() is part of the name of the | ||
|  | " dayofyear() function, and the dec keyword (no parenthesis) is part of | ||
|  | " the name of the decode() function. | ||
|  | 
 | ||
|  | syn keyword mysqlType		 tinyint smallint mediumint int integer bigint | ||
|  | syn keyword mysqlType		 date datetime time bit bool | ||
|  | syn keyword mysqlType		 tinytext mediumtext longtext text | ||
|  | syn keyword mysqlType		 tinyblob mediumblob longblob blob | ||
|  | syn region mysqlType		 start="float\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="float$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="float(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="double\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="double$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="double(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="double precision\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="double precision$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="double precision(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="real\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="real$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="real(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="numeric(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="dec\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="dec$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="dec(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="decimal\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="decimal$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="decimal(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="\Wtimestamp\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="\Wtimestamp$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="^timestamp\W" end="."me=s-1 | ||
|  | syn region mysqlType		 start="^timestamp$" end="."me=s-1 | ||
|  | syn region mysqlType		 start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="^year(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="char(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="varchar(" end=")" contains=mysqlNumber,mysqlVariable | ||
|  | syn region mysqlType		 start="enum(" end=")" contains=mysqlString,mysqlVariable | ||
|  | syn region mysqlType		 start="\Wset(" end=")" contains=mysqlString,mysqlVariable | ||
|  | syn region mysqlType		 start="^set(" end=")" contains=mysqlString,mysqlVariable | ||
|  | 
 | ||
|  | " Logical, string and  numeric operators | ||
|  | syn keyword mysqlOperator	 between not and or is in like regexp rlike binary exists | ||
|  | syn region mysqlOperator	 start="isnull(" end=")" contains=ALL | ||
|  | syn region mysqlOperator	 start="coalesce(" end=")" contains=ALL | ||
|  | syn region mysqlOperator	 start="interval(" end=")" contains=ALL | ||
|  | 
 | ||
|  | " Control flow functions | ||
|  | syn keyword mysqlFlow		 case when then else end | ||
|  | syn region mysqlFlow		 start="ifnull("   end=")"  contains=ALL | ||
|  | syn region mysqlFlow		 start="nullif("   end=")"  contains=ALL | ||
|  | syn region mysqlFlow		 start="if("	   end=")"  contains=ALL | ||
|  | 
 | ||
|  | " General Functions | ||
|  | " | ||
|  | " I'm leery of just defining keywords for functions, since according to the MySQL manual: | ||
|  | " | ||
|  | "     Function names do not clash with table or column names. For example, ABS is a | ||
|  | "     valid column name. The only restriction is that for a function call, no spaces | ||
|  | "     are allowed between the function name and the `(' that follows it. | ||
|  | " | ||
|  | " This means that if I want to highlight function names properly, I have to use a | ||
|  | " region to define them, not just a keyword.  This will probably cause the syntax file | ||
|  | " to load more slowly, but at least it will be 'correct'. | ||
|  | 
 | ||
|  | syn region mysqlFunction	 start="abs(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="acos(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="adddate(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="ascii(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="asin(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="atan(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="atan2(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="benchmark(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="bin(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="bit_and(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="bit_count(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="bit_or(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="ceiling(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="character_length(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="char_length(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="concat(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="concat_ws(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="connection_id(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="conv(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="cos(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="cot(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="count(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="curdate(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="curtime(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="date_add(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="date_format(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="date_sub(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="dayname(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="dayofmonth(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="dayofweek(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="dayofyear(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="decode(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="degrees(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="elt(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="encode(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="encrypt(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="exp(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="export_set(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="extract(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="field(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="find_in_set(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="floor(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="format(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="from_days(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="from_unixtime(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="get_lock(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="greatest(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="group_unique_users(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="hex(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="inet_aton(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="inet_ntoa(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="instr(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="lcase(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="least(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="length(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="load_file(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="locate(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="log(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="log10(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="lower(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="lpad(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="ltrim(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="make_set(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="master_pos_wait(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="max(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="md5(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="mid(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="min(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="mod(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="monthname(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="now(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="oct(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="octet_length(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="ord(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="period_add(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="period_diff(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="pi(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="position(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="pow(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="power(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="quarter(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="radians(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="rand(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="release_lock(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="repeat(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="reverse(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="round(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="rpad(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="rtrim(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sec_to_time(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="session_user(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sign(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sin(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="soundex(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="space(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sqrt(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="std(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="stddev(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="strcmp(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="subdate(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="substring(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="substring_index(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sum(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="sysdate(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="system_user(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="tan(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="time_format(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="time_to_sec(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="to_days(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="trim(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="ucase(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="unique_users(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="unix_timestamp(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="upper(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="user(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="version(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="week(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="weekday(" end=")" contains=ALL | ||
|  | syn region mysqlFunction	 start="yearweek(" end=")" contains=ALL | ||
|  | 
 | ||
|  | " Define the default highlighting. | ||
|  | " For version 5.7 and earlier: only when not done already | ||
|  | " For version 5.8 and later: only when an item doesn't have highlighting yet | ||
|  | if version >= 508 || !exists("did_mysql_syn_inits") | ||
|  |   if version < 508 | ||
|  |     let did_mysql_syn_inits = 1 | ||
|  |     command -nargs=+ HiLink hi link <args> | ||
|  |   else | ||
|  |     command -nargs=+ HiLink hi def link <args> | ||
|  |   endif | ||
|  | 
 | ||
|  |   HiLink mysqlKeyword		 Statement | ||
|  |   HiLink mysqlSpecial		 Special | ||
|  |   HiLink mysqlString		 String | ||
|  |   HiLink mysqlNumber		 Number | ||
|  |   HiLink mysqlVariable		 Identifier | ||
|  |   HiLink mysqlComment		 Comment | ||
|  |   HiLink mysqlType		 Type | ||
|  |   HiLink mysqlOperator		 Statement | ||
|  |   HiLink mysqlFlow		 Statement | ||
|  |   HiLink mysqlFunction		 Function | ||
|  | 
 | ||
|  |   delcommand HiLink | ||
|  | endif | ||
|  | 
 | ||
|  | let b:current_syntax = "mysql" | ||
|  | 
 |