Thanks to Carlos Martin and Basile de Fleurian we can offer additional settings for Emacs (a GNU licenses text editor) for automatic highlighting of Solver Input File Syntax (SIF). Just add the following lines to your .emacs
file (should reside in your home-directory):
(require 'generic-x) ;; we need this (define-generic-mode 'sif-mode ;; name of the mode to create '("!" "#") ;; comments start with '!' or "#' '("Header" "Constants" "Material" "End" "Boundary Condition" "Simulation" "Body" "Body Force" "Initial Condition" "Equation") ;; some keywords '(("=" . 'font-lock-operator) ;; This doesn't do anything! ("Solver [0-9]+" . 'font-lock-keyword-face) ;; Highlights Solver sections ("$$" . 'font-lock-builtin) ;; or this! ("Real" "Logical" "String" "Integer" . 'font-lock-type-face) ;; or this ("\\(\$[a-zA-Z]+\\)" . 'font-lock-function-name-face)) '("\\.sif$") ;; files for which to activate this mode "A mode for sif files" ;; doc string for this mode )
There is several settings for Vim for automatic highlighting of Solver Input File Syntax (SIF).
Under .vim/ folder (should reside in your home-directory), just add:
augroup filetypedetect au BufNewFile,BufRead *.sif setf sif augroup END "
if version < 600 syn clear elseif exists("b:current_syntax") finish endif syn case ignore syn keyword SifType Real Integer Logical String File Procedure MATC syn match SifNumber display "[+-]\=\<\d\+\>" syn match SifFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>" syn match SifFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>" syn region SifString start=+"+ end=+"+ oneline syn match SifComment "!.*" syn region SifSolvers start="Linear" end="=" syn region SifSolvers start="nonlinear" end="=" syn match SifSolverHeader "Exec\s*Solver\s*=" syn match SifSolverHeader "Variable\s*=" syn match SifSolverHeader "Variable\s*Dofs\s*=" syn match SifSolverHeader "Equation\s*=" syn match SifSolverHeader "procedure\s*=" syn match SiftargetBC "Target\s*Boundaries\s*=" syntax match MatcFunction "\$\sfunction" syn keyword SifUnit Simulation Header End syn match SifUnit "Body\s*\d\+" syn match SifUnit "Material\s*\d\+" syn match SifUnit "Solver\s*\d\+" syn match SifUnit "Equation\s*\d\+" syn match SifUnit "Initial\s*Condition\s*\d\+" syn match SifUnit "Body\s*Force\s*\d\+" syn match SifUnit "Boundary\s*Condition\s*\d\+" hi def SifBold cterm=bold if version >= 508 || !exists("did_sif_syntax_inits") if version < 508 let did_sif_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink SifNumber Number HiLink SifFloat Float HiLink SifString String HiLink SifComment Comment HiLink SifUnit Special HiLink SifSolvers Keyword HiLink SifSolverHeader SifBold HiLink MatcFunction SifBold HiLink SiftargetBC SifBold HiLink SifType Type delcommand HiLink endif let b:current_syntax = "sif"