FEKO syntex for VIM
FEKO 的 VIM 语法高亮
2011-04-15
这段时间用 FEKO 建了许多模型,例如上面这个 Koch 曲线的分形天线模型。 由于 FEKO Editor 本身不帯语法高亮,于是在 vim 中高亮了关键词,并且做了一些辅助功能。
 1 augroup FEKO
 2 autocmd!
 3 autocmd BufNewFile,BufRead *.pre set filetype=feko
 4 autocmd BufNewFile,BufRead *.qf set filetype=feko
 5 autocmd filetype qf call HighlightFekoLog()
 6 autocmd filetype feko call Feko()
 7 augroup END
 8 
 9 function! Feko()
10     set syntax=feko
11 
12     syn case ignore
13     syn match fekoComment '^\*\*.*$'
14     syn match fekoNumber  '\<[+-]\?\d\+\(\.\d\+\)\?\([eE][+-]\?\d\+\)\?\|\<[+-]\?\.\(\d\+\)\?\([eE][+-]\?\d\+\)\?'
15     syn region fekoString start=+L\="+ end=+"+
16     syn match fekoError '^\s\+.*$'
17 
18     syn match fekoMacro '^!!\s*\w\S\+'
19     syn match fekoCard  '^\w\S'
20     syn keyword fekoFunction then sin cos tan cot arcsin arccos
21     \ atan2 arccot sinh cosh tanh besj besy besi
22     \ besk sqrt log ln exp abs deg rad step ceil
23     \ floor max min fmod x_coord y_coord z_coord
24     \ fileread and or not defined
25     syn match fekoCompare '[<>]=\?\|=\|<>'
26     syn match fekoVar '#\w\+'
27     syn match fekoConstant '\#\(pi\|eps0\|mu0\|c0\|zf0\|true\|false\)'
28     hi def link fekoComment  Comment
29     hi def link fekoString   String
30     hi def link fekoError    Error
31     hi def link fekoNumber   Number
32     hi def link fekoMacro    Macro
33     hi def link fekoCard     Statement
34     hi def link fekoFunction Operator
35     hi def link fekoCompare  Operator
36     hi def link fekoConstant Constant
37     hi def link fekoVar      Identifier
38 
39     let b:current_syntax = "feko"
40 
41     " setlocal makeprg=runfeko\ %\ --run-from-gui
42     setlocal makeprg=runfeko\ %
43 
44     let b:current_compiler = "feko"
45     endfunction
46 
47 function! HighlightFekoLog ()
48     syn case ignore
49     syn match fekoLogError   '^\W*error.*$'
50     syn match fekoLogWarning '^\W*WARNING.*$'
51     syn match fekoLogNote    '^\W*NOTE.*$'
52     syn match fekoLogPrint   '^\W*PRINT.*$'
53 
54     hi def link fekoLogError   Error
55     hi def link fekoLogWarning Macro
56     hi def link fekoLogNote    Comment
57     hi def link fekoLogPrint   Comment
58 endfunction