2004-03-06 07:18:57 -08:00
|
|
|
" Vim syntax file
|
2006-08-02 03:52:44 -07:00
|
|
|
" Language: EDC
|
2010-04-21 14:00:40 -07:00
|
|
|
" Maintainer: billiob <billiob@gmail.com>
|
2011-05-07 23:21:33 -07:00
|
|
|
" Last Change: 05/08/2011
|
2004-03-06 07:18:57 -08:00
|
|
|
|
|
|
|
" For version 5.x: Clear all syntax items
|
|
|
|
" For version 6.x: Quit when a syntax file was already loaded
|
2012-08-28 05:17:51 -07:00
|
|
|
"
|
|
|
|
" Usage:
|
|
|
|
" 1) Copy this file to $HOME/.vim/syntax/
|
|
|
|
" 2) Paste the following line to your $HOME/.vimrc file to load the syntax
|
|
|
|
" automatically:
|
|
|
|
"
|
|
|
|
" au BufNewFile,BufRead *.edc set syntax=edc
|
|
|
|
"
|
2004-03-06 07:18:57 -08:00
|
|
|
if version < 600
|
|
|
|
syntax clear
|
|
|
|
elseif exists("b:current_syntax")
|
|
|
|
finish
|
|
|
|
endif
|
|
|
|
|
|
|
|
" A bunch of useful C keywords
|
2010-04-21 14:00:40 -07:00
|
|
|
syn keyword cStructure images data fonts collections group externals
|
2007-06-11 03:04:25 -07:00
|
|
|
syn keyword cStructure part parts dragable description rel1 rel2
|
2005-09-30 13:32:36 -07:00
|
|
|
syn keyword cStatement text image font fill origin size tag
|
From: "Hanspeter Portner" <ventosus@airpost.net>
This concerns Ticket #109: Add Lua support for Edje
It adds Lua as scripting facility to Edje, letting Embryo untouched.
It should be easier to use and be more flexible than Embryo, imho ;-)
---
The patch
---
Lua 5.1 is used in sandboxed mode. Lua byte code is not
platform/architecture independent, Lua code is saved as text in the Edje
container and parsed at load time, therefore.
The patch goes in two directions
1) Analogous to Embryo for scripting logic, messaging and custom states.
The same things are implemented as in Embryo:
- messaging from and to C
- manual creation of timers, animators, pollers for custom events /
animations
- manual manipulation of Edje parts by means of the public
edje_object_part_* and internal functions and custom states
-> those routines are actually implemented as Lua
bindings to
functions in Edje.h and Ecore.h
-> the implementation is done in an object oriented way, so that the
interface gives the feel of an object description language, pretty
similar to EDC itself
-> combining custom states and custom animators allows
for fancy
animations and transitions, e.g circular/spline translations or
complex/conditional transitions, etc.
-> this is just the same as Embryo does, but implemented in Lua, so
nothing new here, actually
2) Dynamic object creation and manipulation
- this interface stems from the 'script_only' objects in
Edje. Those
objects are a kind of scriptable Edje counterparts to Evas_Smart
objects. The infrastructure for Embryo is already there, but has
never been used
- I added this in Lua and added some first bindings to
experiment
with
- I thought it would be useful to allow for a limited dynamic
creation of ui parts
- We can create instances of groups from within the same Edje
container and use them just like the main Edje object as
stated in
1)
- And there are some stand-alone bindings to dynamically create
Evas_Image, Evas_Table, Evas_Line, Evas_Polygon as examples
-> this may be useful to decouple the program from the ui
even more,
to be able to do things that have to be done in the program itself
atm, but actually belong to the user interface, but need dynamic
creation of objects or complex interactions
-> those objects are manipulated manually with Lua bindings
to the
corresponding edje_object_* and evas_object_* functions
---
Discussion points
---
Both stuff in 1) & 2) is functioning, but needs testing, feedback,
improvements, ...
Stuff in 1) can already fully replace Embryo scripting with Lua
scripting. There still is space for improvements/additions, though.
Of the stuff in 2), I think it may only make sense to add the dynamic
creation of groups defined in the same Edje container. Dynamic creation
of other Evas_Objects makes not much sense, as most of them can already
be used as Edje parts and be manipulated with custom states (apart from
polygons and lines) and it would make the whole theming potentially more
programing-like and much more susceptible for errors, etc.
Would this be useful, or drop it all?
The scripting should be there just for logic, conditionals, custom
states and animations, not for a whole dynamic canvas, imho.
There is a patch around with EXTERNAL Edje parts. Seems to be a better,
faster, more secure way to extend Edje with custom objects.
There would be the possibility of precompiling Lua code at compile time
(edje_cc) for faster loading, but we would have to patch and run our own
Lua version.
The Lua parser is pretty fast, though, and using
byte-converted/endianness-swapped byte-code does only pay off for Lua
chunks of some kilo lines.
Byte code also occupies much more space than text in the final Edje
container, as it includes debug symbols.
---
Cedric and Vincent told me, that the plan was to replace Embryo totally
by Lua before the official release of Edje at the end of the year? So it
would make sense to bring Lua to svn soon and look how it fits in, test,
debug, adapt it further to the themers needs, decide on its final shape,
GATHER SOME PEOPLE TO HELP ;-)
---
The Lua enhanced Edje is in sync with svn and can be get directly here
git clone git://repo.or.cz/edje_lua.git
cd edje_lua
git checkout -b lua_patch origin/lua_patch
or apply the attached patch
There are also some examples to show the usage of the things
mentioned
above
- showcase.edj: shows usage of custom animators, custom states,
messaging and the script_only object
- test.edj: test cases of script usage and bindings (custom states,
custom transitions, tween_states, animators, timers,
object_parts),
but most of it are experimental script_only objects
http://didgmo.sourceforge.net/showcase.edj
http://didgmo.sourceforge.net/test.edj
The source of showcase.edc is attached, too, to just have a glimpse at
Lua inside of EDC
---
So, what do you guys think?
Thanks and sry for the looong mail, hehe ;-)
SVN revision: 41802
2009-08-15 19:34:02 -07:00
|
|
|
syn keyword cStructure programs program script script_only lua_script lua_script_only styles style base
|
2010-02-02 16:13:47 -08:00
|
|
|
syn keyword cStructure spectra spectrum box
|
2010-01-19 13:43:36 -08:00
|
|
|
syn match cType "+ + +;" contained
|
2004-03-06 07:18:57 -08:00
|
|
|
|
|
|
|
syn keyword cLabel item name min max type effect
|
|
|
|
syn keyword cLabel mouse_events repeat_events clip_to
|
|
|
|
syn keyword cLabel color_class text_class x y confine
|
2007-11-10 05:17:23 -08:00
|
|
|
syn keyword cLabel state visible align step aspect aspect_preference fixed
|
2004-03-06 07:18:57 -08:00
|
|
|
syn keyword cLabel relative offset to to_x to_y normal tween
|
|
|
|
syn keyword cLabel border color color2 color3 font size fit align
|
|
|
|
syn keyword cLabel signal source action transition in target after
|
2010-01-19 13:43:36 -08:00
|
|
|
syn keyword cLabel text smooth inherit scale middle ignore_flags
|
|
|
|
syn keyword cLabel alias events entry_mode select_mode multiline
|
|
|
|
syn keyword cLabel source1 source2 source3 source4 source5 source6
|
2010-02-02 16:13:47 -08:00
|
|
|
syn keyword cLabel text_source transitions layout padding
|
2010-01-19 13:43:36 -08:00
|
|
|
syn keyword cLabel size_w size_h size_max_w size_max_h size_min_w size_min_w
|
2011-05-07 23:21:33 -07:00
|
|
|
syn keyword cLabel spread scale_hint elipsis ellipsis pointer_mode prefer
|
2010-02-02 16:13:47 -08:00
|
|
|
syn keyword cLabel precise_is_inside use_alternate_font_metrics options
|
|
|
|
syn keyword cLabel aspect_mode position span angle repch api
|
2012-11-07 00:49:42 -08:00
|
|
|
syn keyword cLabel external params size_range border_scale minmul
|
2004-03-06 07:18:57 -08:00
|
|
|
|
|
|
|
syn keyword cConditional if else switch
|
|
|
|
syn keyword cRepeat while for do
|
2010-02-02 16:13:47 -08:00
|
|
|
syn keyword cConstant COMP RAW LOSSY USER
|
|
|
|
syn keyword cConstant RECT TEXT IMAGE SWALLOW TEXTBLOCK GRADIENT
|
|
|
|
syn keyword cConstant GROUP BOX TABLE EXTERNAL ITEM
|
|
|
|
syn keyword cConstant SOLID AUTOGRAB NOGRAB
|
|
|
|
syn keyword cConstant NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW
|
|
|
|
syn keyword cConstant SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW
|
|
|
|
syn keyword cConstant FAR_SOFT_SHADOW FAR_SHADOW GLOW
|
|
|
|
syn keyword cConstant STATE_SET ACTION_STOP SIGNAL_EMIT
|
|
|
|
syn keyword cConstant SCRIPT LUA_SCRIPT
|
2004-03-06 07:18:57 -08:00
|
|
|
syn keyword cConstant DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE
|
|
|
|
syn keyword cConstant LINEAR SINUSOIDAL ACCELERATE DECELERATE
|
2010-01-19 13:43:36 -08:00
|
|
|
syn keyword cConstant VERTICAL HORIZONTAL ON_HOLD BOTH EDITABLE EXPLICIT
|
2010-02-02 16:13:47 -08:00
|
|
|
syn keyword cConstant FOCUS_SET "default" NEITHER
|
|
|
|
syn keyword cConstant DYNAMIC STATIC
|
2004-03-06 07:18:57 -08:00
|
|
|
|
|
|
|
syn keyword cTodo contained TODO FIXME XXX
|
|
|
|
|
|
|
|
" cCommentGroup allows adding matches for special things in comments
|
|
|
|
syn cluster cCommentGroup contains=cTodo
|
|
|
|
|
|
|
|
" String and Character constants
|
|
|
|
" Highlight special characters (those which have a backslash) differently
|
|
|
|
syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
|
|
|
|
if !exists("c_no_utf")
|
|
|
|
syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
|
|
|
|
endif
|
|
|
|
if exists("c_no_cformat")
|
|
|
|
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial
|
|
|
|
" cCppString: same as cString, but ends at end of line
|
|
|
|
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial
|
|
|
|
else
|
|
|
|
syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
|
|
|
syn match cFormat display "%%" contained
|
|
|
|
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
|
|
|
|
" cCppString: same as cString, but ends at end of line
|
|
|
|
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat
|
|
|
|
endif
|
|
|
|
|
|
|
|
syn match cCharacter "L\='[^\\]'"
|
|
|
|
syn match cCharacter "L'[^']*'" contains=cSpecial
|
|
|
|
if exists("c_gnu")
|
|
|
|
syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'"
|
|
|
|
syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
|
|
|
|
else
|
|
|
|
syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'"
|
|
|
|
syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
|
|
|
|
endif
|
|
|
|
syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
|
|
|
|
syn match cSpecialCharacter display "'\\x\x\{1,2}'"
|
|
|
|
syn match cSpecialCharacter display "L'\\x\x\+'"
|
|
|
|
|
|
|
|
"when wanted, highlight trailing white space
|
|
|
|
if exists("c_space_errors")
|
|
|
|
if !exists("c_no_trail_space_error")
|
|
|
|
syn match cSpaceError display excludenl "\s\+$"
|
|
|
|
endif
|
|
|
|
if !exists("c_no_tab_space_error")
|
|
|
|
syn match cSpaceError display " \+\t"me=e-1
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
"catch errors caused by wrong parenthesis and brackets
|
|
|
|
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
|
|
|
if exists("c_no_bracket_error")
|
|
|
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString
|
|
|
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
|
|
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString
|
|
|
|
syn match cParenError display ")"
|
|
|
|
syn match cErrInParen display contained "[{}]"
|
|
|
|
else
|
|
|
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString
|
|
|
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
|
|
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString
|
|
|
|
syn match cParenError display "[\])]"
|
|
|
|
syn match cErrInParen display contained "[\]{}]"
|
|
|
|
syn region cBracket transparent start='\[' end=']' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString
|
|
|
|
" cCppBracket: same as cParen but ends at end-of-line; used in cDefine
|
|
|
|
syn region cCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString
|
|
|
|
syn match cErrInBracket display contained "[);{}]"
|
|
|
|
endif
|
|
|
|
|
|
|
|
"integer number, or floating point number without a dot and with "f".
|
|
|
|
syn case ignore
|
|
|
|
syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
|
|
|
|
" Same, but without octal error (for comments)
|
|
|
|
syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
|
|
|
|
syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
|
|
|
|
"hex number
|
|
|
|
syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
|
|
|
|
" Flag the first zero of an octal number as something special
|
|
|
|
syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
|
|
|
|
syn match cOctalZero display contained "\<0"
|
|
|
|
syn match cFloat display contained "\d\+f"
|
|
|
|
"floating point number, with dot, optional exponent
|
|
|
|
syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
|
|
|
|
"floating point number, starting with a dot, optional exponent
|
|
|
|
syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
|
|
|
|
"floating point number, without dot, with exponent
|
|
|
|
syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
|
|
|
|
" flag an octal number with wrong digits
|
|
|
|
syn match cOctalError display contained "0\o*[89]\d*"
|
|
|
|
syn case match
|
|
|
|
|
|
|
|
if exists("c_comment_strings")
|
|
|
|
" A comment can contain cString, cCharacter and cNumber.
|
|
|
|
" But a "*/" inside a cString in a cComment DOES end the comment! So we
|
|
|
|
" need to use a special type of cString: cCommentString, which also ends on
|
|
|
|
" "*/", and sees a "*" at the start of the line as comment again.
|
|
|
|
" Unfortunately this doesn't very well work for // type of comments :-(
|
|
|
|
syntax match cCommentSkip contained "^\s*\*\($\|\s\+\)"
|
|
|
|
syntax region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
|
|
|
|
syntax region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
|
|
|
|
syntax region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
|
|
|
|
syntax region cComment matchgroup=cCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError
|
|
|
|
else
|
|
|
|
syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError
|
|
|
|
syn region cComment matchgroup=cCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError
|
|
|
|
endif
|
|
|
|
" keep a // comment separately, it terminates a preproc. conditional
|
|
|
|
syntax match cCommentError display "\*/"
|
|
|
|
syntax match cCommentStartError display "/\*"me=e-1 contained
|
|
|
|
|
|
|
|
syn keyword cOperator sizeof
|
|
|
|
if exists("c_gnu")
|
|
|
|
syn keyword cStatement __asm__
|
|
|
|
syn keyword cOperator typeof __real__ __imag__
|
|
|
|
endif
|
|
|
|
syn keyword cType int long short char void
|
|
|
|
syn keyword cType signed unsigned float double
|
|
|
|
if !exists("c_no_ansi") || exists("c_ansi_typedefs")
|
|
|
|
syn keyword cType size_t wchar_t ptrdiff_t sig_atomic_t fpos_t
|
|
|
|
syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
|
|
|
|
syn keyword cType mbstate_t wctrans_t wint_t wctype_t
|
|
|
|
endif
|
|
|
|
if !exists("c_no_c99") " ISO C99
|
|
|
|
syn keyword cType bool complex
|
|
|
|
syn keyword cType int8_t int16_t int32_t int64_t
|
|
|
|
syn keyword cType uint8_t uint16_t uint32_t uint64_t
|
|
|
|
syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
|
|
|
|
syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
|
|
|
|
syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
|
|
|
|
syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
|
|
|
|
syn keyword cType intptr_t uintptr_t
|
|
|
|
syn keyword cType intmax_t uintmax_t
|
|
|
|
endif
|
|
|
|
if exists("c_gnu")
|
|
|
|
syn keyword cType __label__ __complex__ __volatile__
|
|
|
|
endif
|
|
|
|
|
|
|
|
syn keyword cStructure struct union enum typedef
|
|
|
|
syn keyword cStorageClass static register auto volatile extern const
|
|
|
|
if exists("c_gnu")
|
|
|
|
syn keyword cStorageClass inline __attribute__
|
|
|
|
endif
|
|
|
|
|
|
|
|
if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
|
|
|
|
if exists("c_gnu")
|
|
|
|
syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__
|
|
|
|
endif
|
|
|
|
syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
|
|
|
|
syn keyword cConstant __STDC_VERSION__
|
|
|
|
syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
|
|
|
|
syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
|
|
|
|
syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
|
|
|
|
syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
|
|
|
|
syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
|
|
|
|
syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
|
|
|
|
syn keyword cConstant FLT_RADIX FLT_ROUNDS
|
|
|
|
syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
|
|
|
|
syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
|
|
|
|
syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
|
|
|
|
syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
|
|
|
|
syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
|
|
|
|
syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
|
|
|
|
syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
|
|
|
|
syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
|
|
|
|
syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
|
|
|
|
syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
|
|
|
|
syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
|
|
|
|
syn keyword cConstant LC_NUMERIC LC_TIME
|
|
|
|
syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
|
|
|
|
syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
|
|
|
|
" Add POSIX signals as well...
|
|
|
|
syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
|
|
|
|
syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
|
|
|
|
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
|
|
|
|
syn keyword cConstant SIGUSR1 SIGUSR2
|
|
|
|
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF
|
|
|
|
syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
|
|
|
|
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
|
|
|
|
syn keyword cConstant TMP_MAX stderr stdin stdout
|
|
|
|
syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
|
|
|
|
" Add POSIX errors as well
|
|
|
|
syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
|
|
|
|
syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
|
|
|
|
syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
|
|
|
|
syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
|
|
|
|
syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
|
|
|
|
syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
|
|
|
|
syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
|
|
|
|
" math.h
|
|
|
|
syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
|
|
|
|
syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
|
|
|
|
endif
|
|
|
|
if !exists("c_no_c99") " ISO C99
|
|
|
|
syn keyword cConstant true false
|
|
|
|
endif
|
|
|
|
|
|
|
|
syn region cPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
|
|
|
|
syn match cPreCondit display "^\s*#\s*\(else\|endif\)\>"
|
|
|
|
if !exists("c_no_if0")
|
|
|
|
syn region cCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=cCppOut2
|
|
|
|
syn region cCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
|
|
|
|
syn region cCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=cSpaceError,cCppSkip
|
|
|
|
endif
|
|
|
|
syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
|
|
|
syn match cIncluded display contained "<[^>]*>"
|
|
|
|
syn match cInclude display "^\s*#\s*include\>\s*["<]" contains=cIncluded
|
|
|
|
"syn match cLineSkip "\\$"
|
|
|
|
syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
|
|
|
|
syn region cDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup
|
|
|
|
syn region cPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup
|
|
|
|
|
|
|
|
syn match cUserLabel display "\I\i*" contained
|
|
|
|
|
2005-01-05 09:40:49 -08:00
|
|
|
|
|
|
|
|
2004-03-06 07:18:57 -08:00
|
|
|
if exists("c_minlines")
|
|
|
|
let b:c_minlines = c_minlines
|
|
|
|
else
|
|
|
|
if !exists("c_no_if0")
|
|
|
|
let b:c_minlines = 50 " #if 0 constructs can be long
|
|
|
|
else
|
|
|
|
let b:c_minlines = 15 " mostly for () constructs
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
exec "syn sync ccomment cComment minlines=" . b:c_minlines
|
|
|
|
|
|
|
|
" Define the default highlighting.
|
|
|
|
" For version 5.7 and earlier: only when not done already
|
|
|
|
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
|
|
if version >= 508 || !exists("did_c_syn_inits")
|
|
|
|
if version < 508
|
|
|
|
let did_c_syn_inits = 1
|
|
|
|
command -nargs=+ HiLink hi link <args>
|
|
|
|
else
|
|
|
|
command -nargs=+ HiLink hi def link <args>
|
|
|
|
endif
|
|
|
|
|
|
|
|
HiLink cFormat cSpecial
|
|
|
|
HiLink cCppString cString
|
|
|
|
HiLink cCommentL cComment
|
|
|
|
HiLink cCommentStart cComment
|
|
|
|
HiLink cLabel Label
|
|
|
|
HiLink cUserLabel Label
|
|
|
|
HiLink cConditional Conditional
|
|
|
|
HiLink cRepeat Repeat
|
|
|
|
HiLink cCharacter Character
|
|
|
|
HiLink cSpecialCharacter cSpecial
|
|
|
|
HiLink cNumber Number
|
|
|
|
HiLink cOctal Number
|
|
|
|
HiLink cOctalZero PreProc " link this to Error if you want
|
|
|
|
HiLink cFloat Float
|
|
|
|
HiLink cOctalError cError
|
|
|
|
HiLink cParenError cError
|
|
|
|
HiLink cErrInParen cError
|
|
|
|
HiLink cErrInBracket cError
|
|
|
|
HiLink cCommentError cError
|
|
|
|
HiLink cCommentStartError cError
|
|
|
|
HiLink cSpaceError cError
|
|
|
|
HiLink cSpecialError cError
|
|
|
|
HiLink cOperator Operator
|
|
|
|
HiLink cStructure Structure
|
|
|
|
HiLink cStorageClass StorageClass
|
|
|
|
HiLink cInclude Include
|
|
|
|
HiLink cPreProc PreProc
|
|
|
|
HiLink cDefine Macro
|
|
|
|
HiLink cIncluded cString
|
|
|
|
HiLink cError Error
|
|
|
|
HiLink cStatement Statement
|
|
|
|
HiLink cPreCondit PreCondit
|
|
|
|
HiLink cType Type
|
|
|
|
HiLink cConstant Constant
|
|
|
|
HiLink cCommentString cString
|
|
|
|
HiLink cComment2String cString
|
|
|
|
HiLink cCommentSkip cComment
|
|
|
|
HiLink cString String
|
|
|
|
HiLink cComment Comment
|
|
|
|
HiLink cSpecial SpecialChar
|
|
|
|
HiLink cTodo Todo
|
|
|
|
HiLink cCppSkip cCppOut
|
|
|
|
HiLink cCppOut2 cCppOut
|
|
|
|
HiLink cCppOut Comment
|
|
|
|
|
|
|
|
delcommand HiLink
|
|
|
|
endif
|
|
|
|
|
|
|
|
let b:current_syntax = "edc"
|
|
|
|
|
|
|
|
" vim: ts=8
|