0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00
vim/runtime/syntax/eiffel.vim

202 lines
6.6 KiB
VimL
Raw Normal View History

2004-06-13 20:20:40 +00:00
" Eiffel syntax file
" Language: Eiffel
2012-06-01 22:38:45 +02:00
" Maintainer: Jocelyn Fiat <jfiat@eiffel.com>
" Previous maintainer: Reimer Behrends <behrends@cse.msu.edu>
" Contributions from: Thilo Six
"
" URL: https://github.com/eiffelhub/vim-eiffel
" quit when a syntax file was already loaded
if exists("b:current_syntax")
2004-06-13 20:20:40 +00:00
finish
endif
2012-06-01 22:38:45 +02:00
let s:keepcpo= &cpo
2012-01-10 14:55:01 +01:00
set cpo&vim
2004-06-13 20:20:40 +00:00
" Option handling
if exists("eiffel_ignore_case")
syn case ignore
else
syn case match
if exists("eiffel_pedantic") || exists("eiffel_strict")
syn keyword eiffelError current void result precursor none
syn keyword eiffelError CURRENT VOID RESULT PRECURSOR None
syn keyword eiffelError TRUE FALSE
endif
if exists("eiffel_pedantic")
syn keyword eiffelError true false
syn match eiffelError "\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
syn match eiffelError "\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
endif
if exists("eiffel_lower_case_predef")
syn keyword eiffelPredefined current void result precursor
endif
endif
if exists("eiffel_hex_constants")
syn match eiffelNumber "\d[0-9a-fA-F]*[xX]"
endif
" Keyword definitions
2012-06-01 22:38:45 +02:00
syn keyword eiffelTopStruct note indexing feature creation inherit
2004-06-13 20:20:40 +00:00
syn match eiffelTopStruct "\<class\>"
syn match eiffelKeyword "\<end\>"
syn match eiffelTopStruct "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
syn match eiffelBrackets "[[\]]"
syn match eiffelBracketError "\]"
syn region eiffelGeneric transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
if exists("eiffel_ise")
2012-06-01 22:38:45 +02:00
syn match eiffelAgent "\<agent\>"
syn match eiffelConvert "\<convert\>"
2004-06-13 20:20:40 +00:00
syn match eiffelCreate "\<create\>"
syn match eiffelTopStruct contained "\<create\>"
2012-06-01 22:38:45 +02:00
syn match eiffelTopStruct contained "\<convert\>"
2004-06-13 20:20:40 +00:00
syn match eiffelGenericCreate contained "\<create\>"
syn match eiffelTopStruct "^create\>"
syn region eiffelGenericDecl transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
syn region eiffelClassHeader start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
endif
2012-06-01 22:38:45 +02:00
syn keyword eiffelDeclaration is do once deferred unique local attribute assign
syn keyword eiffelDeclaration attached detachable Unique
2004-06-13 20:20:40 +00:00
syn keyword eiffelProperty expanded obsolete separate frozen
syn keyword eiffelProperty prefix infix
syn keyword eiffelInheritClause rename redefine undefine select export as
syn keyword eiffelAll all
2012-06-01 22:38:45 +02:00
syn keyword eiffelKeyword external alias some
2004-06-13 20:20:40 +00:00
syn keyword eiffelStatement if else elseif inspect
syn keyword eiffelStatement when then
syn match eiffelAssertion "\<require\(\s\+else\)\=\>"
syn match eiffelAssertion "\<ensure\(\s\+then\)\=\>"
syn keyword eiffelAssertion check
syn keyword eiffelDebug debug
2012-06-01 22:38:45 +02:00
syn keyword eiffelStatement across from until loop
2004-06-13 20:20:40 +00:00
syn keyword eiffelAssertion variant
syn match eiffelAssertion "\<invariant\>"
syn match eiffelTopStruct "^invariant\>"
syn keyword eiffelException rescue retry
syn keyword eiffelPredefined Current Void Result Precursor
" Operators
syn match eiffelOperator "\<and\(\s\+then\)\=\>"
syn match eiffelOperator "\<or\(\s\+else\)\=\>"
syn keyword eiffelOperator xor implies not
syn keyword eiffelOperator strip old
syn keyword eiffelOperator Strip
syn match eiffelOperator "\$"
syn match eiffelCreation "!"
syn match eiffelExport "[{}]"
syn match eiffelArray "<<"
syn match eiffelArray ">>"
syn match eiffelConstraint "->"
syn match eiffelOperator "[@#|&][^ \e\t\b%]*"
" Special classes
syn keyword eiffelAnchored like
syn keyword eiffelBitType BIT
" Constants
if !exists("eiffel_pedantic")
syn keyword eiffelBool true false
endif
syn keyword eiffelBool True False
syn region eiffelString start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
syn match eiffelStringEscape contained "%[^/]"
syn match eiffelStringEscape contained "%/\d\+/"
syn match eiffelStringEscape contained "^[ \t]*%"
syn match eiffelStringEscape contained "%[ \t]*$"
syn match eiffelStringError contained "%/[^0-9]"
syn match eiffelStringError contained "%/\d\+[^0-9/]"
syn match eiffelBadConstant "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
syn match eiffelBadConstant "''"
syn match eiffelCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\>"
syn match eiffelNumber "\<[01]\+[bB]\>"
syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
syn match eiffelNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
syn match eiffelComment "--.*" contains=eiffelTodo
syn case match
" Case sensitive stuff
syn keyword eiffelTodo contained TODO XXX FIXME
syn match eiffelClassName "\<[A-Z][A-Z0-9_]*\>"
" Catch mismatched parentheses
syn match eiffelParenError ")"
syn region eiffelParen transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
2012-06-01 22:38:45 +02:00
if exists("eiffel_fold")
" setlocal foldmethod=indent
" syn sync fromstart
endif
2004-06-13 20:20:40 +00:00
" Should suffice for even very long strings and expressions
syn sync lines=40
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
command -nargs=+ HiLink hi def link <args>
2004-06-13 20:20:40 +00:00
HiLink eiffelKeyword Statement
HiLink eiffelProperty Statement
HiLink eiffelInheritClause Statement
HiLink eiffelStatement Statement
HiLink eiffelDeclaration Statement
HiLink eiffelAssertion Statement
HiLink eiffelDebug Statement
HiLink eiffelException Statement
HiLink eiffelGenericCreate Statement
2004-06-13 20:20:40 +00:00
HiLink eiffelAgent Statement
HiLink eiffelConvert Statement
2004-06-13 20:20:40 +00:00
HiLink eiffelTopStruct PreProc
2004-06-13 20:20:40 +00:00
HiLink eiffelAll Special
HiLink eiffelAnchored Special
HiLink eiffelBitType Special
2004-06-13 20:20:40 +00:00
HiLink eiffelBool Boolean
HiLink eiffelString String
HiLink eiffelCharacter Character
HiLink eiffelClassName Type
HiLink eiffelNumber Number
2004-06-13 20:20:40 +00:00
HiLink eiffelStringEscape Special
2004-06-13 20:20:40 +00:00
HiLink eiffelOperator Special
HiLink eiffelArray Special
HiLink eiffelExport Special
HiLink eiffelCreation Special
HiLink eiffelBrackets Special
HiLink eiffelGeneric Special
HiLink eiffelGenericDecl Special
HiLink eiffelConstraint Special
HiLink eiffelCreate Special
2004-06-13 20:20:40 +00:00
HiLink eiffelPredefined Constant
2004-06-13 20:20:40 +00:00
HiLink eiffelComment Comment
2004-06-13 20:20:40 +00:00
HiLink eiffelError Error
HiLink eiffelBadConstant Error
HiLink eiffelStringError Error
HiLink eiffelParenError Error
HiLink eiffelBracketError Error
2004-06-13 20:20:40 +00:00
HiLink eiffelTodo Todo
2004-06-13 20:20:40 +00:00
delcommand HiLink
2004-06-13 20:20:40 +00:00
let b:current_syntax = "eiffel"
2012-06-01 22:38:45 +02:00
let &cpo = s:keepcpo
unlet s:keepcpo
2004-06-13 20:20:40 +00:00
" vim: ts=8