When using snipmate + vim, is it possible to have many snippet files load for a given language/filetype?
Ex:
snipmate comes with javascript.snippets
I've also loaded the mootools snippets and added this to my vimrc:
autocmd FileType javascript set ft=javascript.mootools
Now I can use
I want to add a 3rd set of snippets, javascript.myCustomSnippets
, that will also load for the filetype javascript
.
When I try to add my custom snippets using something like this
autocmd FileType javascript set ft=javascript.myCustomSnippets
it overwrites/disables the mootools snippets, however the default javascript snippets continue to work.
How do I accomplish this, or is it possible?
ps: I know I could just add my snippets to the default javascript snippets file, but since I have the snipmate github repo synced inside my .vim/bundle/
folder, I want to keep the personal stuff separate from the live repo.
My Solution
The specific solution that finally got my files working side-by-side was to structure my files like this (by the way, I'm using pathogen to auto-load the bundle
dir)
~/.vim/bundles/
snipmate.vim/snippets/javascript.snippet
vim-snippets.mootools/snippets/mootools.snippet
vim-snippets.myCustomSnippets/snippets/javascript.snippets
By naming my file "javascript.snippets" it's auto-loaded along with the defaults.
Ruy Diaz is right about the personal stuff, you can keep all of your own snippets in "~/.vim/snippets" and you won't have any problems with the github repo. If this is not working for you, the g:snippets_dir
variable might have the wrong value -- just set it explicitly in your vimfiles.
As for combining several snippets, you can use the ExtractSnipsFile
function. That should do what you want without messing around with dotted filetype syntax.
Let's say you have the following three snippet files, all in your snippet directory:
Create a file "after/plugin/snippets.vim" and place the following in it:
call ExtractSnipsFile(g:snippets_dir.'javascript.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'mootools.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'myCustomSnippets.snippets', 'javascript')
This will associate all of these snippets with the javascript
filetype, no explicit autocommands needed. For more information, you can try :help ExtractSnipsFile
.