1" Vim syntax file
2" Language:    N1QL / Couchbase Server
3" Maintainer:  Eugene Ciurana <n1ql AT cime.net>
4" Version:     1.0
5" Source:      https://github.com/pr3d4t0r/n1ql-vim-syntax
6"
7" License:     Vim is Charityware.  n1ql.vim syntax is Charityware.
8"              (c) Copyright 2017 by Eugene Ciurana / pr3d4t0r.  Licensed
9"              under the standard VIM LICENSE - Vim command :help uganda.txt
10"              for details.
11"
12" Questions, comments:  <n1ql AT cime.net>
13"                       https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
14"
15" vim: set fileencoding=utf-8:
16
17
18if exists("b:current_syntax")
19  finish
20endif
21
22
23syn case ignore
24
25syn keyword n1qlSpecial DATASTORES
26syn keyword n1qlSpecial DUAL
27syn keyword n1qlSpecial FALSE
28syn keyword n1qlSpecial INDEXES
29syn keyword n1qlSpecial KEYSPACES
30syn keyword n1qlSpecial MISSING
31syn keyword n1qlSpecial NAMESPACES
32syn keyword n1qlSpecial NULL
33syn keyword n1qlSpecial TRUE
34
35
36"
37" *** keywords ***
38"
39syn keyword n1qlKeyword ALL
40syn keyword n1qlKeyword ANY
41syn keyword n1qlKeyword ASC
42syn keyword n1qlKeyword BEGIN
43syn keyword n1qlKeyword BETWEEN
44syn keyword n1qlKeyword BREAK
45syn keyword n1qlKeyword BUCKET
46syn keyword n1qlKeyword CALL
47syn keyword n1qlKeyword CASE
48syn keyword n1qlKeyword CAST
49syn keyword n1qlKeyword CLUSTER
50syn keyword n1qlKeyword COLLATE
51syn keyword n1qlKeyword COLLECTION
52syn keyword n1qlKeyword CONNECT
53syn keyword n1qlKeyword CONTINUE
54syn keyword n1qlKeyword CORRELATE
55syn keyword n1qlKeyword COVER
56syn keyword n1qlKeyword DATABASE
57syn keyword n1qlKeyword DATASET
58syn keyword n1qlKeyword DATASTORE
59syn keyword n1qlKeyword DECLARE
60syn keyword n1qlKeyword DECREMENT
61syn keyword n1qlKeyword DERIVED
62syn keyword n1qlKeyword DESC
63syn keyword n1qlKeyword DESCRIBE
64syn keyword n1qlKeyword DO
65syn keyword n1qlKeyword EACH
66syn keyword n1qlKeyword ELEMENT
67syn keyword n1qlKeyword ELSE
68syn keyword n1qlKeyword END
69syn keyword n1qlKeyword EVERY
70syn keyword n1qlKeyword EXCLUDE
71syn keyword n1qlKeyword EXISTS
72syn keyword n1qlKeyword FETCH
73syn keyword n1qlKeyword FIRST
74syn keyword n1qlKeyword FLATTEN
75syn keyword n1qlKeyword FOR
76syn keyword n1qlKeyword FORCE
77syn keyword n1qlKeyword FROM
78syn keyword n1qlKeyword FUNCTION
79syn keyword n1qlKeyword GROUP
80syn keyword n1qlKeyword GSI
81syn keyword n1qlKeyword HAVING
82syn keyword n1qlKeyword IF
83syn keyword n1qlKeyword IGNORE
84syn keyword n1qlKeyword INCLUDE
85syn keyword n1qlKeyword INCREMENT
86syn keyword n1qlKeyword INDEX
87syn keyword n1qlKeyword INITIAL
88syn keyword n1qlKeyword INLINE
89syn keyword n1qlKeyword INNER
90syn keyword n1qlKeyword INTO
91syn keyword n1qlKeyword KEY
92syn keyword n1qlKeyword KEYS
93syn keyword n1qlKeyword KEYSPACE
94syn keyword n1qlKeyword KNOWN
95syn keyword n1qlKeyword LAST
96syn keyword n1qlKeyword LET
97syn keyword n1qlKeyword LETTING
98syn keyword n1qlKeyword LIMIT
99syn keyword n1qlKeyword LOOP
100syn keyword n1qlKeyword LSM
101syn keyword n1qlKeyword MAP
102syn keyword n1qlKeyword MAPPING
103syn keyword n1qlKeyword MATCHED
104syn keyword n1qlKeyword MATERIALIZED
105syn keyword n1qlKeyword MERGE
106syn keyword n1qlKeyword NAMESPACE
107syn keyword n1qlKeyword NEST
108syn keyword n1qlKeyword OPTION
109syn keyword n1qlKeyword ORDER
110syn keyword n1qlKeyword OUTER
111syn keyword n1qlKeyword OVER
112syn keyword n1qlKeyword PARSE
113syn keyword n1qlKeyword PARTITION
114syn keyword n1qlKeyword PASSWORD
115syn keyword n1qlKeyword PATH
116syn keyword n1qlKeyword POOL
117syn keyword n1qlKeyword PRIMARY
118syn keyword n1qlKeyword PRIVATE
119syn keyword n1qlKeyword PRIVILEGE
120syn keyword n1qlKeyword PROCEDURE
121syn keyword n1qlKeyword PUBLIC
122syn keyword n1qlKeyword REALM
123syn keyword n1qlKeyword REDUCE
124syn keyword n1qlKeyword RETURN
125syn keyword n1qlKeyword RETURNING
126syn keyword n1qlKeyword ROLE
127syn keyword n1qlKeyword SATISFIES
128syn keyword n1qlKeyword SCHEMA
129syn keyword n1qlKeyword SELF
130syn keyword n1qlKeyword SEMI
131syn keyword n1qlKeyword SHOW
132syn keyword n1qlKeyword START
133syn keyword n1qlKeyword STATISTICS
134syn keyword n1qlKeyword SYSTEM
135syn keyword n1qlKeyword THEN
136syn keyword n1qlKeyword TRANSACTION
137syn keyword n1qlKeyword TRIGGER
138syn keyword n1qlKeyword UNDER
139syn keyword n1qlKeyword UNKNOWN
140syn keyword n1qlKeyword UNSET
141syn keyword n1qlKeyword USE
142syn keyword n1qlKeyword USER
143syn keyword n1qlKeyword USING
144syn keyword n1qlKeyword VALIDATE
145syn keyword n1qlKeyword VALUE
146syn keyword n1qlKeyword VALUED
147syn keyword n1qlKeyword VALUES
148syn keyword n1qlKeyword VIEW
149syn keyword n1qlKeyword WHEN
150syn keyword n1qlKeyword WHERE
151syn keyword n1qlKeyword WHILE
152syn keyword n1qlKeyword WITHIN
153syn keyword n1qlKeyword WORK
154
155
156"
157" *** functions ***
158"
159syn keyword n1qlOperator ABS
160syn keyword n1qlOperator ACOS
161syn keyword n1qlOperator ARRAY_AGG
162syn keyword n1qlOperator ARRAY_APPEND
163syn keyword n1qlOperator ARRAY_AVG
164syn keyword n1qlOperator ARRAY_CONCAT
165syn keyword n1qlOperator ARRAY_CONTAINS
166syn keyword n1qlOperator ARRAY_COUNT
167syn keyword n1qlOperator ARRAY_DISTINCT
168syn keyword n1qlOperator ARRAY_FLATTEN
169syn keyword n1qlOperator ARRAY_IFNULL
170syn keyword n1qlOperator ARRAY_INSERT
171syn keyword n1qlOperator ARRAY_INTERSECT
172syn keyword n1qlOperator ARRAY_LENGTH
173syn keyword n1qlOperator ARRAY_MAX
174syn keyword n1qlOperator ARRAY_MIN
175syn keyword n1qlOperator ARRAY_POSITION
176syn keyword n1qlOperator ARRAY_PREPEND
177syn keyword n1qlOperator ARRAY_PUT
178syn keyword n1qlOperator ARRAY_RANGE
179syn keyword n1qlOperator ARRAY_REMOVE
180syn keyword n1qlOperator ARRAY_REPEAT
181syn keyword n1qlOperator ARRAY_REPLACE
182syn keyword n1qlOperator ARRAY_REVERSE
183syn keyword n1qlOperator ARRAY_SORT
184syn keyword n1qlOperator ARRAY_START
185syn keyword n1qlOperator ARRAY_SUM
186syn keyword n1qlOperator ARRAY_SYMDIFF
187syn keyword n1qlOperator ARRAY_UNION
188syn keyword n1qlOperator ASIN
189syn keyword n1qlOperator ATAN
190syn keyword n1qlOperator ATAN2
191syn keyword n1qlOperator AVG
192syn keyword n1qlOperator BASE64
193syn keyword n1qlOperator BASE64_DECODE
194syn keyword n1qlOperator BASE64_ENCODE
195syn keyword n1qlOperator CEIL
196syn keyword n1qlOperator CLOCK_LOCAL
197syn keyword n1qlOperator CLOCK_STR
198syn keyword n1qlOperator CLOCK_TZ
199syn keyword n1qlOperator CLOCK_UTC
200syn keyword n1qlOperator CLOCL_MILLIS
201syn keyword n1qlOperator CONTAINS
202syn keyword n1qlOperator COS
203syn keyword n1qlOperator COUNT
204syn keyword n1qlOperator DATE_ADD_MILLIS
205syn keyword n1qlOperator DATE_ADD_STR
206syn keyword n1qlOperator DATE_DIFF_MILLIS
207syn keyword n1qlOperator DATE_DIFF_STR
208syn keyword n1qlOperator DATE_FORMAT_STR
209syn keyword n1qlOperator DATE_PART_MILLIS
210syn keyword n1qlOperator DATE_PART_STR
211syn keyword n1qlOperator DATE_RANGE_MILLIS
212syn keyword n1qlOperator DATE_RANGE_STR
213syn keyword n1qlOperator DATE_TRUC_STR
214syn keyword n1qlOperator DATE_TRUNC_MILLIS
215syn keyword n1qlOperator DECODE_JSON
216syn keyword n1qlOperator DEGREES
217syn keyword n1qlOperator DURATION_TO_STR
218syn keyword n1qlOperator E
219syn keyword n1qlOperator ENCODED_SIZE
220syn keyword n1qlOperator ENCODE_JSON
221syn keyword n1qlOperator EXP
222syn keyword n1qlOperator FLOOR
223syn keyword n1qlOperator GREATEST
224syn keyword n1qlOperator IFINF
225syn keyword n1qlOperator IFMISSING
226syn keyword n1qlOperator IFMISSINGORNULL
227syn keyword n1qlOperator IFNAN
228syn keyword n1qlOperator IFNANORINF
229syn keyword n1qlOperator IFNULL
230syn keyword n1qlOperator INITCAP
231syn keyword n1qlOperator ISARRAY
232syn keyword n1qlOperator ISATOM
233syn keyword n1qlOperator ISBOOLEAN
234syn keyword n1qlOperator ISNUMBER
235syn keyword n1qlOperator ISOBJECT
236syn keyword n1qlOperator ISSTRING
237syn keyword n1qlOperator LEAST
238syn keyword n1qlOperator LENGTH
239syn keyword n1qlOperator LN
240syn keyword n1qlOperator LOG
241syn keyword n1qlOperator LOWER
242syn keyword n1qlOperator LTRIM
243syn keyword n1qlOperator MAX
244syn keyword n1qlOperator META
245syn keyword n1qlOperator MILLIS
246syn keyword n1qlOperator MILLIS_TO_LOCAL
247syn keyword n1qlOperator MILLIS_TO_STR
248syn keyword n1qlOperator MILLIS_TO_TZ
249syn keyword n1qlOperator MILLIS_TO_UTC
250syn keyword n1qlOperator MILLIS_TO_ZONE_NAME
251syn keyword n1qlOperator MIN
252syn keyword n1qlOperator MISSINGIF
253syn keyword n1qlOperator NANIF
254syn keyword n1qlOperator NEGINFIF
255syn keyword n1qlOperator NOW_LOCAL
256syn keyword n1qlOperator NOW_MILLIS
257syn keyword n1qlOperator NOW_STR
258syn keyword n1qlOperator NOW_TZ
259syn keyword n1qlOperator NOW_UTC
260syn keyword n1qlOperator NULLIF
261syn keyword n1qlOperator OBJECT_ADD
262syn keyword n1qlOperator OBJECT_CONCAT
263syn keyword n1qlOperator OBJECT_INNER_PAIRS
264syn keyword n1qlOperator OBJECT_INNER_VALUES
265syn keyword n1qlOperator OBJECT_LENGTH
266syn keyword n1qlOperator OBJECT_NAMES
267syn keyword n1qlOperator OBJECT_PAIRS
268syn keyword n1qlOperator OBJECT_PUT
269syn keyword n1qlOperator OBJECT_REMOVE
270syn keyword n1qlOperator OBJECT_RENAME
271syn keyword n1qlOperator OBJECT_REPLACE
272syn keyword n1qlOperator OBJECT_UNWRAP
273syn keyword n1qlOperator OBJECT_VALUES
274syn keyword n1qlOperator PI
275syn keyword n1qlOperator POLY_LENGTH
276syn keyword n1qlOperator POSINIF
277syn keyword n1qlOperator POSITION
278syn keyword n1qlOperator POWER
279syn keyword n1qlOperator RADIANS
280syn keyword n1qlOperator RANDOM
281syn keyword n1qlOperator REGEXP_CONTAINS
282syn keyword n1qlOperator REGEXP_LIKE
283syn keyword n1qlOperator REGEXP_POSITION
284syn keyword n1qlOperator REGEXP_REPLACE
285syn keyword n1qlOperator REPEAT
286syn keyword n1qlOperator REPLACE
287syn keyword n1qlOperator REVERSE
288syn keyword n1qlOperator ROUND
289syn keyword n1qlOperator RTRIM
290syn keyword n1qlOperator SIGN
291syn keyword n1qlOperator SIN
292syn keyword n1qlOperator SPLIT
293syn keyword n1qlOperator SQRT
294syn keyword n1qlOperator STR_TO_DURATION
295syn keyword n1qlOperator STR_TO_MILLIS
296syn keyword n1qlOperator STR_TO_TZ
297syn keyword n1qlOperator STR_TO_UTC
298syn keyword n1qlOperator STR_TO_ZONE_NAME
299syn keyword n1qlOperator SUBSTR
300syn keyword n1qlOperator SUFFIXES
301syn keyword n1qlOperator SUM
302syn keyword n1qlOperator TAN
303syn keyword n1qlOperator TITLE
304syn keyword n1qlOperator TOARRAY
305syn keyword n1qlOperator TOATOM
306syn keyword n1qlOperator TOBOOLEAN
307syn keyword n1qlOperator TOKENS
308syn keyword n1qlOperator TONUMBER
309syn keyword n1qlOperator TOOBJECT
310syn keyword n1qlOperator TOSTRING
311syn keyword n1qlOperator TRIM
312syn keyword n1qlOperator TRUNC
313syn keyword n1qlOperator TYPE
314syn keyword n1qlOperator UPPER
315syn keyword n1qlOperator UUID
316syn keyword n1qlOperator WEEKDAY_MILLIS
317syn keyword n1qlOperator WEEKDAY_STR
318
319
320"
321" *** operators ***
322"
323syn keyword n1qlOperator AND
324syn keyword n1qlOperator AS
325syn keyword n1qlOperator BY
326syn keyword n1qlOperator DISTINCT
327syn keyword n1qlOperator EXCEPT
328syn keyword n1qlOperator ILIKE
329syn keyword n1qlOperator IN
330syn keyword n1qlOperator INTERSECT
331syn keyword n1qlOperator IS
332syn keyword n1qlOperator JOIN
333syn keyword n1qlOperator LEFT
334syn keyword n1qlOperator LIKE
335syn keyword n1qlOperator MINUS
336syn keyword n1qlOperator NEST
337syn keyword n1qlOperator NESTING
338syn keyword n1qlOperator NOT
339syn keyword n1qlOperator OFFSET
340syn keyword n1qlOperator ON
341syn keyword n1qlOperator OR
342syn keyword n1qlOperator OUT
343syn keyword n1qlOperator RIGHT
344syn keyword n1qlOperator SOME
345syn keyword n1qlOperator TO
346syn keyword n1qlOperator UNION
347syn keyword n1qlOperator UNIQUE
348syn keyword n1qlOperator UNNEST
349syn keyword n1qlOperator VIA
350syn keyword n1qlOperator WITH
351syn keyword n1qlOperator XOR
352
353
354"
355" *** statements ***
356"
357syn keyword n1qlStatement ALTER
358syn keyword n1qlStatement ANALYZE
359syn keyword n1qlStatement BUILD
360syn keyword n1qlStatement COMMIT
361syn keyword n1qlStatement CREATE
362syn keyword n1qlStatement DELETE
363syn keyword n1qlStatement DROP
364syn keyword n1qlStatement EXECUTE
365syn keyword n1qlStatement EXPLAIN
366syn keyword n1qlStatement GRANT
367syn keyword n1qlStatement INFER
368syn keyword n1qlStatement INSERT
369syn keyword n1qlStatement MERGE
370syn keyword n1qlStatement PREPARE
371syn keyword n1qlStatement RENAME
372syn keyword n1qlStatement REVOKE
373syn keyword n1qlStatement ROLLBACK
374syn keyword n1qlStatement SELECT
375syn keyword n1qlStatement SET
376syn keyword n1qlStatement TRUNCATE
377syn keyword n1qlStatement UPDATE
378syn keyword n1qlStatement UPSERT
379
380
381"
382" *** types ***
383"
384syn keyword n1qlType ARRAY
385syn keyword n1qlType BINARY
386syn keyword n1qlType BOOLEAN
387syn keyword n1qlType NUMBER
388syn keyword n1qlType OBJECT
389syn keyword n1qlType RAW
390syn keyword n1qlType STRING
391
392
393"
394" *** strings and characters ***
395"
396syn region n1qlString start=+"+  skip=+\\\\\|\\"+  end=+"+
397syn region n1qlString start=+'+  skip=+\\\\\|\\'+  end=+'+
398syn region n1qlBucketSpec start=+`+  skip=+\\\\\|\\'+  end=+`+
399
400
401"
402" *** numbers ***
403"
404syn match n1qlNumber        "-\=\<\d*\.\=[0-9_]\>"
405
406
407"
408" *** comments ***
409"
410syn region n1qlComment start="/\*"  end="\*/" contains=n1qlTODO
411syn match n1qlComment  "--.*$" contains=n1qlTODO
412syn sync ccomment      n1qlComment
413
414
415"
416" *** TODO ***
417"
418syn keyword n1qlTODO contained TODO FIXME XXX DEBUG NOTE
419
420
421"
422" *** enable ***
423"
424hi def link n1qlBucketSpec Underlined
425hi def link n1qlComment    Comment
426hi def link n1qlKeyword    Macro
427hi def link n1qlOperator   Function
428hi def link n1qlSpecial    Special
429hi def link n1qlStatement  Statement
430hi def link n1qlString     String
431hi def link n1qlTODO       Todo
432hi def link n1qlType       Type
433
434let b:current_syntax = "n1ql"
435