Thank you very much for taking the time to share some views!!
I also believe that one of the greatest strength of the whole arduino environment is its SIMPLICITY. Arduino is a great way to get projects going quickly, and I have the utmost respect for people who have the skills to make complex things appear simple as they managed to do.
My desire would be to follow in their footsteps, and knock out more objections/entry barriers, linked to the IDE (I do think it is great): I just want to extend its lifespan through the learning curve of users (starting with me), and ensure that simple things remain simple, while allowing more complex things, currently out of reach or judged to complex on the surface, to become possible and hopefully even simple. Users should just use, and hackers should find all the assistance they want to hack. I have more thoughts but the list was long as it is, and my time currently limited.
To put things in perspective, I diverted little over a week from a personal project to make adjust the tool for me. I could not break my code cleanly apart into libraries, but when I looked into the source code there was a very simple way (3h work) to keep everything the way it was (guarantee for me that I was not going to introduce and endless stream of new bugs) while opening the door to solving a number of existing issues: the long list of tabs, the poor navigation between them, the lack of visibility over the dependancies, the fixed structure... so it all hinges on some trivial changes (call it 'cleaning the abstractions') to a handful of existing classes.
Code completion
This is what makes code completion code so simple: integration with the editor is a single line of code regardless of the language being edited (again 100% credit due to the designers of the Editor and the external library used). This makes it equally easy to wrap this line in a config driven IF statement to disable it if a user does not want it. The point is, the current core design is sound (could use more cleanup, but it is sound) and it offers a lot of room for creating a lot of complex looking features at a low implementation cost. I currently have a number of languages, but as you rightly suggest, additional ones can be written without touching my code (discovers .jars externally). And yes, as you pointed out, there is also a connection with my thoughts on scripting the editor.
The negative side effect of my approach is that it is not compatible with the existing code completion PR. As I wrote somewhere, IMHO that PR will do more long term damages to the clean simplify of the editor core than it will do good (visible immediately, others indirect as they will introduce un-necessary complexity for compared to their benefits). I am only referring to the integration layer (the code behind is quite cleverly based on eclipse code - with the performance trade-offs).
Key Binding
Interesting topic... I proposed to start with simply listing all the IDE binding in a single table, leaving the door open to later edit them (or simply load them from a manually edited text file) if need be. My reason for proposing it is simply that I could not find them all.. but.. the deeper reason is that the code that manages menu items is one of these things that people starting an editor sometimes overlook until it has become a tangled mess. My outliner has different popup menu actions for a Library node (or any of its source files) than for Sketch files nodes or even board nodes. Well done, the base class for all these actions should make managing bindings an almost free side-effect of the rest. Many of my proposals are like that: cheap side effects of something that is not really worth talking about.
IMHO, this is what experience brings: we still don't know what code to write but we quickly get a strong feel for what NOT to write, and complex looking features sometimes come as side effects of the internal structures we build.
#3809 Window focus issue/rude popup
This is the perfect illustration of the previous principle. The problem can be addressed as an isolated issue. But IMHO there is a better road ahead that will lead to more features coming as side effects. Again a matter of opinion, this one based on what I did to start #4077, and as if this was not enough, I just noticed #4099 which IMHO should be seen as another facet of the exact same issue. Considering them together as a single issue to be solved in one go will lead to less code that will allow some of the features I have not listed yet.
#4074 is another of these things you get for free by doing something else somewhere else. I am running out of energy for tonight, but will take the time to write more about how it fits.
[NTS http://forum.arduino.cc/index.php?topic=151774.0]