Andrea C from The App | 3b2c274 | 2024-01-22 20:10:42 +0100 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: ChucK |
| 3 | " Maintainer: Andrea Callea |
| 4 | " URL: https://github.com/gacallea/chuck.vim |
| 5 | " Last Change: 2024 Jan 21 by Andrea Callea |
| 6 | |
| 7 | " Sources used for this syntax |
| 8 | " https://chuck.cs.princeton.edu/doc/language/ |
| 9 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 10 | |
| 11 | " HISTORY: |
| 12 | " 2024 Jan 21 - Initial revision |
| 13 | |
| 14 | " quit when a syntax file was already loaded |
| 15 | if exists("b:current_syntax") |
| 16 | finish |
| 17 | endif |
| 18 | |
| 19 | " https://chuck.cs.princeton.edu/doc/language/type.html |
| 20 | syn keyword chuckPrimitiveType int float time dur void vec3 vec4 |
| 21 | syn keyword chuckComplexType complex polar |
| 22 | syn keyword chuckReferenceType Object Event UGen array string |
| 23 | syn keyword chuckBoolean true false maybe |
| 24 | syn keyword chuckBoolean null NULL |
| 25 | |
| 26 | " https://chuck.cs.princeton.edu/doc/language/oper.html |
| 27 | syn match chuckOperator "=>" |
| 28 | syn match chuckOperator "@=>" |
| 29 | |
| 30 | syn match chuckOperator "=^" |
| 31 | |
| 32 | syn match chuckOperator "+" |
| 33 | syn match chuckOperator "-" |
| 34 | syn match chuckOperator "*" |
| 35 | syn match chuckOperator "/" |
| 36 | syn match chuckOperator "%" |
| 37 | syn match chuckOperator "!" |
| 38 | syn match chuckOperator "&" |
| 39 | syn match chuckOperator "|" |
| 40 | syn match chuckOperator "\^" |
| 41 | |
| 42 | syn match chuckOperator "+=>" |
| 43 | syn match chuckOperator "-=>" |
| 44 | syn match chuckOperator "*=>" |
| 45 | syn match chuckOperator "/=>" |
| 46 | syn match chuckOperator "%=>" |
| 47 | syn match chuckOperator "!=>" |
| 48 | syn match chuckOperator "&=>" |
| 49 | syn match chuckOperator "|=>" |
| 50 | syn match chuckOperator "\^=>" |
| 51 | |
| 52 | syn match chuckOperator "&&" |
| 53 | syn match chuckOperator "||" |
| 54 | syn match chuckOperator "==" |
| 55 | syn match chuckOperator "!=" |
| 56 | syn match chuckOperator ">" |
| 57 | syn match chuckOperator ">=" |
| 58 | syn match chuckOperator "<" |
| 59 | syn match chuckOperator "<=" |
| 60 | |
| 61 | syn match chuckOperator ">>" |
| 62 | syn match chuckOperator "<<" |
| 63 | |
| 64 | syn match chuckOperator "++" |
| 65 | syn match chuckOperator "--" |
| 66 | syn match chuckOperator "<<<" |
| 67 | syn match chuckOperator ">>>" |
| 68 | |
| 69 | syn keyword chuckOperator new |
| 70 | |
| 71 | " https://chuck.cs.princeton.edu/doc/language/ctrl.html |
| 72 | syn keyword chuckConditional if else |
| 73 | syn keyword chuckRepeat while do until for each |
| 74 | |
| 75 | " https://chuck.cs.princeton.edu/doc/language/time.html |
| 76 | syn keyword chuckTimeAndDuration samp ms second minute hour day week |
| 77 | syn keyword chuckTimeAndDuration now later |
| 78 | |
| 79 | " these may need some additional keywords I missed, for a future revision |
| 80 | syn keyword chuckKeyword dac adc |
| 81 | syn keyword chuckKeyword fun function |
| 82 | syn keyword chuckKeyword return |
| 83 | syn keyword chuckKeyword const |
| 84 | syn match chuckKeyword "@" |
| 85 | syn keyword chuckKeyword pi |
| 86 | syn keyword chuckKeyword me |
| 87 | syn keyword chuckKeyword repeat break continue |
| 88 | syn keyword chuckKeyword class extends public private static pure this |
| 89 | syn keyword chuckKeyword spork |
| 90 | syn keyword chuckKeyword cherr chout |
| 91 | |
| 92 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 93 | syn keyword chuckBaseClasses Shred Math Machine Std |
| 94 | |
| 95 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 96 | syn keyword chuckBasicUGen Gain Impulse Step SndBuf SndBuf2 |
| 97 | syn keyword chuckBasicUGen ADSR Envelope Delay DelayL DelayA Echo |
| 98 | syn keyword chuckBasicUGen Noise CNoise Osc SinOsc TriOsc SawOsc PulseOsc SqrOsc |
| 99 | syn keyword chuckBasicUGen Phasor HalfRect FullRect |
| 100 | syn keyword chuckBasicUGen Chugraph Chugen UGen_Multi UGen_Stereo Mix2 Pan2 |
| 101 | |
| 102 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 103 | syn keyword chuckFilterUGen FilterBasic LPF HPF BPF BRF BiQuad ResonZ |
| 104 | syn keyword chuckFilterUGen OnePole OneZero TwoPole TwoZero PoleZero |
| 105 | |
| 106 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 107 | syn keyword chuckSTKUGen JCRev NRev PRCRev |
| 108 | syn keyword chuckSTKUGen Chorus Modulate PitShift SubNoise |
| 109 | syn keyword chuckSTKUGen BLT Blit BlitSaw BlitSquare FilterStk |
| 110 | syn keyword chuckSTKUGen WvIn WaveLoop WvOut WvOut2 StkInstrument |
| 111 | syn keyword chuckSTKUGen BandedWG BlowBotl BlowHole |
| 112 | syn keyword chuckSTKUGen Bowed Brass Clarinet Flute Mandolin |
| 113 | syn keyword chuckSTKUGen ModalBar Moog Saxofony Shakers Sitar StifKarp |
| 114 | syn keyword chuckSTKUGen VoicForm KrstlChr FM BeeThree FMVoices |
| 115 | syn keyword chuckSTKUGen HevyMetl HnkyTonk FrencHrn PercFlut Rhodey TubeBell Wurley |
| 116 | |
| 117 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 118 | syn keyword chuckAdvancedUGen LiSa LiSa2 LiSa6 LiSa8 LiSa10 |
| 119 | syn keyword chuckAdvancedUGen LiSa16 GenX Gen5 Gen7 Gen9 Gen10 Gen17 |
| 120 | syn keyword chuckAdvancedUGen CurveTable WarpTable Dyno |
| 121 | |
| 122 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 123 | syn keyword chuckChugin ABSaturator AmbPan3 Bitcrusher Elliptic ExpDelay ExpEnv FIR |
| 124 | syn keyword chuckChugin FoldbackSaturator GVerb KasFilter MagicSine Mesh2D |
| 125 | syn keyword chuckChugin Multicomb Pan4 Pan8 Pan16 PitchTrack PowerADSR RegEx |
| 126 | syn keyword chuckChugin Sigmund Spectacle WinFuncEnv WPDiodeLadder WPKorg35 |
| 127 | |
| 128 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 129 | syn keyword chuckUnitAnalyzer UAna UAnaBlob Windowing |
| 130 | syn keyword chuckUnitAnalyzer FFT IFFT DCT IDCT |
| 131 | syn keyword chuckUnitAnalyzer Centroid Flux RMS RollOff |
| 132 | syn keyword chuckUnitAnalyzer Flip UnFlip XCorr |
| 133 | syn keyword chuckUnitAnalyzer Chroma Kurtosis MFCC SFM ZeroX AutoCorr FeatureCollector |
| 134 | |
| 135 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 136 | syn keyword chuckChAI MLP KNN KNN2 HMM SVM Word2Vec PCA Wekinator AI |
| 137 | |
| 138 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 139 | syn keyword chuckInputOutput IO FileIO OscIn OscOut OscMsg |
| 140 | syn keyword chuckInputOutput Hid HidMsg KBHit SerialIO |
| 141 | syn keyword chuckInputOutput MidiIn MidiOut MidiMsg MidiFileIn |
| 142 | |
| 143 | " https://chuck.cs.princeton.edu/doc/reference/ |
| 144 | syn keyword chuckUtilities CKDoc StringTokenizer ConsoleInput |
| 145 | |
| 146 | " https://github.com/wilsaj/chuck.vim/blob/master/syntax/chuck.vim |
| 147 | syn match chuckNumber /\%(\i\|\$\)\@<![-]\?\d\+/ display |
| 148 | syn match chuckHex /\<0[xX]\x\+[lL]\=\>/ display |
| 149 | syn match chuckFloat /\%(\i\|\$\)\@<![-]\?\%(\d*\.\d\+\|\d\+\.\)/ display |
| 150 | |
| 151 | " this may need fixing/improvements |
| 152 | syn match chuckComment "//.*$" |
| 153 | syn region chuckComment start="/\*" end="\*/" |
| 154 | syn match chuckSpecialChar contained "\\n" |
| 155 | syn match chuckSpecialChar contained "\\t" |
| 156 | syn match chuckSpecialChar contained "\\a" |
| 157 | syn match chuckSpecialChar contained /\\"/ |
| 158 | syn match chuckSpecialChar contained "\\0" |
| 159 | syn region chuckString start=/"/ end=/"/ display contains=chuckSpecialChar |
| 160 | |
| 161 | hi def link chuckPrimitiveType Type |
| 162 | hi def link chuckComplexType Type |
| 163 | hi def link chuckReferenceType Type |
| 164 | hi def link chuckBoolean Boolean |
| 165 | hi def link chuckOperator Operator |
| 166 | hi def link chuckConditional Conditional |
| 167 | hi def link chuckRepeat Repeat |
| 168 | hi def link chuckTimeAndDuration Keyword |
| 169 | hi def link chuckKeyword Keyword |
| 170 | hi def link chuckBaseClasses Special |
| 171 | hi def link chuckBasicUGen Structure |
| 172 | hi def link chuckFilterUGen Structure |
| 173 | hi def link chuckSTKUGen Structure |
| 174 | hi def link chuckAdvancedUGen Structure |
| 175 | hi def link chuckChugin Structure |
| 176 | hi def link chuckUnitAnalyzer Structure |
| 177 | hi def link chuckChAI Structure |
| 178 | hi def link chuckInputOutput Special |
| 179 | hi def link chuckUtilities Special |
| 180 | hi def link chuckNumber Number |
| 181 | hi def link chuckHex Number |
| 182 | hi def link chuckFloat Float |
| 183 | hi def link chuckComment Comment |
| 184 | hi def link chuckSpecialChar SpecialChar |
| 185 | hi def link chuckString String |
| 186 | |
| 187 | let b:current_syntax = "chuck" |