I'm fairly new to Vim scripting and totally new to filetype
automation, so this problem has me stumped.  I'm running Vim 7 in a
Windows environment.

My project has decided to use XML for configuration files, and the
file extension is .cfg.  Because of the extension, Vim wants to "setf
cfg" in filetype.vim, but I'd like to override that with a "setf xml".
I can do so manually with ":setf xml" after the file loads, but I'd
love to automate that.  And, of course, I have other .cfg files that
are not XML, so I can't use file extension for type detection.  I'd
like to automate this.

The first line of the XML .cfg file looks like:
<?xml version = "1.0" encoding="ISO-8859-1"?>

I have a script (adapted from :help new-filetype-scripts):
if did_filetype()       " filetype already set..
  finish                " ..don't do these checks
endif
if getline(1) =~ '^\<?xml '
  setfiletype xml
endif

and I've placed it in ~/vimfiles/scripts.vim.  (Windows: ~ =
c:\documents and settings\myusername)

I've tried deleting the opening if statement, but doing so had no
effect.

The filetype keeps coming up 'cfg'.  Is my error in the pattern
matching in the script?  Is the script in the wrong place?  When I
open the config file and then run :scriptnames, my scripts.vim file is
not listed, so it doesn't seem to be loading.  Is there another step
I'm missing?

Daryl

Reply via email to