As for the "code configurator", hmm how useful is it really? I always find it hard how you could "abstract" the concept of an interrupt in a code generator. I can understand it's useful to get basic init & clock stuff running, but interrupts.. it's not really doing much work.. just generating some framework code.
I don't use it. Just write the C code yourself. MPLAB X is not going to "override" code; it may include some C startup and a linker file in the background but that is happening in every compiler. You can replace it in the linker settings, so no woes there.
As with any code generator or translator I've ever encountered in my career it's a mixed blessing.
O It's quite buggy
O You have to know and understand the peripherals anyway, there is no way around this
O It generates code as a full 8 bit register settings, not using bitfields, therefore it's not easily human-readable
O Far, far, far too much useless and unnecessary commentary, especially in the source file headers
O Does not generate the most efficient code
O It doesn't support the latest devices, or even some older ones properly
O Peripherals often not fully implemented in the UI
O Stupid merge nonsense means your bug fixes are overwritten and so is your application specific code far too easily: there is no clear way to define your own code sections distinct from machine generated nonsense.
Having said all that, I do use it sometimes though to generate boilerplate code in a dummy project, possibly even unit test it there, then copy and paste relevant bits into my own code and tidy it up to my own standards (using bitfields for example).
O Did I mention it's buggy?
Overall, it's a positive, but not by much. I consider it completely useless for maintaining code ongoing for example, it's just too likely it'll scrub your carefully hand coded sections away, and I strongly object to being forced to code up my own stuff in someone else's format. But it's OK for getting a few peripherals initialised, and copying and pasting that code into your own project.
O Oh, and it's a quite buggy.
Anyone who thinks this is the answer the Arduino crowd's been looking for has been misled. You simply can't ignore the fact that you still have to understand what each peripheral is capable of and its little intricacies.