mzsql.tmLanguage.json 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. {
  2. "information_for_contributors": [
  3. "This file has been converted from https://github.com/Microsoft/vscode-mssql/blob/master/syntaxes/SQL.plist",
  4. "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  5. "Once accepted there, we are happy to receive an update request."
  6. ],
  7. "name": "Materialize SQL",
  8. "scopeName": "source.mzsql",
  9. "patterns": [
  10. {
  11. "match": "((?<!@)@)\\b(\\w+)\\b",
  12. "name": "text.variable"
  13. },
  14. {
  15. "match": "(\\[)[^\\]]*(\\])",
  16. "name": "text.bracketed"
  17. },
  18. {
  19. "include": "#comments"
  20. },
  21. {
  22. "captures": {
  23. "1": {
  24. "name": "keyword.other.create.sql"
  25. },
  26. "2": {
  27. "name": "keyword.other.sql"
  28. },
  29. "5": {
  30. "name": "entity.name.function.sql"
  31. }
  32. },
  33. "match": "(?i:\\s*(create(?:\\s+or\\s+replace)?)\\s+(aggregate|conversion|database|domain|function|group|(unique\\s+)?index|language|operator class|operator|rule|schema|sequence|sink|source|table|tablespace|trigger|type|user|(?:materialized\\s+)?view)\\s+)(['\"`]?)(\\w+)\\4",
  34. "name": "meta.create.sql"
  35. },
  36. {
  37. "captures": {
  38. "1": {
  39. "name": "keyword.other.create.sql"
  40. },
  41. "2": {
  42. "name": "keyword.other.sql"
  43. }
  44. },
  45. "match": "(?i:\\s*(drop)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))",
  46. "name": "meta.drop.sql"
  47. },
  48. {
  49. "captures": {
  50. "1": {
  51. "name": "keyword.other.create.sql"
  52. },
  53. "2": {
  54. "name": "keyword.other.table.sql"
  55. },
  56. "3": {
  57. "name": "entity.name.function.sql"
  58. },
  59. "4": {
  60. "name": "keyword.other.cascade.sql"
  61. }
  62. },
  63. "match": "(?i:\\s*(drop)\\s+(table)\\s+(\\w+)(\\s+cascade)?\\b)",
  64. "name": "meta.drop.sql"
  65. },
  66. {
  67. "captures": {
  68. "1": {
  69. "name": "keyword.other.create.sql"
  70. },
  71. "2": {
  72. "name": "keyword.other.table.sql"
  73. }
  74. },
  75. "match": "(?i:\\s*(alter)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\s+)",
  76. "name": "meta.alter.sql"
  77. },
  78. {
  79. "captures": {
  80. "1": {
  81. "name": "storage.type.sql"
  82. },
  83. "2": {
  84. "name": "storage.type.sql"
  85. },
  86. "3": {
  87. "name": "constant.numeric.sql"
  88. },
  89. "4": {
  90. "name": "storage.type.sql"
  91. },
  92. "5": {
  93. "name": "constant.numeric.sql"
  94. },
  95. "6": {
  96. "name": "storage.type.sql"
  97. },
  98. "7": {
  99. "name": "constant.numeric.sql"
  100. },
  101. "8": {
  102. "name": "constant.numeric.sql"
  103. },
  104. "9": {
  105. "name": "storage.type.sql"
  106. },
  107. "10": {
  108. "name": "constant.numeric.sql"
  109. },
  110. "11": {
  111. "name": "storage.type.sql"
  112. },
  113. "12": {
  114. "name": "storage.type.sql"
  115. },
  116. "13": {
  117. "name": "storage.type.sql"
  118. },
  119. "14": {
  120. "name": "constant.numeric.sql"
  121. },
  122. "15": {
  123. "name": "storage.type.sql"
  124. }
  125. },
  126. "match": "(?xi)\n\n\t\t\t\t# normal stuff, capture 1\n\t\t\t\t \\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\b\n\n\t\t\t\t# numeric suffix, capture 2 + 3i\n\t\t\t\t|\\b(bit\\svarying|character\\s(?:varying)?|tinyint|var\\schar|float|interval)\\((\\d+)\\)\n\n\t\t\t\t# optional numeric suffix, capture 4 + 5i\n\t\t\t\t|\\b(char|number|varchar\\d?)\\b(?:\\((\\d+)\\))?\n\n\t\t\t\t# special case, capture 6 + 7i + 8i\n\t\t\t\t|\\b(numeric|decimal)\\b(?:\\((\\d+),(\\d+)\\))?\n\n\t\t\t\t# special case, captures 9, 10i, 11\n\t\t\t\t|\\b(times?)\\b(?:\\((\\d+)\\))?(\\swith(?:out)?\\stime\\szone\\b)?\n\n\t\t\t\t# special case, captures 12, 13, 14i, 15\n\t\t\t\t|\\b(timestamp)(?:(s|tz))?\\b(?:\\((\\d+)\\))?(\\s(with|without)\\stime\\szone\\b)?\n\n\t\t\t"
  127. },
  128. {
  129. "match": "(?i:\\b(select(\\s+distinct)?|insert\\s+(ignore\\s+)?into|update|delete|peek|tail|from|set|where|group\\sby|order\\sby|or|like|and|union(\\s+all)?|having|limit|(inner|cross)\\s+join|join|straight_join|full\\s+outer\\s+join|(left|right)(\\s+outer)?\\s+join|natural(\\s+(left|right)(\\s+outer)?)?\\s+join|show(\\s+(columns|keys|sources|all))?)\\b)",
  130. "name": "keyword.other.DML.sql"
  131. },
  132. {
  133. "match": "(?i:\\b(on|off|((is\\s+)?not\\s+)?null)\\b)",
  134. "name": "keyword.other.DDL.create.II.sql"
  135. },
  136. {
  137. "match": "(?i:\\bvalues\\b)",
  138. "name": "keyword.other.DML.II.sql"
  139. },
  140. {
  141. "match": "(?i:\\b(begin(\\s+work)?|start\\s+transaction|commit(\\s+work)?|rollback(\\s+work)?)\\b)",
  142. "name": "keyword.other.LUW.sql"
  143. },
  144. {
  145. "match": "\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blocksize|bmk|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|cast|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|close|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\s+or\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare(\\s+cursor)?|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|schema|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|waitfor|webmethod|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\\b",
  146. "name": "keyword.other.sql"
  147. },
  148. {
  149. "match": "(?i:\\b((?:primary|foreign)\\s+key|references|on\\sdelete(\\s+cascade)?|check|constraint)\\b)",
  150. "name": "storage.modifier.sql"
  151. },
  152. {
  153. "match": "\\b\\d+\\b",
  154. "name": "constant.numeric.sql"
  155. },
  156. {
  157. "match": "(?i:\\b(grant(\\swith\\sgrant\\soption)?|revoke)\\b)",
  158. "name": "keyword.other.authorization.sql"
  159. },
  160. {
  161. "match": "(?i:\\bin\\b)",
  162. "name": "keyword.other.data-integrity.sql"
  163. },
  164. {
  165. "match": "(?i:\\s*(comment\\s+on\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\s+.*?\\s+(is)\\s+)",
  166. "name": "keyword.other.object-comments.sql"
  167. },
  168. {
  169. "match": "(?i)\\bAS\\b",
  170. "name": "keyword.other.alias.sql"
  171. },
  172. {
  173. "match": "(?i)\\b(DESC|ASC)\\b",
  174. "name": "keyword.other.order.sql"
  175. },
  176. {
  177. "match": "\\*",
  178. "name": "keyword.operator.star.sql"
  179. },
  180. {
  181. "match": "[!<>]?=|<>|<|>",
  182. "name": "keyword.operator.comparison.sql"
  183. },
  184. {
  185. "match": "-|\\+|/",
  186. "name": "keyword.operator.math.sql"
  187. },
  188. {
  189. "match": "\\|\\|",
  190. "name": "keyword.operator.concatenator.sql"
  191. },
  192. {
  193. "match": "(?i)\\b(avg|checksum_agg|count|count_big|grouping|grouping_id|max|min|sum|stdev|stdevp|var|varp)\\b",
  194. "name": "support.function.aggregate.sql"
  195. },
  196. {
  197. "match": "(?i)\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\b",
  198. "name": "support.function.conversion.sql"
  199. },
  200. {
  201. "match": "(?i)\\b(cursor_status)\\b",
  202. "name": "support.function.cursor.sql"
  203. },
  204. {
  205. "match": "(?i)\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|eomonth|switchoffset|todatetimeoffset|isdate)\\b",
  206. "name": "support.function.datetime.sql"
  207. },
  208. {
  209. "match": "(?i)\\b(coalesce|nullif)\\b",
  210. "name": "support.function.expression.sql"
  211. },
  212. {
  213. "match": "(?<!@)@@(?i)\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\b",
  214. "name": "support.function.globalvar.sql"
  215. },
  216. {
  217. "match": "(?i)\\b(choose|iif)\\b",
  218. "name": "support.function.logical.sql"
  219. },
  220. {
  221. "match": "(?i)\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\b",
  222. "name": "support.function.mathematical.sql"
  223. },
  224. {
  225. "match": "(?i)\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\b",
  226. "name": "support.function.metadata.sql"
  227. },
  228. {
  229. "match": "(?i)\\b(rank|dense_rank|ntile|row_number)\\b",
  230. "name": "support.function.ranking.sql"
  231. },
  232. {
  233. "match": "(?i)\\b(opendatasource|openrowset|openquery|openxml)\\b",
  234. "name": "support.function.rowset.sql"
  235. },
  236. {
  237. "match": "(?i)\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\b",
  238. "name": "support.function.security.sql"
  239. },
  240. {
  241. "match": "(?i)\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|patindex|quotename|replace|replicate|reverse|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\b",
  242. "name": "support.function.string.sql"
  243. },
  244. {
  245. "match": "(?i)\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\b",
  246. "name": "support.function.system.sql"
  247. },
  248. {
  249. "match": "(?i)\\b(patindex|textptr|textvalid)\\b",
  250. "name": "support.function.textimage.sql"
  251. },
  252. {
  253. "captures": {
  254. "1": {
  255. "name": "constant.other.database-name.sql"
  256. },
  257. "2": {
  258. "name": "constant.other.table-name.sql"
  259. }
  260. },
  261. "match": "(\\w+?)\\.(\\w+)"
  262. },
  263. {
  264. "include": "#strings"
  265. },
  266. {
  267. "include": "#regexps"
  268. },
  269. {
  270. "captures": {
  271. "1": {
  272. "name": "punctuation.section.scope.begin.sql"
  273. },
  274. "2": {
  275. "name": "punctuation.section.scope.end.sql"
  276. }
  277. },
  278. "comment": "Allow for special ↩ behavior",
  279. "match": "(\\()(\\))",
  280. "name": "meta.block.sql"
  281. }
  282. ],
  283. "repository": {
  284. "comments": {
  285. "patterns": [
  286. {
  287. "begin": "(^[ \\t]+)?(?=--)",
  288. "beginCaptures": {
  289. "1": {
  290. "name": "punctuation.whitespace.comment.leading.sql"
  291. }
  292. },
  293. "end": "(?!\\G)",
  294. "patterns": [
  295. {
  296. "begin": "--",
  297. "beginCaptures": {
  298. "0": {
  299. "name": "punctuation.definition.comment.sql"
  300. }
  301. },
  302. "end": "\\n",
  303. "name": "comment.line.double-dash.sql"
  304. }
  305. ]
  306. },
  307. {
  308. "begin": "(^[ \\t]+)?(?=#)",
  309. "beginCaptures": {
  310. "1": {
  311. "name": "punctuation.whitespace.comment.leading.sql"
  312. }
  313. },
  314. "end": "(?!\\G)",
  315. "patterns": []
  316. },
  317. {
  318. "begin": "/\\*",
  319. "captures": {
  320. "0": {
  321. "name": "punctuation.definition.comment.sql"
  322. }
  323. },
  324. "end": "\\*/",
  325. "name": "comment.block.c"
  326. }
  327. ]
  328. },
  329. "regexps": {
  330. "patterns": [
  331. {
  332. "begin": "/(?=\\S.*/)",
  333. "beginCaptures": {
  334. "0": {
  335. "name": "punctuation.definition.string.begin.sql"
  336. }
  337. },
  338. "end": "/",
  339. "endCaptures": {
  340. "0": {
  341. "name": "punctuation.definition.string.end.sql"
  342. }
  343. },
  344. "name": "string.regexp.sql",
  345. "patterns": [
  346. {
  347. "include": "#string_interpolation"
  348. },
  349. {
  350. "match": "\\\\/",
  351. "name": "constant.character.escape.slash.sql"
  352. }
  353. ]
  354. },
  355. {
  356. "begin": "%r\\{",
  357. "beginCaptures": {
  358. "0": {
  359. "name": "punctuation.definition.string.begin.sql"
  360. }
  361. },
  362. "comment": "We should probably handle nested bracket pairs!?! -- Allan",
  363. "end": "\\}",
  364. "endCaptures": {
  365. "0": {
  366. "name": "punctuation.definition.string.end.sql"
  367. }
  368. },
  369. "name": "string.regexp.modr.sql",
  370. "patterns": [
  371. {
  372. "include": "#string_interpolation"
  373. }
  374. ]
  375. }
  376. ]
  377. },
  378. "string_escape": {
  379. "match": "\\\\.",
  380. "name": "constant.character.escape.sql"
  381. },
  382. "string_interpolation": {
  383. "captures": {
  384. "1": {
  385. "name": "punctuation.definition.string.begin.sql"
  386. },
  387. "3": {
  388. "name": "punctuation.definition.string.end.sql"
  389. }
  390. },
  391. "match": "(#\\{)([^\\}]*)(\\})",
  392. "name": "string.interpolated.sql"
  393. },
  394. "strings": {
  395. "patterns": [
  396. {
  397. "begin": "'",
  398. "beginCaptures": {
  399. "0": {
  400. "name": "punctuation.definition.string.begin.sql"
  401. }
  402. },
  403. "end": "'",
  404. "endCaptures": {
  405. "0": {
  406. "name": "punctuation.definition.string.end.sql"
  407. }
  408. },
  409. "name": "string.quoted.single.sql",
  410. "patterns": [
  411. {
  412. "include": "#string_escape"
  413. }
  414. ]
  415. },
  416. {
  417. "begin": "`",
  418. "beginCaptures": {
  419. "0": {
  420. "name": "punctuation.definition.string.begin.sql"
  421. }
  422. },
  423. "end": "`",
  424. "endCaptures": {
  425. "0": {
  426. "name": "punctuation.definition.string.end.sql"
  427. }
  428. },
  429. "name": "string.quoted.other.backtick.sql",
  430. "patterns": [
  431. {
  432. "include": "#string_escape"
  433. }
  434. ]
  435. },
  436. {
  437. "begin": "\"",
  438. "beginCaptures": {
  439. "0": {
  440. "name": "punctuation.definition.string.begin.sql"
  441. }
  442. },
  443. "end": "\"",
  444. "endCaptures": {
  445. "0": {
  446. "name": "punctuation.definition.string.end.sql"
  447. }
  448. },
  449. "name": "string.quoted.double.sql",
  450. "patterns": [
  451. {
  452. "include": "#string_interpolation"
  453. }
  454. ]
  455. },
  456. {
  457. "begin": "%\\{",
  458. "beginCaptures": {
  459. "0": {
  460. "name": "punctuation.definition.string.begin.sql"
  461. }
  462. },
  463. "end": "\\}",
  464. "endCaptures": {
  465. "0": {
  466. "name": "punctuation.definition.string.end.sql"
  467. }
  468. },
  469. "name": "string.other.quoted.brackets.sql",
  470. "patterns": [
  471. {
  472. "include": "#string_interpolation"
  473. }
  474. ]
  475. }
  476. ]
  477. }
  478. }
  479. }