==== Highlighting for Emacs ===== 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 ) ==== Highlighting for Vim ===== There is several settings for Vim for automatic highlighting of Solver Input File Syntax (SIF). \\ - There is an elmer-vim plugin available here https://github.com/ettaka/vim-elmer - Alernatively use the following codes developped by F. Gillet-Chaulet: Under .vim/ folder (should reside in your home-directory), just add: * the following lines to your filetype.vim augroup filetypedetect au BufNewFile,BufRead *.sif setf sif augroup END " * the file sif.vim under .vim/syntax/ 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 else command -nargs=+ HiLink hi def link 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"