jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/editors/vim-configs.git/commit/?id=97f35f5c0adca4055eb06080d7bb310123857f12

commit 97f35f5c0adca4055eb06080d7bb310123857f12
Author: Daniel Zaoui <[email protected]>
Date:   Tue Jul 29 03:42:04 2014 +0300

    Add syntax files for EDC format.
---
 autoload/edccomplete.vim | 892 +++++++++++++++++++++++++++++++++++++++++++++++
 ftdetect/edc.vim         |   3 +
 ftplugin/edc.vim         |  24 ++
 indent/edc.vim           |  83 +++++
 syntax/edc.vim           | 235 +++++++++++++
 5 files changed, 1237 insertions(+)

diff --git a/autoload/edccomplete.vim b/autoload/edccomplete.vim
new file mode 100644
index 0000000..e2521e9
--- /dev/null
+++ b/autoload/edccomplete.vim
@@ -0,0 +1,892 @@
+" Vim completion script
+" Language:    EDC
+" Maintainer:  Viktor Kojouharov
+" Last Change: 2007 02 24
+
+function! edccomplete#Complete(findstart, base)
+  if a:findstart
+    " locate the start of the word
+    let line = getline('.')
+    let start = col('.') - 1
+    let compl_begin = col('.') - 2
+    let lastword = -1
+    if line =~ ':' && line !~ '\.'
+      while start > 0 && (line[start - 1] =~ '\k' || line[start - 1] =~ '"')
+       let start -= 1
+      endwhile
+    else
+      while start > 0
+       if line[start - 1] =~ '\k'
+         let start -= 1
+       elseif line[start - 1] =~ '\.'
+         if lastword == -1
+           let lastword = start - 2
+         endif
+         let start -= 1
+       else
+         break
+       endif
+      endwhile
+    endif
+    let b:compl_context = getline('.')[0:compl_begin]
+
+    if lastword == -1
+      let ppe = searchpos('\.', 'bcn')
+      let pps = searchpos('\w\+\.', 'bcn')
+      let b:sparent = ''
+      if ppe != [0, 0] && pps[0] == ppe[0] && pps[1] <= ppe[1] && pps[0] == 
line('.')
+       let b:scontext = line[pps[1] -1 : ppe[1] - 2]
+        call edccomplete#FindParent(pps[0], pps[1])
+       return start
+      endif
+
+      let startpos = searchpair('{', '', '}', 'bnW')
+      let lnum = startpos
+      let line = getline(lnum)
+
+      if line !~ '\a\+'
+        let lnum = prevnonblank(lnum - 1)
+       let line = getline(lnum)
+      endif
+
+      call edccomplete#FindParent(lnum, 1)
+      let b:scontext = matchstr(line, '\w\+')
+
+      return start
+    else
+      let b:scontext = line[start : lastword]
+
+      return lastword + 2
+    endif
+  else
+    " find months matching with "a:base"
+    let res = []
+    if exists("b:compl_context")
+      let line = b:compl_context
+      unlet! b:compl_context
+    else
+      let line = a:base
+    endif
+
+    if b:scontext == 'part'
+      call edccomplete#AddLabel(res, line, a:base, s:partLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:partStatement)
+      if line =~ 'type:\s*'
+        call edccomplete#AddKeyword(res, a:base, s:partTypes)
+      elseif line =~ 'effect:\s*'
+        call edccomplete#AddKeyword(res, a:base, s:partEffects)
+      elseif line =~ 'select_mode:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:partSelectMode)
+      elseif line =~ 'ignore_flags:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:partIgnoreFlags)
+      elseif line =~ 'pointer_mode:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:partPointerMode)
+      elseif line =~ 'editable_mode:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:partEditableMode)
+      endif
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'dragable'
+      call edccomplete#AddLabel(res, line, a:base, s:dragableLabel)
+
+    elseif b:scontext == 'description'
+      call edccomplete#AddLabel(res, line, a:base, s:descriptionLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:descriptionStatement)
+      if line =~ 'aspect_preference:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:aspectPrefTypes)
+      elseif line =~ 'inherit:\s*"\?'
+       call edccomplete#FindStates(res, a:base, 1)
+      endif
+
+    elseif b:scontext == 'rel1' || b:scontext == 'rel2'
+      call edccomplete#AddLabel(res, line, a:base, s:relLabel)
+      if line =~ 'to\%(_[xy]\)\?:\s*"\?'
+        call edccomplete#FindNamesIn(res, a:base, 'parts')
+      endif
+
+    elseif b:scontext == 'map'
+      call edccomplete#AddLabel(res, line, a:base, s:mapLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:mapStatement)
+
+    elseif b:scontext == 'rotation'
+      call edccomplete#AddLabel(res, line, a:base, s:rotationLabel)
+
+    elseif b:scontext == 'perspective'
+      call edccomplete#AddLabel(res, line, a:base, s:perspectiveLabel)
+
+    elseif b:scontext == 'params'
+      call edccomplete#AddLabel(res, line, a:base, s:paramsLabel)
+
+    elseif b:scontext == 'image'
+      call edccomplete#AddLabel(res, line, a:base, s:imageLabel)
+      if line =~ 'image:\s*".\{-}"'
+        call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      elseif line =~ 'middle:\s*'
+        call edccomplete#AddKeyword(res, a:base, s:imageMiddleTypes)
+      elseif line =~ 'scale_hint:\s*'
+        call edccomplete#AddKeyword(res, a:base, s:imageScaleHint)
+      endif
+
+    elseif b:scontext == 'fill'
+      call edccomplete#AddLabel(res, line, a:base, s:fillLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:fillStatement)
+      if line =~ 'type:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:fillTypes)
+      endif
+
+    elseif b:scontext == 'origin' || b:scontext == 'size'
+      call edccomplete#AddLabel(res, line, a:base, s:fillInnerStatement)
+
+    elseif b:scontext == 'text'
+      call edccomplete#AddLabel(res, line, a:base, s:textLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:textStatement)
+
+    elseif b:scontext == 'program'
+      call edccomplete#AddLabel(res, line, a:base, s:programLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:programStatement)
+      if line =~ 'transition:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:transitionTypes)
+      elseif line =~ 'STATE_SET\s*"\?'
+       call edccomplete#FindStates(res, a:base, 0)
+      elseif line =~ 'action:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:actionTypes)
+      elseif line =~ 'target:\s*"\?'
+       call edccomplete#FindNamesIn(res, a:base, 'parts')
+      elseif line =~ 'after:\s*"\?'
+       call edccomplete#FindNamesIn(res, a:base, 'programs')
+      endif
+
+    elseif b:scontext == 'programs'
+      call edccomplete#AddLabel(res, line, a:base, s:programsLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:programsStatement)
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'box' && b:sparent == 'part'
+      call edccomplete#AddStatement(res, line, a:base, s:boxStatement)
+
+    elseif b:scontext == 'items'
+      call edccomplete#AddStatement(res, line, a:base, s:boxItemsStatement)
+
+    elseif b:scontext == 'item'
+      call edccomplete#AddLabel(res, line, a:base, s:boxItemLabel)
+      if line =~ 'type:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:boxItemTypes)
+      elseif line =~ 'aspect_mode:\s*"\?'
+       call edccomplete#AddKeyword(res, a:base, s:boxItemAspectMode)
+      endif
+
+    elseif b:scontext == 'box' && b:sparent == 'description'
+      call edccomplete#AddLabel(res, line, a:base, s:boxDescLabel)
+      if line =~ 'layout:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:boxLayout)
+      endif
+
+    elseif b:scontext == 'table' && b:sparent == 'description'
+      call edccomplete#AddLabel(res, line, a:base, s:tableDescLabel)
+      if line =~ 'homogeneous:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:tableHomogeneousMode)
+      endif
+
+    elseif b:scontext == 'group'
+      call edccomplete#AddLabel(res, line, a:base, s:groupLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:groupStatement)
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'parts'
+      call edccomplete#AddLabel(res, line, a:base, s:partsLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:partsStatement)
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'data'
+      call edccomplete#AddLabel(res, line, a:base, s:dataLabel)
+
+    elseif b:scontext == 'fonts'
+      call edccomplete#AddLabel(res, line, a:base, s:fontsLabel)
+
+    elseif b:scontext == 'spectra'
+      call edccomplete#AddStatement(res, line, a:base, s:spectraStatement)
+
+    elseif b:scontext == 'spectrum'
+      call edccomplete#AddLabel(res, line, a:base, s:spectrumLabel)
+
+    elseif b:scontext == 'gradient'
+      call edccomplete#AddLabel(res, line, a:base, s:gradientLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:gradientStatement)
+      if line =~ 'type:\s*'
+       call edccomplete#AddKeyword(res, a:base, s:gradientTypes)
+      endif
+
+    elseif b:scontext == 'styles'
+      call edccomplete#AddStatement(res, line, a:base, s:stylesStatement)
+
+    elseif b:scontext == 'style'
+      call edccomplete#AddLabel(res, line, a:base, s:styleLabel)
+
+    elseif b:scontext == 'color_classes'
+      call edccomplete#AddStatement(res, line, a:base, 
s:color_classesStatement)
+
+    elseif b:scontext == 'color_class'
+      call edccomplete#AddLabel(res, line, a:base, s:color_classLabel)
+
+    elseif b:scontext == 'images'
+      call edccomplete#AddLabel(res, line, a:base, s:imagesLabel)
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'collections'
+      call edccomplete#AddLabel(res, line, a:base, s:collectionsLabel)
+      call edccomplete#AddStatement(res, line, a:base, s:collectionsStatement)
+      if line =~ 'image:\s*".\{-}"'
+       call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod)
+      endif
+
+    elseif b:scontext == 'externals'
+      call edccomplete#AddLabel(res, line, a:base, s:externalsLabel)
+
+    elseif strlen(b:scontext) == 0
+      call edccomplete#AddStatement(res, line, a:base, s:topStatement)
+    endif
+
+    unlet! b:scontext
+
+    return res
+  endif
+endfunction
+
+function! edccomplete#AddLabel(res, line, base, label)
+  if a:line =~ ':'
+    return
+  endif
+
+  for m in sort(keys(a:label))
+    if m =~ '^' . a:base
+      call add(a:res, {'word': m . ':', 'menu': a:label[m]})
+    endif
+  endfor
+endfunction
+
+function! edccomplete#AddKeyword(res, base, label)
+  for m in sort(keys(a:label))
+    if m =~ '^' . a:base
+      call add(a:res, {'word': m, 'menu': a:label[m]})
+    endif
+  endfor
+endfunction
+
+function! edccomplete#AddStatement(res, line, base, statement)
+  if a:line =~ ':'
+    return
+  endif
+
+  for m in sort(a:statement)
+    if m =~ '^' . a:base
+      call add(a:res, m . ' {')
+    endif
+  endfor
+endfunction
+
+function! edccomplete#FindStates(res, base, in_part)
+  let curpos = getpos('.')
+  call remove(curpos, 0, 0)
+
+  let states_list = []
+  if a:in_part == 1    " in the current part only
+    let part_start = search('^[ \t}]*\<part\>[ \t{]*$', 'bnW')
+    if part_start != 0  " found it
+      let line = getline(part_start)
+      if line !~ '{'
+       let part_start = nextnonblank(part_start)
+      endif
+      call cursor(part_start, 0)
+      let part_end = searchpair('{', '', '}', 'nW')
+    endif
+  else                         " in the current parts group
+    let part_start = search('^[ \t}]*\<parts\>[ \t{]*$', 'bnW')
+    if part_start != 0  " found it
+      let line = getline(part_start)
+      if line !~ '{'
+       let part_start = nextnonblank(part_start)
+      endif
+      call cursor(part_start, 0)
+      let part_end = searchpair('{', '', '}', 'nW')
+    endif
+  endif
+
+  let state_num = search('\%(state:\s*\)"\w\+"', 'W', part_end)
+  while state_num
+    let state = matchstr(getline(state_num), '\%(state:\s*\)\@<="\w\+"')
+    call extend(states_list, [state])
+    let state_num = search('\%(state:\s*\)"\w\+"', 'W', part_end)
+  endwhile
+  call cursor(curpos)
+
+  for m in sort(states_list)
+    if m =~ '^' . a:base
+      call add(a:res, m)
+    endif
+  endfor
+endfunction
+
+function! edccomplete#FindNamesIn(res, base, str)
+  let curpos = getpos('.')
+  call remove(curpos, 0, 0)
+
+  let names_list = []
+  let part_start = search('^[ \t}]*\<' . a:str . '\>[ \t{]*$', 'bnW')
+  if part_start != 0  " found it
+    let line = getline(part_start)
+    if line !~ '{'
+      let part_start = nextnonblank(part_start)
+    endif
+    call cursor(part_start, 0)
+    let part_end = searchpair('{', '', '}', 'nW')
+  endif
+
+  let name_num = search('\%(name:\s*\)"\w\+"', 'W', part_end)
+  while name_num
+    let name = matchstr(getline(name_num), '\%(name:\s*\)\@<="\w\+"')
+    call extend(names_list, [name])
+    let name_num = search('\%(name:\s*\)"\w\+"', 'W', part_end)
+  endwhile
+  call cursor(curpos)
+
+  for m in sort(names_list)
+    if m =~ '^' . a:base
+      call add(a:res, m)
+    endif
+  endfor
+endfunction
+
+function! edccomplete#FindParent(lnum, cnum)
+  call setpos('.', [0, a:lnum, a:cnum, 0])
+  let ppe = searchpos('\.', 'bcn')
+  let pps = searchpos('\w\+\.', 'bcn')
+  if ppe != [0, 0] && pps[0] == ppe[0] && pps[1] <= ppe[1] && pps[0] == 
line('.')
+    let b:sparent = line[pps[1] -1 : ppe[1] - 2]
+    return
+  endif
+
+  let startpos = searchpair('{', '', '}', 'bnW')
+  let lnum = startpos
+  let line = getline(lnum)
+
+  if line !~ '\a\+'
+    let line = getline(prevnonblank(lnum - 1))
+  endif
+
+  let b:sparent = matchstr(line, '\w\+')
+endfunction
+
+" part
+let s:partLabel = {
+      \ 'name':                        '"name"',
+      \ 'type':                                'keyword',
+      \ 'effect':                      'keyword',
+      \ 'clip_to':                     '"part_name"',
+      \ 'scale':                       '0-1',
+      \ 'mouse_events':                        '0-1',
+      \ 'repeat_events':               '0-1',
+      \ 'ignore_flags':                        'keyword ...',
+      \ 'pointer_mode':                        'keyword',
+      \ 'select_mode':                 'keyword',
+      \ 'precise_is_inside':           '0-1',
+      \ 'use_alternate_font_metrics':  '0-1',
+      \ 'image':                       '"filename" keyword',
+      \ 'font':                                '"filename" "name"',
+      \ 'entry_mode':                  'keyword',
+      \ 'multiline':                   '0-1 (TEXTBLOCK only)',
+      \ 'source':                      '"group_name" (GROUP or TEXTBLOCK 
only)',
+      \ 'source2':                     '"group_name" (TEXTBLOCK only)',
+      \ 'source3':                     '"group_name" (TEXTBLOCK only)',
+      \ 'source4':                     '"group_name" (TEXTBLOCK only)',
+      \ 'source5':                     '"group_name" (TEXTBLOCK only)',
+      \ 'source6':                     '"group_name" (TEXTBLOCK only)',
+      \ }
+let s:partStatement = [
+      \ 'dragable',
+      \ 'images',
+      \ 'fonts',
+      \ 'description',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'program',
+      \ 'programs',
+      \ 'box',
+      \ ]
+
+" dragable
+let s:dragableLabel = {
+      \ 'x':           '0-1 int int',
+      \ 'y':           '0-1 int int',
+      \ 'confine':     '"part_name"',
+      \ 'events':      '"draggable_part_name"',
+      \ }
+
+" description
+let s:descriptionLabel = {
+      \ 'state':               '"name" index (float)',
+      \ 'inherit':             '"description" index (float)',
+      \ 'visible':             '0-1',
+      \ 'align':               'x y (float)',
+      \ 'fixed':               'width height (0-1)',
+      \ 'min':                 'width height (int)',
+      \ 'max':                 'width height (int)',
+      \ 'step':                        'width height (int)',
+      \ 'aspect':              'min max (float)',
+      \ 'aspect_preference':   'keyword',
+      \ 'color_class':         '"name"',
+      \ 'color':               '0-255 0-255 0-255 0-255',
+      \ 'color2':              '0-255 0-255 0-255 0-255',
+      \ 'color3':              '0-255 0-255 0-255 0-255',
+      \ 'font':                '"filename" "name"',
+      \ }
+let s:descriptionStatement = [
+      \ 'rel1',
+      \ 'rel2',
+      \ 'image',
+      \ 'fill',
+      \ 'text',
+      \ 'gradient',
+      \ 'images',
+      \ 'fonts',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'program',
+      \ 'programs',
+      \ 'box',
+      \ 'map',
+      \ ]
+
+" rel
+let s:relLabel = {
+      \ 'relative':    'x y (float)',
+      \ 'offset':      'x y (int)',
+      \ 'to':          '"part_name"',
+      \ 'to_x':                '"part_name"',
+      \ 'to_y':                '"part_name"',
+      \ }
+" map
+let s:mapLabel = {
+      \ 'on':          '0-1',
+      \ 'perspective': '"part_name"',
+      \ 'light':       '"part_name"',
+      \ 'smooth':      '0-1',
+      \ 'pespective_on':'0-1',
+      \ 'backface_cull':'0-1',
+      \ 'alpha':       '0-1',
+      \ }
+let s:mapStatement = [
+      \ 'rotation',
+      \ ]
+
+let s:rotationLabel = {
+      \ 'center':      '"part_name"',
+      \ 'x':           '"degrees (float)"',
+      \ 'y':           '"degrees (float)"',
+      \ 'z':           '"degrees (float)"',
+      \ }
+
+" params
+let s:paramsLabel = {
+      \ 'int':         '"name" int',
+      \ 'double':       '"name" double',
+      \ 'string':       '"name" "string"',
+      \ }
+
+" perspective
+let s:perspectiveLabel = {
+      \ 'zplane':      'int',
+      \ 'focal':        'int',
+      \ }
+
+
+" image
+let s:imageLabel = {
+      \ 'image':       '"filename" keyword',
+      \ 'normal':      '"filename"',
+      \ 'tween':       '"filename"',
+      \ 'border':      'left right top bottom (int)',
+      \ 'middle':      'keyword',
+      \ 'border_scale': '0-1',
+      \ 'scale_hint':  'keyword',
+      \ }
+
+" fill
+let s:fillLabel = {
+      \ 'smooth':      '0-1',
+      \ 'angle':       '0-360 (GRADIENT)',
+      \ 'spread':      '0-1',
+      \ 'type':                'keyword',
+      \ }
+let s:fillStatement = [
+      \ 'origin',
+      \ 'size',
+      \ ]
+" fill origin/size
+let s:fillInnerStatement = {
+      \ 'relative':    'width height (float)',
+      \ 'offset':      'x y (int)',
+      \ }
+" fill types
+let s:fillTypes = {
+      \ 'SCALE':    '',
+      \ 'TILE':            '',
+      \ }
+
+" text
+let s:textLabel = {
+      \ 'text':                '"string"',
+      \ 'font':                '"font_name"',
+      \ 'size':                'size (int)',
+      \ 'text_class':  '"class_name"',
+      \ 'fit':         'x y (0-1)',
+      \ 'min':         'x y (0-1)',
+      \ 'max':         'x y (0-1)',
+      \ 'align':       'x y (float)',
+      \ 'source':      '"part_name"',
+      \ 'text_source': '"text_part_name"',
+      \ 'style':       '"style_name"',
+      \ 'elipsis':     '0.0-1.0',
+      \ 'repch':       '"string" (PASSWORD mode)',
+      \ }
+let s:textStatement = [
+      \ 'fonts',
+      \ ]
+
+" program
+let s:programLabel = {
+      \ 'name':                '"name"',
+      \ 'signal':      '"signal_name"',
+      \ 'source':      '"part_name"',
+      \ 'action':      'keyword ...',
+      \ 'transition':  'keyword time (float)',
+      \ 'filter':      '"part_name" "state_name"',
+      \ 'in':          'from range (float)',
+      \ 'target':      '"part_name"',
+      \ 'after':       '"program_name"',
+      \ }
+let s:programStatement = [
+      \ 'script',
+      \ 'lua_script',
+      \ ]
+
+
+" programs
+let s:programsLabel = {
+      \ 'image':       '"filename" keyword',
+      \ 'font':                '"filename" "name"',
+      \ }
+let s:programsStatement = [
+      \ 'images',
+      \ 'fonts',
+      \ 'program',
+      \ ]
+
+" box and table
+let s:boxStatement = [
+      \ 'items',
+      \ ]
+let s:boxItemsStatement = [
+      \ 'item',
+      \ ]
+let s:boxItemLabel = {
+      \ 'type':                'keyword',
+      \ 'name':                '"name"',
+      \ 'source':      '"group_name"',
+      \ 'min':         'width height (int)',
+      \ 'prefer':      'width height (int)',
+      \ 'max':         'width height (int)',
+      \ 'padding':      'left right top bottom (int)',
+      \ 'align':       'x y (float)',
+      \ 'weight':      'x y (float)',
+      \ 'aspect':      'w h (float)',
+      \ 'aspect_mode':  'keyword',
+      \ 'options':      '"extra options"',
+      \ }
+let s:boxDescLabel = {
+      \ 'layout':       '"string" ["string"]',
+      \ 'align':       'float float',
+      \ 'padding':      'int int',
+      \ }
+let s:tableItemLabel = {
+      \ 'position':     'col row (int)',
+      \ 'span':                'col row (int)',
+      \ }
+let s:tableDescLabel = {
+      \ 'homogeneous': 'keyword',
+      \ 'align':       'float float',
+      \ 'padding':      'int int',
+      \ }
+
+" group
+let s:groupLabel = {
+      \ 'name':                '"name"',
+      \ 'alias':       '"alias"',
+      \ 'min':         'width height',
+      \ 'max':         'width height',
+      \ 'image':       '"filename" keyword',
+      \ 'font':                '"filename" "name"',
+      \ 'script_only': '0-1',
+      \ }
+let s:groupStatement = [
+      \ 'data',
+      \ 'script',
+      \ 'lua_script',
+      \ 'parts',
+      \ 'images',
+      \ 'fonts',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'program',
+      \ 'programs',
+      \ 'externals',
+      \ ]
+
+" parts
+let s:partsStatement = [
+      \ 'images',
+      \ 'fonts',
+      \ 'part',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'program',
+      \ 'programs',
+      \ ]
+let s:partsLabel = {
+      \ 'image':       '"filename" keyword',
+      \ 'font':                '"filename" "name"',
+      \ }
+
+" data
+let s:dataLabel = {
+      \ 'item':                '"key" "value"',
+      \ 'file':                '"key" "filename"',
+      \ }
+
+" fonts
+let s:fontsLabel = {
+      \ 'font':                '"filename" "name"',
+      \ }
+
+"images
+let s:imagesLabel = {
+      \ 'image':       '"filename" keyword',
+      \ }
+
+"collections
+let s:collectionsStatement = [
+      \ 'group',
+      \ 'images',
+      \ 'fonts',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'externals',
+      \ ]
+let s:collectionsLabel = {
+      \ 'image':       '"filename" keyword',
+      \ 'font':                '"filename" "name"',
+      \ }
+
+" externals
+let s:externalsLabel = {
+      \ 'external':            '"name"',
+      \ }
+
+" spectra
+let s:spectraStatement = [
+      \ 'spectrum',
+      \ ]
+" spectrum
+let s:spectrumLabel = {
+      \ 'name':                '"name"',
+      \ 'color':       '0-255 0-255 0-255 0-255',
+      \ }
+" gradient
+let s:gradientLabel = {
+      \ 'type':                '"keyword"',
+      \ 'spectrum':    '"spectrum_name"',
+      \ }
+let s:gradientStatement = [
+      \ 'rel1',
+      \ 'rel2',
+      \ ]
+" gradient types
+let s:gradientTypes = {
+      \ '"linear"':            '',
+      \ '"radial"':            '',
+      \ '"rectangular"':       '',
+      \ '"angular"':           '',
+      \ '"sinusoidal"':                '',
+      \ }
+
+" styles
+let s:stylesStatement = [
+      \ 'style',
+      \ ]
+" style
+let s:styleLabel = {
+      \ 'name':                '"name"',
+      \ 'base':        '".. default style properties .."',
+      \ 'tag':                 '"tagname" "style properties"',
+      \ }
+
+" color_classes
+let s:color_classesStatement = [
+      \ 'color_class',
+      \ ]
+" color_class
+let s:color_classLabel = {
+      \ 'name':                '"name"',
+      \ 'color':       '0-255 0-255 0-255 0-255',
+      \ 'color2':      '0-255 0-255 0-255 0-255',
+      \ 'color3':      '0-255 0-255 0-255 0-255',
+      \ }
+
+" toplevel
+let s:topStatement = [
+      \ 'fonts',
+      \ 'images',
+      \ 'data',
+      \ 'collections',
+      \ 'spectra',
+      \ 'styles',
+      \ 'color_classes',
+      \ 'externals',
+      \ ]
+
+" images image storage method
+let s:imageStorageMethod = {
+      \ 'COMP':                '',
+      \ 'RAW':         '',
+      \ 'USER':                '',
+      \ 'LOSSY':       '0-100',
+      \ }
+" image middle types
+let s:imageMiddleTypes = {
+      \ '0':           '',
+      \ '1':           '',
+      \ 'NONE':                '',
+      \ 'DEFAULT':     '',
+      \ 'SOLID':       '',
+      \ }
+" image scale hint
+let s:imageScaleHint = {
+      \ '0':           '',
+      \ 'NONE':                '',
+      \ 'DYNAMIC':     '',
+      \ 'STATIC':      '',
+      \ }
+
+" part types
+let s:partTypes = {
+      \ 'TEXT':                '',
+      \ 'IMAGE':       '',
+      \ 'RECT':                '',
+      \ 'TEXTBLOCK':   '',
+      \ 'SWALLOW':     '',
+      \ 'GRADIENT':    '',
+      \ 'GROUP':       '',
+      \ 'BOX':         '',
+      \ 'TABLE':        '',
+      \ 'EXTERNAL':     '',
+      \ }
+" part effects
+let s:partEffects = {
+      \ 'NONE':                        '',
+      \ 'PLAIN':               '',
+      \ 'OUTLINE':             '',
+      \ 'SOFT_OUTLINE':                '',
+      \ 'SHADOW':              '',
+      \ 'SOFT_SHADOW':         '',
+      \ 'OUTLINE_SHADOW':      '',
+      \ 'OUTLINE_SOFT_SHADOW': '',
+      \ 'FAR_SHADOW':  '',
+      \ 'FAR_SOFT_SHADOW':     '',
+      \ 'GLOW':        '',
+      \ }
+" part select_mode
+let s:partSelectMode = {
+      \ 'DEFAULT':             '',
+      \ 'EXPLICIT':            '',
+      \ }
+" part ignore flags 
+let s:partIgnoreFlags = {
+      \ 'NONE':                '',
+      \ 'ON_HOLD':     '',
+      \ }
+" part pointer mode
+let s:partPointerMode = {
+      \ 'AUTOGRAB':     '',
+      \ 'NOGRAB':      '',
+      \ }
+" part editable_mode
+let s:partEditableMode = {
+      \ 'NONE':                '',
+      \ 'PLAIN':       '',
+      \ 'EDITABLE':    '',
+      \ 'PASSWORD':    '',
+      \ }
+
+" aspect_preference types
+let s:aspectPrefTypes = {
+      \ 'VERTICAL':    '',
+      \ 'HORIZONTAL':  '',
+      \ 'BOTH':                '',
+      \        }
+
+" program transition types
+let s:transitionTypes = {
+      \ 'LINEAR':      '0.0 - 1.0',
+      \ 'SINUSOIDAL':  '0.0 - 1.0',
+      \ 'ACCELERATE':  '0.0 - 1.0',
+      \ 'DECELERATE':  '0.0 - 1.0',
+      \ }
+" program action types
+let s:actionTypes = {
+      \ 'STATE_SET':           '"string" "0.0 - 1.0"',
+      \ 'ACTION_STOP':         '',
+      \ 'SIGNAL_EMIT':         '"string" "string"',
+      \ 'DRAG_VAL_SET':                'float float',
+      \ 'DRAG_VAL_STEP':       'float float',
+      \ 'DRAG_VAL_PAGE':       'float float',
+      \ 'FOCUS_SET':           '',
+      \ }
+" box item types
+let s:boxItemTypes = {
+      \ 'GROUP':       '',
+      \ }
+" box item aspect mode
+let s:boxItemAspectMode = {
+      \ 'NONE':                '',
+      \ 'NEITHER':     '',
+      \ 'VERTICAL':    '',
+      \ 'HORIZONTAL':  '',
+      \ 'BOTH':                '',
+      \        }
+" box layout
+let s:boxLayout = {
+      \ '"horizontal"':                '',
+      \ '"horizontal_homogeneous"':    '',
+      \ '"horizontal_max"':    '',
+      \ '"horizontal_flow"':   '',
+      \ '"vertical"':          '',
+      \ '"vertical_homogeneous"':      '',
+      \ '"vertical_max"':      '',
+      \ '"vertical_flow"':     '',
+      \ '"stack"':             '',
+      \        }
+" table homogeneous mode
+let s:tableHomogeneousMode = {
+      \ 'NONE':                '',
+      \ 'TABLE':       '',
+      \ 'ITEM':                '',
+      \        }
diff --git a/ftdetect/edc.vim b/ftdetect/edc.vim
new file mode 100644
index 0000000..d8cc228
--- /dev/null
+++ b/ftdetect/edc.vim
@@ -0,0 +1,3 @@
+au BufRead,BufNewFile *.edc    set filetype=edc
+au BufRead,BufNewFile *.sma    set filetype=embryo
+au BufRead,BufNewFile *.embryo set filetype=embryo
diff --git a/ftplugin/edc.vim b/ftplugin/edc.vim
new file mode 100644
index 0000000..be4530b
--- /dev/null
+++ b/ftplugin/edc.vim
@@ -0,0 +1,24 @@
+" Vim filetype plugin file
+" Language:         EDC
+" Maintainer:       Viktor Kojouharov
+" Latest Revision:  2006-10-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc< fo< efm< mp<"
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+setlocal commentstring=/*%s*/
+setlocal formatoptions-=t formatoptions+=croql
+setlocal include=^\s*#\s*include
+setlocal efm=edje_cc:%s.\ %f:%l\ %m
+setlocal mp=edje_cc\ %
+
+if exists('&ofu')
+  setlocal ofu=edccomplete#Complete
+  setlocal cfu=edccomplete#Complete
+endif
+
diff --git a/indent/edc.vim b/indent/edc.vim
new file mode 100644
index 0000000..498be4a
--- /dev/null
+++ b/indent/edc.vim
@@ -0,0 +1,83 @@
+" Vim indent file
+" Language:         EDC
+" Maintainer:       Viktor Kojouharov
+" Latest Revision:  2007 02 24
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetEDCIndent()
+setlocal indentkeys=0{,0},!^F,o,O
+
+if exists("*GetEDCIndent")
+  finish
+endif
+
+function s:prevnonblanknoncomment(lnum)
+  let lnum = a:lnum
+  while lnum > 1
+    let lnum = prevnonblank(lnum)
+    let line = getline(lnum)
+    if line =~ '\*/'
+      while lnum > 1 && line !~ '/\*'
+       let lnum -= 1
+      endwhile
+      if line =~ '^\s*/\*'
+       let lnum -= 1
+      else
+       break
+      endif
+    elseif line =~ '^\s*//'
+      let lnum -= 1
+    else
+      break
+    endif
+  endwhile
+  return lnum
+endfunction
+
+function s:count_braces(lnum, count_open)
+  let n_open = 0
+  let n_close = 0
+  let line = getline(a:lnum)
+  let pattern = '[{}]'
+  let i = match(line, pattern)
+  while i != -1
+    if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 
'c\%(CommentL\|Comment\|StringQ\{1,2}\)'
+      if line[i] == '{'
+       let n_open += 1
+      elseif line[i] == '}'
+       if n_open > 0
+         let n_open -= 1
+       else
+         let n_close += 1
+       endif
+      endif
+    endif
+    let i = match(line, pattern, i + 1)
+  endwhile
+  return a:count_open ? n_open : n_close
+endfunction
+
+function GetEDCIndent()
+  let line = getline(v:lnum)
+  if line =~ '^\s*\*' || line =~ '^\s*//' || line =~ '^\s*}'
+    return cindent(v:lnum)
+  endif
+
+  let pnum = s:prevnonblanknoncomment(v:lnum - 1)
+  if pnum == 0
+    return 0
+  endif
+
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
+  endif
+
+  return ind
+endfunction
diff --git a/syntax/edc.vim b/syntax/edc.vim
new file mode 100644
index 0000000..58cd0b0
--- /dev/null
+++ b/syntax/edc.vim
@@ -0,0 +1,235 @@
+" Vim syntax file
+" Language:    EDC
+" Maintainer:  Viktor Kojouharov
+" Last Change: 2007 02 24
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" A bunch of useful keywords
+syn keyword    edcBlock        images data fonts collections group contained
+syn keyword    edcBlock        part parts dragable description contained
+syn keyword    edcBlock        text font fill origin size image contained
+syn keyword    edcBlock        programs program styles style contained
+syn keyword    edcBlock        gradient spectra spectrum contained
+syn keyword    edcBlock        color_classes color_class rel1 rel2 contained
+syn keyword    edcBlock        items item file params externals contained
+syn keyword    edcBlock        map rotation perspective script lua_script 
contained
+
+syn keyword    edcLabel        item name alias min max type effect contained
+syn keyword    edcLabel        mouse_events repeat_events clip_to contained
+syn keyword    edcLabel        x y z confine events scale contained
+syn keyword    edcLabel        ignore_flags precise_is_inside contained
+syn keyword    edcLabel        use_alternate_font_metrics entry_mode contained
+syn keyword    edcLabel        source source2 source3 source4 contained
+syn keyword    edcLabel        source5 source6 multiline pointer_mode contained
+syn keyword    edcLabel        state visible step aspect fixed middle contained
+syn keyword    edcLabel        aspect_preference elipsis image contained
+syn keyword    edcLabel        relative offset to to_x to_y contained
+syn keyword    edcLabel        border border_scale scale_hint color color2 
color3 font size contained
+syn keyword    edcLabel        signal action transition in filter contained
+syn keyword    edcLabel        target after fit align contained
+syn keyword    edcLabel        text smooth inherit tag base style contained
+syn keyword    edcLabel        text_source color_class text_class contained
+syn keyword    edcLabel        spectrum angle spread normal tween contained
+syn keyword    edcLabel        padding prefer weight aspect_mode contained
+syn keyword    edcLabel        options layout position span contained
+syn keyword    edcLabel        homogeneous contained
+syn keyword    edcLabel        on perspective light perspective_on contained
+syn keyword    edcLabel        backface_cull alpha center focus zplane 
contained
+syn keyword    edcLabel        int double string external script_only contained
+
+syn keyword    edcConstant     COMP RAW LOSSY NONE ON_HOLD AUTOGRAB NOGRAB
+syn keyword    edcConstant     TEXT IMAGE RECT TEXTBLOCK SWALLOW GRADIENT GROUP
+syn keyword    edcConstant     NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW
+syn keyword    edcConstant     SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW
+syn keyword    edcConstant     GLOW FAR_SHADOW FAR_SOFT_SHADOW
+syn keyword    edcConstant     STATE_SET ACTION_STOP SIGNAL_EMIT FOCUS_SET
+syn keyword    edcConstant     DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE
+syn keyword    edcConstant     LINEAR SINUSOIDAL ACCELERATE DECELERATE
+syn keyword    edcConstant     VERTICAL HORIZONTAL BOTH BOX TABLE
+syn keyword    edcConstant     EDITABLE PASSWORD "default"
+
+syn keyword    edcTodo         contained TODO FIXME XXX
+
+syn match      edcLabelMatch   "\w\+:" contains=edcLabel
+syn match      edcBlockMatch   "\w\+\_s*{" contains=edcBlock
+syn match      edcBlockMatch   "\w\+\.\a"me=e-2 contains=edcBlock
+" edcCommentGroup allows adding matches for special things in comments
+syn cluster    edcCommentGroup contains=edcTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match      edcSpecial      display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+syn region     edcString       start=+L\="+ skip=+\\\\\|\\"+ end=+"+ 
contains=edcSpecial
+syn match      edcFormat       display "%\(\d\+\$\)\=[-+' 
#0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)"
 contained
