MPLAB X and Python
I am certainly not a power user, but I discovered a nice feature which may be helpful to others. I have a client who needs to be able to recompile my project with changing parameters. The relationship between these parameters is complex enough that it is very difficult -- maybe even impossible -- to handle with C macros. Some may eventually need to be calculated iteratively. The simple answer is to give the customer a single text file in the project with embedded instructions on how to set the parameters.
Then in the build options of the project configuration I select "execute this line before the build". In that line I simply call a Python script to parse the data setup file and rewrite a C header file on the fly. I can do limit checking and data value integrity before the compiler gets anything. In this way I can keep the instructions to the client simple and intuitive and Python takes care of the heavy lifting behind the scenes.
I have also used this technique to automatically generate thousands of lines of assembly language code on the fly for use in the dsPIC EP series. These chips are very fast, but have a substantial penalty for branching. Python allows me to take a simple script and generate long straight-line assembly language code for very time-critical DSP processes.
I was a skeptical adopter of MPLABX but this feature alone has made my life much easier.
Hope it helps someone else.