diff options
Diffstat (limited to 'uvim/runtime/syntax/mojo.vim')
| -rw-r--r-- | uvim/runtime/syntax/mojo.vim | 316 |
1 files changed, 0 insertions, 316 deletions
diff --git a/uvim/runtime/syntax/mojo.vim b/uvim/runtime/syntax/mojo.vim deleted file mode 100644 index b7dae24a15..0000000000 --- a/uvim/runtime/syntax/mojo.vim +++ /dev/null @@ -1,316 +0,0 @@ -" Vim syntax file -" Language: Mojo -" Maintainer: Mahmoud Abduljawad <me@mahmoudajawad.com> -" Last Change: 2023 Sep 09 -" Credits: Mahmoud Abduljawad <me@mahmoudajawad.com> -" Neil Schemenauer <nas@python.ca> -" Dmitry Vasiliev -" -" This is based on Vim Python highlighting -" -" - introduced highlighting of doctests -" - updated keywords, built-ins, and exceptions -" - corrected regular expressions for -" -" * functions -" * decorators -" * strings -" * escapes -" * numbers -" * space error -" -" - corrected synchronization -" - more highlighting is ON by default, except -" - space error highlighting is OFF by default -" -" Optional highlighting can be controlled using these variables. -" -" let mojo_no_builtin_highlight = 1 -" let mojo_no_doctest_code_highlight = 1 -" let mojo_no_doctest_highlight = 1 -" let mojo_no_exception_highlight = 1 -" let mojo_no_number_highlight = 1 -" let mojo_space_error_highlight = 1 -" -" All the options above can be switched on together. -" -" let mojo_highlight_all = 1 -" -" The use of Python 2 compatible syntax highlighting can be enforced. -" The straddling code (Python 2 and 3 compatible), up to Python 3.5, -" will be also supported. -" -" let mojo_use_python2_syntax = 1 -" -" This option will exclude all modern Python 3.6 or higher features. -" - -" quit when a syntax file was already loaded. -if exists("b:current_syntax") - finish -endif - -" We need nocompatible mode in order to continue lines with backslashes. -" Original setting will be restored. -let s:cpo_save = &cpo -set cpo&vim - -if exists("mojo_no_doctest_highlight") - let mojo_no_doctest_code_highlight = 1 -endif - -if exists("mojo_highlight_all") - if exists("mojo_no_builtin_highlight") - unlet mojo_no_builtin_highlight - endif - if exists("mojo_no_doctest_code_highlight") - unlet mojo_no_doctest_code_highlight - endif - if exists("mojo_no_doctest_highlight") - unlet mojo_no_doctest_highlight - endif - if exists("mojo_no_exception_highlight") - unlet mojo_no_exception_highlight - endif - if exists("mojo_no_number_highlight") - unlet mojo_no_number_highlight - endif - let mojo_space_error_highlight = 1 -endif - -" These keywords are based on Python syntax highlight, and adds to it struct, -" fn, alias, var, let -" -syn keyword mojoStatement False None True -syn keyword mojoStatement as assert break continue del global -syn keyword mojoStatement lambda nonlocal pass return with yield -syn keyword mojoStatement class def nextgroup=mojoFunction skipwhite -syn keyword mojoStatement struct fn nextgroup=mojoFunction skipwhite -syn keyword mojoStatement alias var let -syn keyword mojoConditional elif else if -syn keyword mojoRepeat for while -syn keyword mojoOperator and in is not or -syn keyword mojoException except finally raise try -syn keyword mojoInclude from import -syn keyword mojoAsync async await - -" Soft keywords -" These keywords do not mean anything unless used in the right context. -" See https://docs.python.org/3/reference/lexical_analysis.html#soft-keywords -" for more on this. -syn match mojoConditional "^\s*\zscase\%(\s\+.*:.*$\)\@=" -syn match mojoConditional "^\s*\zsmatch\%(\s\+.*:\s*\%(#.*\)\=$\)\@=" - -" Decorators -" A dot must be allowed because of @MyClass.myfunc decorators. -syn match mojoDecorator "@" display contained -syn match mojoDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator - -" Python 3.5 introduced the use of the same symbol for matrix multiplication: -" https://www.python.org/dev/peps/pep-0465/. We now have to exclude the -" symbol from highlighting when used in that context. -" Single line multiplication. -syn match mojoMatrixMultiply - \ "\%(\w\|[])]\)\s*@" - \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue - \ transparent -" Multiplication continued on the next line after backslash. -syn match mojoMatrixMultiply - \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@" - \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue - \ transparent -" Multiplication in a parenthesized expression over multiple lines with @ at -" the start of each continued line; very similar to decorators and complex. -syn match mojoMatrixMultiply - \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*" - \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue - \ transparent - -syn match mojoFunction "\h\w*" display contained - -syn match mojoComment "#.*$" contains=mojoTodo,@Spell -syn keyword mojoTodo FIXME NOTE NOTES TODO XXX contained - -" Triple-quoted strings can contain doctests. -syn region mojoString matchgroup=mojoQuotes - \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" - \ contains=mojoEscape,@Spell -syn region mojoString matchgroup=mojoTripleQuotes - \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend - \ contains=mojoEscape,mojoSpaceError,mojoDoctest,@Spell -syn region mojoRawString matchgroup=mojoQuotes - \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" - \ contains=@Spell -syn region mojoRawString matchgroup=pythonTripleQuotes - \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend - \ contains=pythonSpaceError,mojoDoctest,@Spell - -syn match mojoEscape +\\[abfnrtv'"\\]+ contained -syn match mojoEscape "\\\o\{1,3}" contained -syn match mojoEscape "\\x\x\{2}" contained -syn match mojoEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained -" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ -syn match mojoEscape "\\N{\a\+\%(\s\a\+\)*}" contained -syn match mojoEscape "\\$" - -" It is very important to understand all details before changing the -" regular expressions below or their order. -" The word boundaries are *not* the floating-point number boundaries -" because of a possible leading or trailing decimal point. -" The expressions below ensure that all valid number literals are -" highlighted, and invalid number literals are not. For example, -" -" - a decimal point in '4.' at the end of a line is highlighted, -" - a second dot in 1.0.0 is not highlighted, -" - 08 is not highlighted, -" - 08e0 or 08j are highlighted, -" -" and so on, as specified in the 'Python Language Reference'. -" https://docs.python.org/reference/lexical_analysis.html#numeric-literals -if !exists("mojo_no_number_highlight") - " numbers (including complex) - syn match mojoNumber "\<0[oO]\%(_\=\o\)\+\>" - syn match mojoNumber "\<0[xX]\%(_\=\x\)\+\>" - syn match mojoNumber "\<0[bB]\%(_\=[01]\)\+\>" - syn match mojoNumber "\<\%([1-9]\%(_\=\d\)*\|0\+\%(_\=0\)*\)\>" - syn match mojoNumber "\<\d\%(_\=\d\)*[jJ]\>" - syn match mojoNumber "\<\d\%(_\=\d\)*[eE][+-]\=\d\%(_\=\d\)*[jJ]\=\>" - syn match mojoNumber - \ "\<\d\%(_\=\d\)*\.\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\%(\W\|$\)\@=" - syn match mojoNumber - \ "\%(^\|\W\)\zs\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\>" -endif - -" The built-ins are added in the same order of appearance in Mojo stdlib docs -" https://docs.modular.com/mojo/lib.html -" -if !exists("mojo_no_builtin_highlight") - " Built-in functions - syn keyword mojoBuiltin slice constrained debug_assert put_new_line print - syn keyword mojoBuiltin print_no_newline len range rebind element_type - syn keyword mojoBuiltin ord chr atol isdigit index address string - " Built-in types - syn keyword mojoType Byte ListLiteral CoroutineContext Coroutine DType - syn keyword mojoType dtype type invalid bool int8 si8 unit8 ui8 int16 - syn keyword mojoType si16 unit16 ui16 int32 si32 uint32 ui32 int64 - syn keyword mojoType si64 uint64 ui64 bfloat16 bf16 float16 f16 float32 - syn keyword mojoType f32 float64 f64 Error FloatLiteral Int Attr SIMD - syn keyword mojoType Int8 UInt8 Int16 UInt16 Int32 UInt32 Int64 UInt64 - syn keyword mojoType Float16 Float32 Float64 element_type _65x13_type - syn keyword mojoType String StringLiteral StringRef Tuple AnyType - syn keyword mojoType NoneType None Lifetime - " avoid highlighting attributes as builtins - syn match mojoAttribute /\.\h\w*/hs=s+1 - \ contains=ALLBUT,mojoBuiltin,mojoFunction,mojoAsync - \ transparent -endif - -" From the 'Python Library Reference' class hierarchy at the bottom. -" http://docs.python.org/library/exceptions.html -if !exists("mojo_no_exception_highlight") - " builtin base exceptions (used mostly as base classes for other exceptions) - syn keyword mojoExceptions BaseException Exception - syn keyword mojoExceptions ArithmeticError BufferError LookupError - " builtin exceptions (actually raised) - syn keyword mojoExceptions AssertionError AttributeError EOFError - syn keyword mojoExceptions FloatingPointError GeneratorExit ImportError - syn keyword mojoExceptions IndentationError IndexError KeyError - syn keyword mojoExceptions KeyboardInterrupt MemoryError - syn keyword mojoExceptions ModuleNotFoundError NameError - syn keyword mojoExceptions NotImplementedError OSError OverflowError - syn keyword mojoExceptions RecursionError ReferenceError RuntimeError - syn keyword mojoExceptions StopAsyncIteration StopIteration SyntaxError - syn keyword mojoExceptions SystemError SystemExit TabError TypeError - syn keyword mojoExceptions UnboundLocalError UnicodeDecodeError - syn keyword mojoExceptions UnicodeEncodeError UnicodeError - syn keyword mojoExceptions UnicodeTranslateError ValueError - syn keyword mojoExceptions ZeroDivisionError - " builtin exception aliases for OSError - syn keyword mojoExceptions EnvironmentError IOError WindowsError - " builtin OS exceptions in Python 3 - syn keyword mojoExceptions BlockingIOError BrokenPipeError - syn keyword mojoExceptions ChildProcessError ConnectionAbortedError - syn keyword mojoExceptions ConnectionError ConnectionRefusedError - syn keyword mojoExceptions ConnectionResetError FileExistsError - syn keyword mojoExceptions FileNotFoundError InterruptedError - syn keyword mojoExceptions IsADirectoryError NotADirectoryError - syn keyword mojoExceptions PermissionError ProcessLookupError TimeoutError - " builtin warnings - syn keyword mojoExceptions BytesWarning DeprecationWarning FutureWarning - syn keyword mojoExceptions ImportWarning PendingDeprecationWarning - syn keyword mojoExceptions ResourceWarning RuntimeWarning - syn keyword mojoExceptions SyntaxWarning UnicodeWarning - syn keyword mojoExceptions UserWarning Warning -endif - -if exists("mojo_space_error_highlight") - " trailing whitespace - syn match mojoSpaceError display excludenl "\s\+$" - " mixed tabs and spaces - syn match mojoSpaceError display " \+\t" - syn match mojoSpaceError display "\t\+ " -endif - -" Do not spell doctests inside strings. -" Notice that the end of a string, either ''', or """, will end the contained -" doctest too. Thus, we do *not* need to have it as an end pattern. -if !exists("mojo_no_doctest_highlight") - if !exists("mojo_no_doctest_code_highlight") - syn region mojoDoctest - \ start="^\s*>>>\s" end="^\s*$" - \ contained contains=ALLBUT,mojoDoctest,mojoFunction,@Spell - syn region mojoDoctestValue - \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" - \ contained - else - syn region mojoDoctest - \ start="^\s*>>>" end="^\s*$" - \ contained contains=@NoSpell - endif -endif - -" Sync at the beginning of class, function, or method definition. -syn sync match mojoSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]" - -" The default highlight links. Can be overridden later. -hi def link mojoStatement Statement -hi def link mojoConditional Conditional -hi def link mojoRepeat Repeat -hi def link mojoOperator Operator -hi def link mojoException Exception -hi def link mojoInclude Include -hi def link mojoAsync Statement -hi def link mojoDecorator Define -hi def link mojoDecoratorName Function -hi def link mojoFunction Function -hi def link mojoComment Comment -hi def link mojoTodo Todo -hi def link mojoString String -hi def link mojoRawString String -hi def link mojoQuotes String -hi def link mojoTripleQuotes mojoQuotes -hi def link mojoEscape Special -if !exists("mojo_no_number_highlight") - hi def link mojoNumber Number -endif -if !exists("mojo_no_builtin_highlight") - hi def link mojoBuiltin Function - hi def link mojoType Type -endif -if !exists("mojo_no_exception_highlight") - hi def link mojoExceptions Structure -endif -if exists("mojo_space_error_highlight") - hi def link mojoSpaceError Error -endif -if !exists("mojo_no_doctest_highlight") - hi def link mojoDoctest Special - hi def link mojoDoctestValue Define -endif - -let b:current_syntax = "mojo" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim:set sw=2 sts=2 ts=8 noet: |
