" The next function was based on s:function and s:add_methods in fugitive " function! snipmate#util#add_methods(sfile, namespace, methods) abort let dict = {} for name in a:methods let dict[name] = function(join([matchstr(a:sfile, '\d\+'), \ a:namespace, name], '_')) endfor return dict endfunction function! snipmate#util#eval(arg) try let ret = eval(a:arg) catch echohl ErrorMsg echom 'SnipMate:Expression: ' . v:exception echohl None let ret = '' endtry return type(ret) == type('') ? ret : string(ret) endfunction function! snipmate#util#tabwidth() if &sts > 0 return &sts else return exists('*shiftwidth') ? shiftwidth() : &sw endif endfunction