if !exists('loaded_snippet') || &cp finish endif function! Count(haystack, needle) let counter = 0 let index = match(a:haystack, a:needle) while index > -1 let counter = counter + 1 let index = match(a:haystack, a:needle, index+1) endwhile return counter endfunction function! CArgList(count) " This returns a list of empty tags to be used as " argument list placeholders for the call to printf let st = g:snip_start_tag let et = g:snip_end_tag if a:count == 0 return "" else return repeat(', '.st.et, a:count) endif endfunction let st = g:snip_start_tag let et = g:snip_end_tag let cd = g:snip_elem_delim """ Conditional exec "Snippet once #ifndef ".st."file:substitute(expand('%'),'\\(.\\)','\\u\\1','g')".et."_#define ".st."file".et."_".st.et."#endif /* ".st."file".et."_ */".st.et."" exec "Snippet mark #if 0".st.":D('#pragma mark -')}#pragma mark ".st.et."#endif".st.et."" "" loop exec "Snippet do do{".st.et."} while (".st.et.");" exec "Snippet while while(".st.et."){".st.et."}" exec "Snippet for for(".st."type".et." ".st."var".et."; ".st."condi".et."; ".st.et."){".st.et."}".st.et."" "" condition exec "Snippet if if(".st.et."){".st.et."}".st.et."" exec "Snippet ifelse if(".st.et."){".st.et."}else{".st.et."}".st.et."" """ Build Scope exec "Snippet struct struct ".st."name".et."{".st.":D('/* data */')".et."};".st.et."" exec "Snippet fun ".st."return".et." ".st."function".et."(".st."args".et."){".st.et."}".st.et."" exec "Snippet main int main (int argc, char const* argv[]){".st.et."}".st.et."" " template """ functions exec "Snippet printf printf(\"".st."\"%s\"".et."\\n\"".st."\"%s\":CArgList(Count(@z, '%[^%]'))".et.");".st.et."" exec "Snippet scanf scanf(\"".st."\"%s\"".et."".st."\"%s\":CArgList(Count(@z, '%[^%]'))".et.");".st.et."" exec "Snippet malloc (".st."type".et."*) malloc(sizeof(".st."type".et.")*".st."size".et.");".st.et.""