*xpt-api* This file describes the public functions provided by XPTemplate which can be used in snippets. *g:XPTaddBundle()* g:XPTaddBundle({filetype}, {bundle}) Load a bundle. {filetype} is the current buffer file type in most case. And {bundle} is the file name which supplies the bundle. For example loading jquery bundle for HTML buffer(or JAVASCRIPT buffer): > call g:XPTaddBundle('javascript', 'jquery') < *XPTfuncs()* g:XPTfuncs() g:XPTfuncs() returns a |Dictionary| container of functions which can be used in templates in the current buffer. The normal usage of g:XPTfuncs() to define a template function is : > let s:f = g:XPTfuncs() fun! s:f.date() dict return strftime("%Y %b %d") endfunction < Now you can use functions and variables in the template : > call XPTemplate("filehead", [ \'/**--------------------/// `sum^ \\\----------------------', \' *', \' * @version : `1.0^', \' * @since : `date()^', \' * @author : `$author^ | `$email^', \' * @copyright `.com.cn^ ', \' * @TODO : ', \' * ', \' *---------------------\\\ `sum^ ///----------------------*/', \'']) < *XPTemplate()* XPTemplate({name} [, {context}], {template}) XPTemplate defines a template for the current buffer. It takes 2 or 3 parameters: {name} is a string representing the key to trigger this template. {context} can be omitted or an |Dictionary| which defines where this template can be triggered. For now only "syn" is supported. {template} is a string or |List|. |List| will be joined with "\n" forming a template string. This saves you adding "\n" to each line. *XPTemplateMark()* XPTemplateMark({leftmark}, {rightmark}) XPTemplateMark defines which characters are used as item quoter in the current buffer. See |xpt-placeholder-mark|. NOTE this function affects only the current script and current buffer. *XPTemplatePriority()* XPTemplatePriority({priority}) XPTemplatePriority sets the default priority for the current *.xpt.vim script and current buffer. See |xpt-priority-value|. NOTE this function affects only the current script and current buffer. *self.renderContext* *xpt-snippet-function-ctx* The template context can be accessed from within an |xpt-snippet-function|. For example in the "item-reference" function: > fun! s:f.R(name) let ctx = self.renderContext if has_key(ctx.namedStep, a:name) return ctx.namedStep[a:name] endif return a:ctx.name endfunction < *XPTtgr()* XPTtgr( {snippetName} [, {option} ] ) Trigger an snippet of name {snippetName} in insert mode. This function returns and |i_CTRL-R_=| expression. You should always use this function following "=". As Example, the following two command defines auto-complete brace: > call XPTemplate('brace', '{`^}') inoremap { =XPTtgr('brace') < After executing these 2 command, a "{" key-stroke produces a pair of braces: "{}" and cursor left between them. Table below lists all {option} keys: > {option}.syn Regular expression defines pattern what syntax name must match for snippet to trigger. {option}.nosyn Regular expression defines pattern what syntax name must NOT match for snippet to trigger. {option}.literal Snippet can only be triggered in string or comment. Same as {option}.syn='\V\cstring\|comment'. {option}.noliteral Snippet can only be triggered outside of string or comment. Same as {option}.nosyn='\V\cstring\|comment'. {option}.k What should be produced if condition is not satisfied to trigger snippet. < *XPTemplateTrigger()* XPTemplateTrigger( {snippetName} [, {option} ] ) Deprecated. Same as |XPTtgr()|. *XPTinfo()* XPTinfo() Return 0 if no snippet in processing on screen. Return an array representing snippets stack on screen in following format: > [ { "$snipname" : "", "$phname" : "" }, ... ] < In outer-to-inner order *XPTinfoStr([fmt,[sep]])* XPTinfoStr([fmt,[sep]]) Return data of |XPTinfo()| in string. Argument "fmt": format for rendering infomation of each nested snippet in stack. Default value is "$snipname.$phname". Argument "sep": string as a separator. Default value is " > ". By default XPTinfoStr() returns: > ". > ...." < Example: Adding this function to 'statusline' as a indicator when working with deeply nested snippets: > let &statusline .= '%{XPTinfoStr()}' < " vim:tw=78:ts=8:sw=8:sts=8:noet:ft=help:norl: