blob: c202d90e7468aed7c1e3826025f67f96fd502a52 [file] [log] [blame]
Bram Moolenaar56994d22021-04-17 16:31:09 +02001" Vim syntax file
2" Language: Modula-3 Quake
3" Maintainer: Doug Kearns <dougkearns@gmail.com>
4" Last Change: 2021 April 15
5
6if exists("b:current_syntax")
7 finish
8endif
9
10" Keywords
11syn keyword m3quakeKeyword else end foreach if in is local or proc readonly
12syn keyword m3quakeKeyword return
13
14" Builtin procedures {{{
15" Generated from m3-sys/m3quake/src/QMachine.m3
16syn keyword m3quakeProcedure arglist cp_if defined empty equal error escape
17syn keyword m3quakeProcedure exec cm3_exec file format include make_dir
18syn keyword m3quakeProcedure normalize path stale try_exec try_cm3_exec
19syn keyword m3quakeProcedure unlink_file write datetime date datestamp
20syn keyword m3quakeProcedure TRACE_INSTR eval_func hostname
21
22syn keyword m3quakeProcedure pushd popd cd getwd
23
24syn keyword m3quakeProcedure quake
25
26syn keyword m3quakeProcedure q_exec q_exec_put q_exec_get
27
28syn keyword m3quakeProcedure fs_exists fs_readable fs_writable fs_executable
29syn keyword m3quakeProcedure fs_isdir fs_isfile fs_contents fs_putfile
30syn keyword m3quakeProcedure fs_mkdir fs_touch fs_lsdirs fs_lsfiles fs_rmdir
31syn keyword m3quakeProcedure fs_rmfile fs_rmrec fs_cp
32
33syn keyword m3quakeProcedure pn_valid pn_decompose pn_compose pn_absolute
34syn keyword m3quakeProcedure pn_prefix pn_last pn_base pn_lastbase pn_lastext
35syn keyword m3quakeProcedure pn_join pn_join2 pn_replace_ext pn_parent
36syn keyword m3quakeProcedure pn_current
37
38syn keyword m3quakeProcedure len
39
40syn keyword m3quakeProcedure split sub skipl skipr squeeze compress pos
41syn keyword m3quakeProcedure tcontains bool encode decode subst_chars
42syn keyword m3quakeProcedure del_chars subst subst_env add_prefix add_suffix
43" }}}
44
45" Identifiers
46syn match m3quakeEnvVariable "$\h\w\+"
47
48" Operators
49syn match m3quakeOperator "&"
50syn match m3quakeOperator "\<\%(contains\|not\|and\|or\)\>"
51
52" Strings
53syn match m3quakeEscape "\\[\\nrtbf"]" contained display
54syn region m3quakeString start=+"+ end=+"+ contains=m3quakeEscape
55
56" Comments
57syn keyword m3quakeTodo TODO FIXME XXX contained
58syn region m3quakeComment start="%" end="$" contains=m3quakeTodo,@Spell
59syn region m3quakeComment start="/\*" end="\*/" contains=m3quakeTodo,@Spell
60
61" Default highlighting
62hi def link m3quakeCommand Statement
63hi def link m3quakeComment Comment
64hi def link m3quakeEnvVariable Identifier
65hi def link m3quakeEscape Special
66hi def link m3quakeKeyword Keyword
67hi def link m3quakeOperator Operator
68hi def link m3quakeProcedure Function
69hi def link m3quakeString String
70hi def link m3quakeTodo Todo
71
72let b:current_syntax = "m3quake"
73
74" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: