views:

77

answers:

3

I have the following in my .vimrc:

au BufNewFile,BufRead *.pt set filetype=xml

This is needed because although I'm editing a file with *.pt extension, it's indeed a valid xml file: setting the filetype like this I can have syntax highlighting.

I'm using vim's snipmate plugin, and tried to create pt.snippets to specific needs since these files are Zope Page Templates (ZPT with TAL).

Now, I have a problem: I don't want to create these snippets in xml.snippets, since they aren't really generic xml snippets, but my *.pt files are set to xml, so when I define my pt snippets they aren't loaded unless I run :set filetype=pt on my pt file on vim - but then I lose syntax highlighting.

I would like to be able to have a pt file, with xml syntax highlighting, to be able to load a pt.snippets file from snipmate. How can I do it?

(I would like to avoid putting my snippets in a generic snippet file, I would like it to be present only in pt.snippets to be easier to maintain.)

+1  A: 

How about?:

autocmd BufNewFile,BufRead *.pt setlocal filetype=pt
autocmd BufNewFile,BufRead *.pt setlocal syntax=xml
Curt Nelson
"setlocal" doesn't work, but doing "autocmd BufNewFile,BufRead *.pt set filetype=pt" works. Can you explain why?
Somebody still uses you MS-DOS
I'm not sure why it doesn't work for you. The above 'autocmd's along with a very simple `pt.snippets` seem to be working for me (Vim 7.2, snipMate 0.83). If you run the above commands (just the "setlocal..." part) by hand, does it work as expected?
Curt Nelson
Yes, it works... but strange enough, I have a colorscheme named "molokai". When I run the first command (filetype=pt), it loses the colorscheme. When I run "syntax=xml", it recovers a colorscheme, but instead of molokai I think it gets the standard vim xml syntax.
Somebody still uses you MS-DOS
+1  A: 

Snipmate allows for dotted 'filetype' syntax, try:

au BufNewFile,BufRead *.pt set filetype=xml.pt

jinfield
+1  A: 

the syntax is notoriously finnicky for not wanting to support two concurrent filetypes (actually, someone asked this same question yesterday)

au BufRead *.pt set filetype=xml.pt
au BufNewFile *.pt set filetype=xml.pt

jinfield's answer is actually spot-on, but I have had the comma-syntax fail on some versions of vim

sleepynate
sleepynate, thanks for answering. Strange enough, jinfields answer is working!! Don't know why it wasn't before, I think I did something wrong... thanks anyway for your comma-syntax suggestion.
Somebody still uses you MS-DOS
Yea, no problem. I have had the same issue with it failing when wanting to use both php and html snippets in CakePHP templates.
sleepynate