+syn match      edcFormat       display "%%" contained
+syn region     edcString       start=+L\="+ skip=+\\\\\|\\"+ end=+"+ 
contains=cSpecial,cFormat
+
+syn match      edcCharacter    "L\='[^\\]'"
+syn match      edcCharacter    "L'[^']*'" contains=edcSpecial
+syn match      edcSpecialError "L\='\\[^'\"?\\abfnrtv]'"
+syn match      edcSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+syn match      edcSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match      edcSpecialCharacter display "'\\x\x\{1,2}'"
+syn match      edcSpecialCharacter display "L'\\x\x\+'"
+
+"when wanted, highlight trailing white space
+if exists("edc_space_errors")
+  if !exists("edc_no_trail_space_error")
+    syn match  edcSpaceError   display excludenl "\s\+$"
+  endif
+  if !exists("edc_no_tab_space_error")
+    syn match  edcSpaceError   display " \+\t"me=e-1
+  endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster    edcParenGroup   
contains=edcParenError,edcIncluded,edcSpecial,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcUserCont,edcUserLabel,edcBitField,edcCommentSkip,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom
+if exists("edc_no_bracket_error")
+  syn region   edcParen        transparent start='(' end=')' 
contains=ALLBUT,@edcParenGroup
+  syn match    edcParenError   display ")"
+  syn match    edcErrInParen   display contained "[{}]"
+else
+  syn region   edcParen        transparent start='(' end=')' 
contains=ALLBUT,@edcParenGroup,edcErrInBracket
+  syn match    edcParenError   display "[\])]"
+  syn match    edcErrInParen   display contained "[\]{}]"
+  syn region   edcBracket      transparent start='\[' end=']' 
contains=ALLBUT,@edcParenGroup,edcErrInParen
+  syn match    edcErrInBracket display contained "[);{}]"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match      edcNumbers      display transparent "\<\d\|\.\d" 
contains=edcNumber,edcFloat,edcOctalError,edcOctal
+" Same, but without octal error (for comments)
+syn match      edcNumbersCom   display contained transparent "\<\d\|\.\d" 
contains=edcNumber,edcFloat,edcOctal
+syn match      edcNumber       display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match      edcNumber       display contained 
"0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match      edcOctal        display contained 
"0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=edcOctalZero
+syn match      edcOctalZero    display contained "\<0"
+syn match      edcFloat        display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match      edcFloat        display contained 
"\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match      edcFloat        display contained 
"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match      edcFloat        display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match      edcOctalError   display contained "0\o*[89]\d*"
+syn case match
+
+if exists("edc_comment_strings")
+  " A comment can contain edcString, edcCharacter and edcNumber.
+  " But a "*/" inside a edcString in a edcComment DOES end the comment!  So we
+  " need to use a special type of edcString: edcCommentString, 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 edcCommentSkip          contained "^\s*\*\($\|\s\+\)"
+  syntax region edcCommentString       contained start=+L\=\\\@<!"+ 
skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=edcSpecial,edcCommentSkip
+  syntax region edcComment2String      contained start=+L\=\\\@<!"+ 
skip=+\\\\\|\\"+ end=+"+ end="$" contains=edcSpecial
+  syntax region edcCommentL            start="//" skip="\\$" end="$" keepend 
contains=@edcCommentGroup,edcComment2String,edcCharacter,edcNumbersCom,edcSpaceError
+  syntax region edcComment             matchgroup=edcCommentStart start="/\*" 
matchgroup=NONE end="\*/" 
contains=@edcCommentGroup,edcCommentStartError,edcCommentString,edcCharacter,edcNumbersCom,edcSpaceError
+else
+  syn region   edcCommentL             start="//" skip="\\$" end="$" keepend 
contains=@edcCommentGroup,edcSpaceError
+  syn region   edcComment              matchgroup=edcCommentStart start="/\*" 
matchgroup=NONE end="\*/" 
contains=@edcCommentGroup,edcCommentStartError,edcSpaceError
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match   edcCommentError         display "\*/"
+syntax match   edcCommentStartError    display "/\*"me=e-1 contained
+
+syn region     edcPreCondit    start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" 
skip="\\$" end="$" end="//"me=s-1 
contains=edcComment,edcCharacter,edcParenError,edcNumbers,edcCommentError,edcSpaceError
+syn match      edcPreCondit    display "^\s*#\s*\(else\|endif\)\>"
+syn region     edcIncluded     display contained start=+"+ skip=+\\\\\|\\"+ 
end=+"+
+syn match      edcIncluded     display contained "<[^>]*>"
+syn match      edcInclude      display "^\s*#\s*include\>\s*["<]" 
contains=edcIncluded
+syn cluster    edcPreProcGroup 
contains=edcPreCondit,edcIncluded,edcInclude,edcDefine,edcErrInParen,edcErrInBracket,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcParen,edcBracket,edcMulti,edcUserLabel
+syn cluster    edcAlphaNum     
contains=edcSpecial,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom,edcString
+syn region     edcDefine       start="^\s*#\s*\(define\|undef\)\>" skip="\\$" 
end="$" end="//"me=s-1 contains=ALLBUT,@edcPreProcGroup
+syn region     edcPreProc      
start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" 
end="$" keepend contains=ALLBUT,@edcPreProcGroup
+
+syn match      edcUserLabel    display "\I\i*" contained
+
+syn include    @edcEmbryo      syntax/embryo.vim
+unlet b:current_syntax
+syn region     edcScript       matchgroup=edcScriptTag start="\<script\_s*{" 
end="}" contains=@edcEmbryo,edcScriptTag
+syn keyword     edcScriptTag    contained script
+
+syn include    @edcLua         syntax/lua.vim
+unlet b:current_syntax
+syn region     edcLuaScript    matchgroup=edcLuaScriptTag 
start="\<lua_script\_s*{" end="}" contains=@edcLua,edcLuaScriptTag
+syn keyword     edcLuaScriptTag contained script
+
+if exists("edc_minlines")
+  let b:edc_minlines = edc_minlines
+else
+  let b:edc_minlines = 50      " #if 0 constructs can be long
+endif
+exec "syn sync ccomment edcComment minlines=" . b:edc_minlines
+"syn sync fromstart
+
+" 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_edc_syn_inits")
+  if version < 508
+    let did_edc_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink edcFormat             edcSpecial
+  HiLink edcCommentL           edcComment
+  HiLink edcCommentStart       edcComment
+  HiLink edcLabel              Label
+  HiLink edcUserLabel          Label
+  HiLink edcConditional                Conditional
+  HiLink edcRepeat             Repeat
+  HiLink edcCharacter          Character
+  HiLink edcSpecialCharacter   cSpecial
+  HiLink edcNumber             Number
+  HiLink edcOctal              Number
+  HiLink edcOctalZero          PreProc  " link this to Error if you want
+  HiLink edcFloat              Float
+  HiLink edcOctalError         edcError
+  HiLink edcParenError         edcError
+  HiLink edcErrInParen         edcError
+  HiLink edcErrInBracket       edcError
+  HiLink edcCommentError       edcError
+  HiLink edcCommentStartError  edcError
+  HiLink edcSpaceError         edcError
+  HiLink edcSpecialError       edcError
+  HiLink edcOperator           Operator
+  HiLink edcStructure          Structure
+  HiLink edcStorageClass       StorageClass
+  HiLink edcInclude            Include
+  HiLink edcPreProc            PreProc
+  HiLink edcDefine             Macro
+  HiLink edcIncluded           edcString
+  HiLink edcError              Error
+  HiLink edcBlock              Function
+  HiLink edcScriptTag          Function
+  HiLink edcLuaScriptTag       Function
+  HiLink edcPreCondit          PreCondit
+  HiLink edcConstant           Constant
+  HiLink edcCommentString      edcString
+  HiLink edcComment2String     edcString
+  HiLink edcCommentSkip                edcComment
+  HiLink edcString             String
+  HiLink edcComment            Comment
+  HiLink edcSpecial            SpecialChar
+  HiLink edcTodo               Todo
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "edc"
+
+" vim: ts=8

-- 


Reply via email to