Forum: CFEngine Help
Subject: Re: CFEngine Help: Thoughts about some cfengine design decisions?
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,24294,24415#msg-24415

Jesse Becker Wrote:
-------------------------------------------------------
> Would it be possible to publish the regexes uses
> for syntax highlighting?  (Yes, I understand that it will
> change over time).

I'm working on expanding the vim syntax highlighter, and have this chunk of 
stuff which includes some comments to pull the list of keywords and whatnot 
from the current source code.


syn keyword cf3BundleTypes common agent server monitor executor knowledge 
runagent reporter keygenerator hub contained
syn keyword cf3BodyTypes   action classes contain copy_from delete 
delete_select depth_search edit_defaults file_select link_from perms 
process_count process_select rename contained
syn match   cf3Bundle      /^\s*bundle\s.*$/ contains=cf3BundleTypes
syn match   cf3Body        /^\s*body\s.*$/ contains=Cf3BodyTypes
syn match   cf3Comment     /#.*/ contains=TODO
syn match   cf3Identifier  /=>/
syn region  cf3Promise start=/\s*"/ end=/;/ skip=/"[^"]*;[^"*]"/ 
contains=cf3LHS,cf3String,cf3Type
" For actions e.g. reports:, commands:
" list generated based upon TYPESEQUENCE array in src/agent.c
syn match   cf3Action      
/^\s*\zs\(classes\|commands\|databases\|environments\|files\|interfaces\|methods\|outputs\|packages\|processes\|reports\|services\|storage\|vars\)\ze\:/
" list genreated based upon EDITLINETYPESEQUENCE array in src/files_editline.c
syn match   cf3FileAction  
/^\s*\zs\(vars\|classes\|delete_lines\|field_edits\|insert_lines\|replace_patterns\|reports\)\ze\:/
" class selectors
syn match   cf3Class       /^\s*\zs{}]\+\ze::/
" Escape sequences in regexes
syn match   cf3Esc         /\(\.[\+\*]\|\\\)[\+\*]\{0,1\}/ contained
" Array indexes contained in [].  Does not seems to be working.
syn region  cf3Array       start=/\[/ end=/\]/ contained contains=cf3Var
" Variables wrapped in {} or ()
syn region  cf3Var         start=/\$[{(]/ end=/[})]/ contained 
contains=cf3Var,cf3Array
syn region  cf3List        start=/@[{(]/ end=/[})]/ contained
syn region  cf3String      start=/"/ skip=/\\"/ end=/"/ 
contains=cf3Var,cf3Array,cf3Esc,cf3List
syn keyword cf3Type        int ilist string slist float real rlist
syn keyword cf3OnOff       on off yes no true false
" LHS list extracted from attributes.c using sed command:
" echo $( { sed -n 's/^.*Get*Constraint(.*"\([^"\*]*\)".*/\1/p' 
src/attributes.c; sed -n 
's/^.*{\s*"\([^"\*]*\)"\s*,\s*cf_.*/\1/p;s/^\s*{\s*"\*"\s*,\s*"\([^"\*]*\)".*/\1/p'
 src/mod_*.c; } | sort -u )
syn keyword cf3LHS         abortbundleclasses abortclasses ...truncated...


The keyword list is long and thus truncated...

It's not yet ready to contribute to the community vim site, as I'm having some 
challenges with hilighting the way I want within contained regions.  So Neil 
will be getting an email from me eventually, but not until I get the last few 
bugs worked out.  Until then, this should provide a good start for someone 
doing syntax highlighting.

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to