neovim/runtime/syntax/swig.vim
Christian Clason 38e98754a5 vim-patch:9.0.2128: runtime(swig): add syntax and filetype plugins
Add syntax and filetype plugins for SWIG (Simplified Wrapper Interface
Generator) description files.

The default syntax for .i files highlights comments in a reverse
color scheme which doesn't look well.  This syntax builds
on vim's c++ syntax by adding highlighting for common swig
directives and user defined directives.  For an alternative
syntax, see vimscript vim/vim#1247 (which I found after writing this).

closes: vim/vim#13562

2e31065a65

Co-authored-by: Julien Marrec <julien.marrec@gmail.com>
Co-authored-by: Matěj Cepl <mcepl@cepl.eu>
2023-11-26 00:41:59 +01:00

100 lines
4.4 KiB
VimL

" Vim syntax file
" Language: SWIG
" Maintainer: Julien Marrec <julien.marrec 'at' gmail com>
" Last Change: 2023 November 23
if exists("b:current_syntax")
finish
endif
" Read the C++ syntax to start with
runtime! syntax/cpp.vim
unlet b:current_syntax
" SWIG extentions
syn keyword swigInclude %include %import %importfile %includefile %module
syn keyword swigMostCommonDirective %alias %apply %beginfile %clear %constant %define %echo %enddef %endoffile
syn keyword swigMostCommonDirective %extend %feature %director %fragment %ignore %inline
syn keyword swigMostCommonDirective %keyword %name %namewarn %native %newobject %parms %pragma
syn keyword swigMostCommonDirective %rename %template %typedef %typemap %types %varargs
" SWIG: Language specific macros
syn keyword swigOtherLanguageSpecific %luacode %go_import
syn keyword swigCSharp %csattributes %csconst %csconstvalue %csmethodmodifiers %csnothrowexception
syn keyword swigCSharp %dconstvalue %dmanifestconst %dmethodmodifiers
syn keyword swigJava %javaconstvalue %javaexception %javamethodmodifiers %javaconst %nojavaexception
syn keyword swigGuile %multiple_values %values_as_list %values_as_vector
syn keyword swigPHP %rinit %rshutdown %minit %mshutdown
syn keyword swigPython %pybinoperator %pybuffer_binary %pybuffer_mutable_binary %pybuffer_mutable_string %pybuffer_string
syn keyword swigPython %pythonappend %pythonbegin %pythoncode %pythondynamic %pythonnondynamic %pythonprepend
syn keyword swigRuby %markfunc %trackobjects %bang
syn keyword swigScilab %scilabconst
" SWIG: Insertion
syn keyword swigInsertSection %insert %begin %runtime %header %wrapper %init
" SWIG: Other directives
syn keyword swigCstring %cstring_bounded_mutable %cstring_bounded_output %cstring_chunk_output %cstring_input_binary %cstring_mutable
syn keyword swigCstring %cstring_output_allocate %cstring_output_allocate_size %cstring_output_maxsize %cstring_output_withsize
syn keyword swigCWstring %cwstring_bounded_mutable %cwstring_bounded_output %cwstring_chunk_output %cwstring_input_binary %cwstring_mutable
syn keyword swigCWstring %cwstring_output_allocate %cwstring_output_allocate_size %cwstring_output_maxsize %cwstring_output_withsize
syn keyword swigCMalloc %malloc %calloc %realloc %free %sizeof %allocators
syn keyword swigExceptionHandling %catches %raise %allowexception %exceptionclass %warn %warnfilter %exception
syn keyword swigContract %contract %aggregate_check
syn keyword swigDirective %addmethods %array_class %array_functions %attribute %attribute2 %attribute2ref
syn keyword swigDirective %attribute_ref %attributeref %attributestring %attributeval %auto_ptr %callback
syn keyword swigDirective %delete_array %delobject %extend_smart_pointer %factory %fastdispatch %freefunc %immutable
syn keyword swigDirective %implicit %implicitconv %interface %interface_custom %interface_impl %intrusive_ptr %intrusive_ptr_no_wrap
syn keyword swigDirective %mutable %naturalvar %nocallback %nocopyctor %nodefaultctor %nodefaultdtor %nonaturalvar %nonspace
syn keyword swigDirective %nspace %pointer_cast %pointer_class %pointer_functions %predicate %proxycode
syn keyword swigDirective %refobject %set_output %shared_ptr %std_comp_methods
syn keyword swigDirective %std_nodefconst_type %typecheck %typemaps_string %unique_ptr %unrefobject %valuewrapper
syn match swigVerbatimStartEnd "%[{}]"
syn match swigUserDef "%\w\+"
syn match swigVerbatimMacro "^\s*%#\w\+\%( .*\)\?$"
" SWIG: typemap var and typemap macros (eg: $1, $*1_type, $&n_ltype, $self)
syn match swigTypeMapVars "\$[*&_a-zA-Z0-9]\+"
" Default highlighting
hi def link swigInclude Include
hi def link swigMostCommonDirective Structure
hi def link swigDirective Macro
hi def link swigContract swigExceptionHandling
hi def link swigExceptionHandling Exception
hi def link swigUserDef Function
hi def link swigCMalloc Statement
hi def link swigCstring Type
hi def link swigCWstring Type
hi def link swigCSharp swigOtherLanguageSpecific
hi def link swigJava swigOtherLanguageSpecific
hi def link swigGuile swigOtherLanguageSpecific
hi def link swigPHP swigOtherLanguageSpecific
hi def link swigPython swigOtherLanguageSpecific
hi def link swigRuby swigOtherLanguageSpecific
hi def link swigScilab swigOtherLanguageSpecific
hi def link swigOtherLanguageSpecific Special
hi def link swigInsertSection PreProc
hi def link swigVerbatimStartEnd Statement
hi def link swigVerbatimMacro Macro
hi def link swigTypeMapVars SpecialChar
let b:current_syntax = "swig"
" vim: ts=8