" Language: Nomsu " Maintainer: Bruce Hill " License: WTFPL " Bail if our syntax is already loaded. if exists('b:current_syntax') && b:current_syntax == 'nomsu' finish endif " Highlight long strings. syn sync minlines=100 hi def link nomsuInterpDelim PreProc syn region nomsuOneLineComment start=/#\(\.\.\)\@!/ end=/$/ hi nomsuOneLineComment ctermfg=DarkBlue hi def link nomsuOneLineComment Comment syn region nomsuComment start=/\(^\z(\s*\)[^\n]*\)\@<=#\.\./ skip=/\n\s*$/ end=/\n\(\z1\s\)\@!/ hi nomsuComment ctermfg=DarkBlue hi def link nomsuComment Comment syn match nomsuLongStringStart /"\.\."/ contains=nomsuIndentor contained hi nomsuLongStringStart ctermfg=Yellow syn match nomsuStringPipe /|/ contained hi nomsuStringPipe ctermfg=DarkGray syn match nomsuStringBackslash /\\\\/ contained hi nomsuStringBackslash ctermbg=Black ctermfg=Blue syn match nomsuStringEscapedQuote /\\"/ contained hi nomsuStringEscapedQuote ctermbg=Black ctermfg=Blue hi def link nomsuStringPipe Special syn region nomsuInterp matchgroup=nomsuInterpDelim start=/\\(/ end=/)/ contained \ contains=@nomsuAll syn region nomsuLongStringValue start=/\(|\)\@<=/ end=/$/ contained \ contains=nomsuInterp,nomsuStringBackslash hi nomsuLongStringValue ctermbg=Black ctermfg=Gray hi def link nomsuLongStringValue String syn region nomsuLongStringLine start=/^\s\+|/ end=/\n/ contained \ contains=nomsuStringPipe,nomsuLongStringValue syn region nomsuLongString start=/\(^\z(\s*\)[^\n]*\)\@<="\.\."/ skip=/^\s*$/ end=/^\(\z1\s\)\@!/ \ contains=nomsuLongStringStart,nomsuOneLineComment,nomsuComment,nomsuLongStringLine syn region nomsuString start=/\("\.\.\)\@?-]*\)\?/ hi nomsuVar ctermfg=Cyan hi def link nomsuVar Identifier syn match nomsuWord /\v[a-zA-Z0-9`~!@^&*_+=|<>?'-][a-zA-Z0-9`~!@^&*_+=|<>?-]*/ hi def link nomsuWord Function hi nomsuWord ctermfg=White syn match nomsuNumber /-\?\d\+\(\.\(\d\+\)\?\)\?/ syn match nomsuNumber /-\?\.\d\+/ hi def link nomsuNumber Number syn match nomsuDotDot /\.\./ hi def link nomsuDotDot Special hi nomsuDotDot ctermfg=DarkGray syn match nomsuDelim /[,;()\[\]]/ hi nomsuDelim ctermfg=Yellow hi def link nomsuDelim Delimiter syn match nomsuThunk /:/ hi nomsuThunk ctermfg=Yellow hi def link nomsuThunk Structure syn cluster nomsuAll contains=nomsuString,nomsuLongString,nomsuComment,nomsuOneLineComment, \ nomsuVar,nomsuNumber,nomsuDelim,nomsuThunk,nomsuDotDot,nomsuWord if !exists('b:current_syntax') let b:current_syntax = 'nomsu' endif