>> Your particular situation is also going to be difficult because >> cindent() will look at context beyond the C code you want it to look at. >> It will essentially try to return the indent the line would have if the >> whole file were cindented. > > Hm. Is this true? I would have thought that it would only look up at > the preceding line, and see what new things happened on that line...
I'm not exactly sure, but you're at least partly right, Matt. It only looks back as far as it needs to, to determine if the preceding text ends a statement, or something like that. >> Solving this will be tough, and I'm not sure what approach >> would be best. Two possible solutions I can see are both very nasty: (1) >> writing the C indenting functionality in Vimscript yourself; or (2) >> copying the chunks of C code into another buffer, outdenting according >> to the current XML indent, running cindent on it, then returning the >> appropriate indent plus the current XML indent. > > A third option (which would only work if my belief about cindent only > looking back one line is true) would be to see if the previous line > matches /<