home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / unix / vim-6.2.tar.bz2 / vim-6.2.tar / vim62 / runtime / syntax / mysql.vim < prev    next >
Encoding:
Text File  |  2003-05-11  |  15.7 KB  |  297 lines

  1. " Vim syntax file
  2. " Language:     mysql
  3. " Maintainer:   Kenneth J. Pronovici <pronovic@ieee.org>
  4. " Last Change:  $Date: 2002/04/17 19:19:37 $
  5. " Filenames:    *.mysql
  6. " URL:        ftp://cedar-solutions.com/software/mysql.vim
  7. " Note:        The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
  8.  
  9. " For version 5.x: Clear all syntax items
  10. " For version 6.x: Quit when a syntax file was already loaded
  11. if version < 600
  12.   syntax clear
  13. elseif exists("b:current_syntax")
  14.   finish
  15. endif
  16.  
  17. " Always ignore case
  18. syn case ignore
  19.  
  20. " General keywords which don't fall into other categories
  21. syn keyword mysqlKeyword     action add after aggregate all alter as asc auto_increment avg avg_row_length
  22. syn keyword mysqlKeyword     both by
  23. syn keyword mysqlKeyword     cascade change character check checksum column columns comment constraint create cross
  24. syn keyword mysqlKeyword     current_date current_time current_timestamp
  25. syn keyword mysqlKeyword     data database databases day day_hour day_minute day_second
  26. syn keyword mysqlKeyword     default delayed delay_key_write delete desc describe distinct distinctrow drop
  27. syn keyword mysqlKeyword     enclosed escape escaped explain
  28. syn keyword mysqlKeyword     fields file first flush for foreign from full function
  29. syn keyword mysqlKeyword     global grant grants group
  30. syn keyword mysqlKeyword     having heap high_priority hosts hour hour_minute hour_second
  31. syn keyword mysqlKeyword     identified ignore index infile inner insert insert_id into isam
  32. syn keyword mysqlKeyword     join
  33. syn keyword mysqlKeyword     key keys kill last_insert_id leading left limit lines load local lock logs long
  34. syn keyword mysqlKeyword     low_priority
  35. syn keyword mysqlKeyword     match max_rows middleint min_rows minute minute_second modify month myisam
  36. syn keyword mysqlKeyword     natural no
  37. syn keyword mysqlKeyword     on optimize option optionally order outer outfile
  38. syn keyword mysqlKeyword     pack_keys partial password primary privileges procedure process processlist
  39. syn keyword mysqlKeyword     read references reload rename replace restrict returns revoke row rows
  40. syn keyword mysqlKeyword     second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off
  41. syn keyword mysqlKeyword     sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting
  42. syn keyword mysqlKeyword     status straight_join string
  43. syn keyword mysqlKeyword     table tables temporary terminated to trailing type
  44. syn keyword mysqlKeyword     unique unlock unsigned update usage use using
  45. syn keyword mysqlKeyword     values varbinary variables varying
  46. syn keyword mysqlKeyword     where with write
  47. syn keyword mysqlKeyword     year_month
  48. syn keyword mysqlKeyword     zerofill
  49.  
  50. " Special values
  51. syn keyword mysqlSpecial     false null true
  52.  
  53. " Strings (single- and double-quote)
  54. syn region mysqlString         start=+"+  skip=+\\\\\|\\"+  end=+"+
  55. syn region mysqlString         start=+'+  skip=+\\\\\|\\'+  end=+'+
  56.  
  57. " Numbers and hexidecimal values
  58. syn match mysqlNumber         "-\=\<[0-9]*\>"
  59. syn match mysqlNumber         "-\=\<[0-9]*\.[0-9]*\>"
  60. syn match mysqlNumber         "-\=\<[0-9]*e[+-]\=[0-9]*\>"
  61. syn match mysqlNumber         "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
  62. syn match mysqlNumber         "\<0x[abcdefABCDEF0-9]*\>"
  63.  
  64. " User variables
  65. syn match mysqlVariable         "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*"
  66.  
  67. " Comments (c-style, mysql-style and modified sql-style)
  68. syn region mysqlComment         start="/\*"  end="\*/"
  69. syn match mysqlComment         "#.*"
  70. syn match mysqlComment         "-- .*"
  71. syn sync ccomment mysqlComment
  72.  
  73. " Column types
  74. "
  75. " This gets a bit ugly.  There are two different problems we have to
  76. " deal with.
  77. "
  78. " The first problem is that some keywoards like 'float' can be used
  79. " both with and without specifiers, i.e. 'float', 'float(1)' and
  80. " 'float(@var)' are all valid.  We have to account for this and we
  81. " also have to make sure that garbage like floatn or float_(1) is not
  82. " highlighted.
  83. "
  84. " The second problem is that some of these keywords are included in
  85. " function names.  For instance, year() is part of the name of the
  86. " dayofyear() function, and the dec keyword (no parenthesis) is part of
  87. " the name of the decode() function.
  88.  
  89. syn keyword mysqlType         tinyint smallint mediumint int integer bigint
  90. syn keyword mysqlType         date datetime time bit bool
  91. syn keyword mysqlType         tinytext mediumtext longtext text
  92. syn keyword mysqlType         tinyblob mediumblob longblob blob
  93. syn region mysqlType         start="float\W" end="."me=s-1
  94. syn region mysqlType         start="float$" end="."me=s-1
  95. syn region mysqlType         start="float(" end=")" contains=mysqlNumber,mysqlVariable
  96. syn region mysqlType         start="double\W" end="."me=s-1
  97. syn region mysqlType         start="double$" end="."me=s-1
  98. syn region mysqlType         start="double(" end=")" contains=mysqlNumber,mysqlVariable
  99. syn region mysqlType         start="double precision\W" end="."me=s-1
  100. syn region mysqlType         start="double precision$" end="."me=s-1
  101. syn region mysqlType         start="double precision(" end=")" contains=mysqlNumber,mysqlVariable
  102. syn region mysqlType         start="real\W" end="."me=s-1
  103. syn region mysqlType         start="real$" end="."me=s-1
  104. syn region mysqlType         start="real(" end=")" contains=mysqlNumber,mysqlVariable
  105. syn region mysqlType         start="numeric(" end=")" contains=mysqlNumber,mysqlVariable
  106. syn region mysqlType         start="dec\W" end="."me=s-1
  107. syn region mysqlType         start="dec$" end="."me=s-1
  108. syn region mysqlType         start="dec(" end=")" contains=mysqlNumber,mysqlVariable
  109. syn region mysqlType         start="decimal\W" end="."me=s-1
  110. syn region mysqlType         start="decimal$" end="."me=s-1
  111. syn region mysqlType         start="decimal(" end=")" contains=mysqlNumber,mysqlVariable
  112. syn region mysqlType         start="\Wtimestamp\W" end="."me=s-1
  113. syn region mysqlType         start="\Wtimestamp$" end="."me=s-1
  114. syn region mysqlType         start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable
  115. syn region mysqlType         start="^timestamp\W" end="."me=s-1
  116. syn region mysqlType         start="^timestamp$" end="."me=s-1
  117. syn region mysqlType         start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable
  118. syn region mysqlType         start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable
  119. syn region mysqlType         start="^year(" end=")" contains=mysqlNumber,mysqlVariable
  120. syn region mysqlType         start="char(" end=")" contains=mysqlNumber,mysqlVariable
  121. syn region mysqlType         start="varchar(" end=")" contains=mysqlNumber,mysqlVariable
  122. syn region mysqlType         start="enum(" end=")" contains=mysqlString,mysqlVariable
  123. syn region mysqlType         start="\Wset(" end=")" contains=mysqlString,mysqlVariable
  124. syn region mysqlType         start="^set(" end=")" contains=mysqlString,mysqlVariable
  125.  
  126. " Logical, string and  numeric operators
  127. syn keyword mysqlOperator     between not and or is in like regexp rlike binary exists
  128. syn region mysqlOperator     start="isnull(" end=")" contains=ALL
  129. syn region mysqlOperator     start="coalesce(" end=")" contains=ALL
  130. syn region mysqlOperator     start="interval(" end=")" contains=ALL
  131.  
  132. " Control flow functions
  133. syn keyword mysqlFlow         case when then else end
  134. syn region mysqlFlow         start="ifnull("   end=")"  contains=ALL
  135. syn region mysqlFlow         start="nullif("   end=")"  contains=ALL
  136. syn region mysqlFlow         start="if("       end=")"  contains=ALL
  137.  
  138. " General Functions
  139. "
  140. " I'm leery of just defining keywords for functions, since according to the MySQL manual:
  141. "
  142. "     Function names do not clash with table or column names. For example, ABS is a
  143. "     valid column name. The only restriction is that for a function call, no spaces
  144. "     are allowed between the function name and the `(' that follows it.
  145. "
  146. " This means that if I want to highlight function names properly, I have to use a
  147. " region to define them, not just a keyword.  This will probably cause the syntax file
  148. " to load more slowly, but at least it will be 'correct'.
  149.  
  150. syn region mysqlFunction     start="abs(" end=")" contains=ALL
  151. syn region mysqlFunction     start="acos(" end=")" contains=ALL
  152. syn region mysqlFunction     start="adddate(" end=")" contains=ALL
  153. syn region mysqlFunction     start="ascii(" end=")" contains=ALL
  154. syn region mysqlFunction     start="asin(" end=")" contains=ALL
  155. syn region mysqlFunction     start="atan(" end=")" contains=ALL
  156. syn region mysqlFunction     start="atan2(" end=")" contains=ALL
  157. syn region mysqlFunction     start="benchmark(" end=")" contains=ALL
  158. syn region mysqlFunction     start="bin(" end=")" contains=ALL
  159. syn region mysqlFunction     start="bit_and(" end=")" contains=ALL
  160. syn region mysqlFunction     start="bit_count(" end=")" contains=ALL
  161. syn region mysqlFunction     start="bit_or(" end=")" contains=ALL
  162. syn region mysqlFunction     start="ceiling(" end=")" contains=ALL
  163. syn region mysqlFunction     start="character_length(" end=")" contains=ALL
  164. syn region mysqlFunction     start="char_length(" end=")" contains=ALL
  165. syn region mysqlFunction     start="concat(" end=")" contains=ALL
  166. syn region mysqlFunction     start="concat_ws(" end=")" contains=ALL
  167. syn region mysqlFunction     start="connection_id(" end=")" contains=ALL
  168. syn region mysqlFunction     start="conv(" end=")" contains=ALL
  169. syn region mysqlFunction     start="cos(" end=")" contains=ALL
  170. syn region mysqlFunction     start="cot(" end=")" contains=ALL
  171. syn region mysqlFunction     start="count(" end=")" contains=ALL
  172. syn region mysqlFunction     start="curdate(" end=")" contains=ALL
  173. syn region mysqlFunction     start="curtime(" end=")" contains=ALL
  174. syn region mysqlFunction     start="date_add(" end=")" contains=ALL
  175. syn region mysqlFunction     start="date_format(" end=")" contains=ALL
  176. syn region mysqlFunction     start="date_sub(" end=")" contains=ALL
  177. syn region mysqlFunction     start="dayname(" end=")" contains=ALL
  178. syn region mysqlFunction     start="dayofmonth(" end=")" contains=ALL
  179. syn region mysqlFunction     start="dayofweek(" end=")" contains=ALL
  180. syn region mysqlFunction     start="dayofyear(" end=")" contains=ALL
  181. syn region mysqlFunction     start="decode(" end=")" contains=ALL
  182. syn region mysqlFunction     start="degrees(" end=")" contains=ALL
  183. syn region mysqlFunction     start="elt(" end=")" contains=ALL
  184. syn region mysqlFunction     start="encode(" end=")" contains=ALL
  185. syn region mysqlFunction     start="encrypt(" end=")" contains=ALL
  186. syn region mysqlFunction     start="exp(" end=")" contains=ALL
  187. syn region mysqlFunction     start="export_set(" end=")" contains=ALL
  188. syn region mysqlFunction     start="extract(" end=")" contains=ALL
  189. syn region mysqlFunction     start="field(" end=")" contains=ALL
  190. syn region mysqlFunction     start="find_in_set(" end=")" contains=ALL
  191. syn region mysqlFunction     start="floor(" end=")" contains=ALL
  192. syn region mysqlFunction     start="format(" end=")" contains=ALL
  193. syn region mysqlFunction     start="from_days(" end=")" contains=ALL
  194. syn region mysqlFunction     start="from_unixtime(" end=")" contains=ALL
  195. syn region mysqlFunction     start="get_lock(" end=")" contains=ALL
  196. syn region mysqlFunction     start="greatest(" end=")" contains=ALL
  197. syn region mysqlFunction     start="group_unique_users(" end=")" contains=ALL
  198. syn region mysqlFunction     start="hex(" end=")" contains=ALL
  199. syn region mysqlFunction     start="inet_aton(" end=")" contains=ALL
  200. syn region mysqlFunction     start="inet_ntoa(" end=")" contains=ALL
  201. syn region mysqlFunction     start="instr(" end=")" contains=ALL
  202. syn region mysqlFunction     start="lcase(" end=")" contains=ALL
  203. syn region mysqlFunction     start="least(" end=")" contains=ALL
  204. syn region mysqlFunction     start="length(" end=")" contains=ALL
  205. syn region mysqlFunction     start="load_file(" end=")" contains=ALL
  206. syn region mysqlFunction     start="locate(" end=")" contains=ALL
  207. syn region mysqlFunction     start="log(" end=")" contains=ALL
  208. syn region mysqlFunction     start="log10(" end=")" contains=ALL
  209. syn region mysqlFunction     start="lower(" end=")" contains=ALL
  210. syn region mysqlFunction     start="lpad(" end=")" contains=ALL
  211. syn region mysqlFunction     start="ltrim(" end=")" contains=ALL
  212. syn region mysqlFunction     start="make_set(" end=")" contains=ALL
  213. syn region mysqlFunction     start="master_pos_wait(" end=")" contains=ALL
  214. syn region mysqlFunction     start="max(" end=")" contains=ALL
  215. syn region mysqlFunction     start="md5(" end=")" contains=ALL
  216. syn region mysqlFunction     start="mid(" end=")" contains=ALL
  217. syn region mysqlFunction     start="min(" end=")" contains=ALL
  218. syn region mysqlFunction     start="mod(" end=")" contains=ALL
  219. syn region mysqlFunction     start="monthname(" end=")" contains=ALL
  220. syn region mysqlFunction     start="now(" end=")" contains=ALL
  221. syn region mysqlFunction     start="oct(" end=")" contains=ALL
  222. syn region mysqlFunction     start="octet_length(" end=")" contains=ALL
  223. syn region mysqlFunction     start="ord(" end=")" contains=ALL
  224. syn region mysqlFunction     start="period_add(" end=")" contains=ALL
  225. syn region mysqlFunction     start="period_diff(" end=")" contains=ALL
  226. syn region mysqlFunction     start="pi(" end=")" contains=ALL
  227. syn region mysqlFunction     start="position(" end=")" contains=ALL
  228. syn region mysqlFunction     start="pow(" end=")" contains=ALL
  229. syn region mysqlFunction     start="power(" end=")" contains=ALL
  230. syn region mysqlFunction     start="quarter(" end=")" contains=ALL
  231. syn region mysqlFunction     start="radians(" end=")" contains=ALL
  232. syn region mysqlFunction     start="rand(" end=")" contains=ALL
  233. syn region mysqlFunction     start="release_lock(" end=")" contains=ALL
  234. syn region mysqlFunction     start="repeat(" end=")" contains=ALL
  235. syn region mysqlFunction     start="reverse(" end=")" contains=ALL
  236. syn region mysqlFunction     start="round(" end=")" contains=ALL
  237. syn region mysqlFunction     start="rpad(" end=")" contains=ALL
  238. syn region mysqlFunction     start="rtrim(" end=")" contains=ALL
  239. syn region mysqlFunction     start="sec_to_time(" end=")" contains=ALL
  240. syn region mysqlFunction     start="session_user(" end=")" contains=ALL
  241. syn region mysqlFunction     start="sign(" end=")" contains=ALL
  242. syn region mysqlFunction     start="sin(" end=")" contains=ALL
  243. syn region mysqlFunction     start="soundex(" end=")" contains=ALL
  244. syn region mysqlFunction     start="space(" end=")" contains=ALL
  245. syn region mysqlFunction     start="sqrt(" end=")" contains=ALL
  246. syn region mysqlFunction     start="std(" end=")" contains=ALL
  247. syn region mysqlFunction     start="stddev(" end=")" contains=ALL
  248. syn region mysqlFunction     start="strcmp(" end=")" contains=ALL
  249. syn region mysqlFunction     start="subdate(" end=")" contains=ALL
  250. syn region mysqlFunction     start="substring(" end=")" contains=ALL
  251. syn region mysqlFunction     start="substring_index(" end=")" contains=ALL
  252. syn region mysqlFunction     start="sum(" end=")" contains=ALL
  253. syn region mysqlFunction     start="sysdate(" end=")" contains=ALL
  254. syn region mysqlFunction     start="system_user(" end=")" contains=ALL
  255. syn region mysqlFunction     start="tan(" end=")" contains=ALL
  256. syn region mysqlFunction     start="time_format(" end=")" contains=ALL
  257. syn region mysqlFunction     start="time_to_sec(" end=")" contains=ALL
  258. syn region mysqlFunction     start="to_days(" end=")" contains=ALL
  259. syn region mysqlFunction     start="trim(" end=")" contains=ALL
  260. syn region mysqlFunction     start="ucase(" end=")" contains=ALL
  261. syn region mysqlFunction     start="unique_users(" end=")" contains=ALL
  262. syn region mysqlFunction     start="unix_timestamp(" end=")" contains=ALL
  263. syn region mysqlFunction     start="upper(" end=")" contains=ALL
  264. syn region mysqlFunction     start="user(" end=")" contains=ALL
  265. syn region mysqlFunction     start="version(" end=")" contains=ALL
  266. syn region mysqlFunction     start="week(" end=")" contains=ALL
  267. syn region mysqlFunction     start="weekday(" end=")" contains=ALL
  268. syn region mysqlFunction     start="yearweek(" end=")" contains=ALL
  269.  
  270. " Define the default highlighting.
  271. " For version 5.7 and earlier: only when not done already
  272. " For version 5.8 and later: only when an item doesn't have highlighting yet
  273. if version >= 508 || !exists("did_mysql_syn_inits")
  274.   if version < 508
  275.     let did_mysql_syn_inits = 1
  276.     command -nargs=+ HiLink hi link <args>
  277.   else
  278.     command -nargs=+ HiLink hi def link <args>
  279.   endif
  280.  
  281.   HiLink mysqlKeyword         Statement
  282.   HiLink mysqlSpecial         Special
  283.   HiLink mysqlString         String
  284.   HiLink mysqlNumber         Number
  285.   HiLink mysqlVariable         Identifier
  286.   HiLink mysqlComment         Comment
  287.   HiLink mysqlType         Type
  288.   HiLink mysqlOperator         Statement
  289.   HiLink mysqlFlow         Statement
  290.   HiLink mysqlFunction         Function
  291.  
  292.   delcommand HiLink
  293. endif
  294.  
  295. let b:current_syntax = "mysql"
  296.  
  297.