Hello, Po. On Mon, Feb 13, 2023 at 23:25:43 +0800, Po Lu via CC-Mode-help wrote: > Package: cc-mode > 2011 Standard C has a feature that works like `switch', except on the > type of an expression and with different syntax. Yuck! How on Earth did something like this get included in the standard? It's not used often (I wasn't aware of it until three days ago), it's wholly unlike anything else in C, and just takes up effort from compiler and editor maintainers. > Today, I had to figure out how to port some code written with that in > mind to ANSI C, and surprisingly enough, found that CC Mode does not > support that feature at all. :-) > Code making use of _Generic looks more or less like this: > { > const char *typename = _Generic ((expr), > const char *: > "const char *", > int: > "int", > unsigned long: > "unsigned long" > default: > NULL); > } > where `typename' is set to an appropriate value based on the type of the > expression ``expr''. > CC Mode already works remarkably well, but it should be taught to indent > the cases separately from the values. Thanks! I've made a first patch for this, which is fairly crude. It handles only the indentation, not the fontification, which will be more difficult. Would you please try out the attached patch, and let me know how well it does the job. Thanks! [ .... ] -- Alan Mackenzie (Nuremberg, Germany).