Hi Guys,
Further thoughts on how to allow variations on the commands associated with a filetype, I would propose having a concept of a variant of a filetype. This is just extra information determined from a subset of the filetypes extensions. It can be implemented fully configurable from the filetypes.xxx file so no hard coded magic. An extract of the extended filetypes.c below shows what I mean:
[settings] # list of the variants supported variants=hdrs
# definition of how the variant is detected, list of extension patterns [variants] hdrs=*.h
# default build settings for no variants [build_settings] compiler=gcc -Wall -c "%f" linker=gcc -Wall -o "%e" "%f" run_cmd="./%e"
# buld settings for variant hdrs [build_settings_hdrs] compiler=gcc -Wall -c "%f" # no linker or run for headers
This is backward compatible with existing filetypes .c because the default [build_settings] is still there and the same.
The document has a pointer to the variant information so the build menu can be set from it per file.
Attached is a patch against the build-system branch revision 3195 which was before header filetypes changes. It gives you an idea of the amount of code needed to set the variant commands, not too much really and fairly localised. Obviously saving/restoring and using them is part of the upcoming build system changes so the patch does nothing visible.
Other variants can be defined, which I suspect could be useful when some of the upcoming incompatible language changes hit eg python 3 & perl 6 so that commands can vary with dialect.
Cheers Lex