On 2019/06/11 01:55, Eric Deplagne wrote: > On Sun, 09 Jun 2019 14:39:36 -0700, L A Walsh wrote: > >> I hand formatted it, and substituted in the value >> of the define: ",close(". But the problem is since the compiler >> handles the above, shouldn't 'indent' be able to as well? >> > > Clearly, a #define with both "," and "(", NO. > ?clearly? Clearly it doesn't and maybe you are saying it cannot, but whether or not it 'should' would depend on one's goals or what one wants to accomplish in the program. > Just remember the preprocessor can do almost any dirty trick > (is cpp formally turing complete or not ?). > I would have no idea if any given instance of cpp is formally or informally turing complete. Given the things one can do in macro languages as a form of declarative programming, I wouldn't doubt that someone might be able to prove it so, but I'm not sure how that would help w/the problem.
I thought the easiest way might be to have indent put markers around defines so that once a substitution was done, indent could do its normal processing and could find the markers and undo the substitution, resulting in something that should achieve that desired goal. However, I'd admit it was alot of work for what might be edge cases, so it really depends on how compete the implementor wants indent to be as compared to what a 'c' compiler handles. Whether it is fixed or not, isn't going to affect me much, as I don't use such convoluted constructs, as a general rule, in my own code (too much headache in maintenance later trying to figure out what I was doing!) As far as useful fixes, I'd much prefer to have had the RFE I submitted looked at, but I sorta realized it wasn't likely to happen after no comment(s) for a few months....*oh well*....supporting old SW is just really no fun if one has moved on to other things...and if it is no fun, how can you get motivated on something one did "on the side". FWIW, the RFE I was talking about -- was the RFE I'll copy in below, but I'm not doing so much in C these days, so its probably not that important now either. Still, the above obfuscated code might make a good test case if it ever got to the point of being tested... :-) ---- -------- Original Message -------- Subject: Fwd: RFE: option to 'cuddle' bracketless targets of conditional statements Date: Mon, 23 Jan 2017 21:46:43 -0800 From: L A Walsh <ind...@tlinx.org> To: bug-indent@gnu.org I didn't see this option in my version of 'indent' (GNU indent 2.2.10), so forgive me if it is already there, but would it be possible to add an option to put or keep things like: if (done) return done; if (done) return done; for(i=0; i<100; ++i) printf("%d\n", i); while (! done) done=get_status(); on 1 line? Primarily thinking about bracketless targets that follow a conditional that easily fit on 1 line. Thanks! _______________________________________________ bug-indent mailing list bug-indent@gnu.org https://lists.gnu.org/mailman/listinfo/bug-indent