Here's a little introduction to the latest beta version of UECIDE. Some relates still to the old stable version, but for some of the more fancy things you will need the beta version.

 The main UECIDE editor window, as you can see immediately, is a marked improvement over the Arduino IDE's main editor window. On the left you see a logical view of the entire sketch. Sketch files are broken down into Source and Header sections to keep it all tidy. Any libraries you use with #include are automatically listed in Libraries. Some cores allow you to import binary files direct into your code. These are listed in Binaries, and finally the results of the compilation and any files generated are in Output. Further, using the tabs at the top, you can switch to a File view where you get direct access to the directory structure of your sketch. Create folders, drag files around, even drag-and-drop files in from outside.

The main editor portion is a proper syntax aware text editor, with full line numbers, code folding, search-and-replace facilities, etc.

No longer are you forced to have every file in your project open in tabs. Now you can open and close the tabs at will. Just double-click on a file in the tree to edit it. And not just code files, either. There are editors built in to allow you to view the results of compilation, such as "editing" an object file to see the elf structure, or viewing a generated .lss file. There's even a bitmap (.BMP file) viewer.

The way that UECIDE compiles sketches is completely different to the Arduino IDE, too. Every distinct item in the sketch - the sketch itself, each library, the core - are treated as separate modules. They are each compiled separately and, where applicable, stashed away for later usage. Once you have compiled a library of a certain board that library remains in a compiled state for future use. Because of that you can often see a 1000x increase in compilation speed as it's only the sketch files themselves that are now being compiled regularly. And, when you're compiling a large library, you get some feedback as to how much has compiled. So now you know it's not just sitting there doing nothing.

 With so many different boards around these days you'd think it'd be a bit hard to manage them all in one IDE. If you think like Arduino do with their IDE, then you would be right. The boards menu would be massive. Not so with UECIDE. Not only are boards grouped together in the menus by manufacturers so you can quickly and easily find the board you want, but you only need install the boards that you actually own. Only have an Uno?

Then you only need install the Uno board. Get yourself a Fubarino SD later on? Then just add the Fubarino SD board. All that is handled by the Plugin Manager. Download and install plugins, boards, extra cores, new compilers, etc, all from a nice easy to use tree interface.

Speaking of plugins, UECIDE has the ability to have all sorts of extra functions added to it through additional downloadable plugins. These are compiled java files with a specific interface which the IDE can interact with. Almost any functionality imaginable can be placed in a plugin. UECIDE comes with two plugins by default. One is actually the Plugin Manager itself, believe it or not. The second is the Serial Terminal. One of the first things to be thrown out of the old Arduino IDE was the "Serial Monitor". That has to be one of the worst aspects of the Arduino IDE. A vanilla text box that has serial data appended to it willy-nilly with no care as to what it might be. Nothing works as you would expect it - some of the most basic functionality that you would expect from even the simplest of serial terminals is completely missing. Really basic things like being able to place the cursor at the start of the current line to overwrite what is there (carriage return, or '\r'). Even the ability to place things reliably in columns is impossible because it's not a properly laid out monospace font even! So the first thing we did was replace it wholesale. We wrote a proper ANSI compatible serial terminal as a plugin. It handles most of the basic ANSI (VT-100) control codes for cursor positioning and even colour. It has a 2000 line scrollback buffer. There is copy-and-paste. Everything you would expect.

And it looks nicer too: