diff runtime/syntax/mysql.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children e170173ecb68
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/mysql.vim	Sat Nov 10 15:07:22 2007 +0900
@@ -0,0 +1,297 @@
+" 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="subtime(" 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"
+