@Sandra: I believe I've found the cause for this and some other unexplained changes..
The following code causes spaces to be used instead of tabs for the indents in the array instance:
typedef struct {
int aInt;
char aChar;
} a_struct_t;
a_struct_t a_struct[] = {
{0, 'a'},
{1, 'b')
};
I think it's the use of '{}' to group the data which causes SE to override the tab setting. If another line is added, either at the end or between the existing lines, SE still uses spaces even if the other lines are manually changed to tabs.
This in itself is should just be an irritant, but if it's at the start of a file (where these things normally go) then SE may see it first when it scans the file for adaptive formatting. I'm unsure what happens here, but it looks like SE takes the first indent it comes across and makes assumptions about the file from that.
The result is that if the above array is first in the file (i.e the struct definition is in a separate file - the header, say) then SE will use 9 spaces for tabs. If the struct definition is in the same file then this doesn't occur because the first indent SE sees is the definition, and for that SE will have used the normal tab indent.
Hope that makes sense. I can try rephrasing if I confused you