1

I'm using vim to try a template system named handlebars, and I installed a vim plugin to get some syntax-highlighting for *.handlebars. I can get coloration if I do this : :set filetype=handlebars, but when I open a template, it is monochrome. My .vim folder looks like this:

.
|-- autoload
|   `-- pathogen.vim
|-- bundle
|   |-- handlebars
|   |   |-- example.handlebars
|   |   |-- ftdetect
|   |   |   `-- handlebars.vim
|   |   |-- ftplugin
|   |   |   `-- handlebars.vim
|   |   |-- indent
|   |   |   `-- handlebars.vim
|   |   |-- MIT-LICENSE
|   |   |-- README.md
|   |   `-- syntax
|   |       `-- handlebars.vim

What can I try to get automatic filetype detection?

Here is the content of handlebars.vim :

if has("autocmd")
  au BufNewFile,BufRead *.handlebars,*.hbs set filetype=handlebars
endif

I think I have autocmd, because :autocmd outputs something.

UPDATE

Here is the content of my .vimrc :

call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
syntax on
set softtabstop=2 
set shiftwidth=2
set tabstop=2
set expandtab
set number
set background=dark
set laststatus=2 
set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
colorscheme solarized
filetype on
filetype plugin on

Here is my .vim folder if someone wants to take a look at it : https://github.com/greg0ire/dotvim

2 Answers 2

2

First. When editing one of your .hbs, or .handlebars files, issue :set ft? in vim, and see if your filetype is being detected.

If you don't see filetype=handlebars, try setting :filetype on in your .vimrc file and test again.

If that doesn't work, you may need to put a filetype.vim file in your .vim directory.

if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au! BufRead,BufNewFile *.hbs,*.handlebars setf handlebars
augroup END

save this as $HOME/.vim/filetype.vim

  • that's really 'filetype.vim', not handlebars.vim, in the .vim directory.

Then try that :set ft? again, in a new vim session.

Your handlebars.vim file, in the $HOME/.vim/ftplugin directory should contain the syntax rules for whatever you want displayed when you're editing a .hbs file, like this one here.

7
  • Thanks for your answer, it was useful. I updated my question with my .vimrc , which already had the filetype on directive in it (without the colon, but I think that's normal, isn'it?) putting the filetype.vim in my .vim folder did the trick! Now what if I want to add another coloration plugin? Should I add more things in this file? Or was this all for debugging purposes and are you going to give me a better solution?
    – greg0ire
    Commented Oct 2, 2011 at 9:57
  • I added a link to my .vim folder on github in my question, so now you can have a look at it.
    – greg0ire
    Commented Oct 2, 2011 at 10:18
  • To add new filetypes, just put the $filetype.vim file in your .vim/ftplugin/ directory, and then add another au! line to your .vim/filetype.vim file, between the augroup filetypedetect and augroup END lines. Commented Oct 2, 2011 at 13:05
  • I think it is the purpose of this file : github.com/greg0ire/dotvim/blob/master/bundle/handlebars/… The code you made me write in filetype.vim looks like a duplicate of it. What I would like is have this piece of code run. I think it is the purpose of the filetype plugin on directive, isn't it?
    – greg0ire
    Commented Oct 2, 2011 at 13:09
  • I actually meant this file : github.com/nono/vim-handlebars/blob/master/ftdetect/…
    – greg0ire
    Commented Oct 2, 2011 at 13:17
1

I finally found the answer myself. The two pathogen calls at the top of my .vimrc file do something that is not sufficient to take coloration into account. Using this call did the trick:

call pathogen#infect()

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .