Skip to content
This repository was archived by the owner on Jun 10, 2018. It is now read-only.

Commit 504fcdf

Browse files
msandersmsanders
msanders
authored and
msanders
committed
added functions for resetting and reloading snippets
1 parent 63a7255 commit 504fcdf

File tree

2 files changed

+43
-8
lines changed

2 files changed

+43
-8
lines changed

doc/snipMate.txt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
*snipMate.txt* Plugin for using TextMate-style snippets in Vim.
22

33
snipMate *snippet* *snippets* *snipMate*
4-
Last Change: July 13, 2009
4+
Last Change: December 27, 2009
55

66
|snipMate-description| Description
77
|snipMate-syntax| Snippet syntax
@@ -198,10 +198,20 @@ look like this: 'snippets/<filetype>/<trigger>.snippet'. If the snippet has
198198
multiple matches, it should look like this:
199199
'snippets/<filetype>/<trigger>/<name>.snippet' (see |multi_snip|).
200200

201-
*ResetSnippets()*
202-
The ResetSnippets() function removes all snippets from memory. This is useful
203-
to put at the top of a snippet setup file for if you would like to |:source|
204-
it multiple times.
201+
ResetAllSnippets() *ResetAllSnippets()*
202+
ResetAllSnippets() removes all snippets from memory. This is useful to put at
203+
the top of a snippet setup file for if you would like to |:source| it multiple
204+
times.
205+
206+
ResetSnippets({filetype}) *ResetSnippets()*
207+
ResetSnippets() removes all snippets from memory for the given filetype.
208+
209+
ReloadAllSnippets() *ReloadAllSnippets()*
210+
ReloadAllSnippets() reloads all snippets for all filetypes. This is useful for
211+
testing and debugging.
212+
213+
ReloadSnippets({filetype}) *ReloadAllSnippets()*
214+
ReloadSnippets() reloads all snippets for the given filetype.
205215

206216
*list-snippets* *i_CTRL-R_<Tab>*
207217
If you would like to see what snippets are available, simply type <c-r><tab>

plugin/snipMate.vim

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
" File: snipMate.vim
22
" Author: Michael Sanders
3-
" Version: 0.83
3+
" Version: 0.84
44
" Description: snipMate.vim implements some of TextMate's snippets features in
55
" Vim. A snippet is a piece of often-typed text that you can
66
" insert into your document using a trigger word followed by a "<tab>".
@@ -91,10 +91,35 @@ fun! ExtractSnipsFile(file, ft)
9191
endfor
9292
endf
9393

94-
fun! ResetSnippets()
94+
" Reset snippets for filetype.
95+
fun! ResetSnippets(ft)
96+
let ft = a:ft == '' ? '_' : a:ft
97+
for dict in [s:snippets, s:multi_snips, g:did_ft]
98+
if has_key(dict, ft)
99+
unlet dict[ft]
100+
endif
101+
endfor
102+
endf
103+
104+
" Reset snippets for all filetypes.
105+
fun! ResetAllSnippets()
95106
let s:snippets = {} | let s:multi_snips = {} | let g:did_ft = {}
96107
endf
97108

109+
" Reload snippets for filetype.
110+
fun! ReloadSnippets(ft)
111+
let ft = a:ft == '' ? '_' : a:ft
112+
call ResetSnippets(ft)
113+
call GetSnippets(g:snippets_dir, ft)
114+
endf
115+
116+
" Reload snippets for all filetypes.
117+
fun! ReloadAllSnippets()
118+
for ft in keys(g:did_ft)
119+
call ReloadSnippets(ft)
120+
endfor
121+
endf
122+
98123
let g:did_ft = {}
99124
fun! GetSnippets(dir, filetypes)
100125
for ft in split(a:filetypes, '\.')
@@ -147,7 +172,7 @@ fun! TriggerSnippet()
147172
" the snippet.
148173
if snippet != ''
149174
let col = col('.') - len(trigger)
150-
sil exe 's/\V'.escape(trigger, '/.').'\%#//'
175+
sil exe 's/\V'.escape(trigger, '/\.').'\%#//'
151176
return snipMate#expandSnip(snippet, col)
152177
endif
153178
endfor

0 commit comments

Comments
 (0)