So how does this behave for files that don't start with a `@(` or `@*` but are still template files? Can the user override this and force Eclipse to open the file as template file? I'm afraid that `@(`and `@*` don't cover a significant enough majority of templates files. Maybe it would be sufficient to just check that the first non-whitespace character is an `@`, because templates can start with:

* `@*`
* `@(`
* `@identifier`
* `@import`
* `@{`
* `@for`

(technically, any given string is a valid template, but I believe the above are the important distinguishing features.)

As far as I can tell (by looking at http://www.w3.org/TR/2006/REC-xml11-20060816/#sec-well-formed), XML must always start with a `<`, so, as another solution, maybe it'd be sufficient to have the logic be "yes, this is a valid template file if the first non-whitespace character isn't an `<`" ?