The Arduino IDE automatically generates prototypes for your functions. Unfortunately, this doesn't work for functions whose arguments or return value are types defined in the sketch, since the prototypes get inserted above the type definitions.
I'm not sure there's really a good workaround for this.
The current system uses a regular expression, which is not very reliable.
Probably the best thing to do is use the preprocessor to identify the functions that need prototypes.
It would also be good to be more intelligent about where we place them. Just sticking them underneath any #include's might be a reasonable start, as then you could declare your custom data types in a header file in another tab in your sketch.
Documenting the known failures is a great idea. I'll try to add it to the troubleshooting guide.
what about making this as a library? from what i understand, arduino doesnt do much with libraries other than include them.