Last time I tried Eclipse (10 years ago?!?) it was incredibly slow. JVMs and Eclipse have both improved remarkably in that time, and Eclipse is now just as fast as KDevelop. There are many nice features that I haven’t seen in other IDEs yet such as a warnings and errors panel that compiles your project in the background. The special feature here is that for every warning and error, Eclipse will offer a few possible solutions to solve it, for example “import java.util.io.File is never used” will offer a few solutions, “Remove unused import”, “Organise imports” and “Add @SuppressWarnings ‘unused'”.
Clicking on “Remove unused import” will automatically remove the line from the code.
- There is also automatic adding of imports for the classes used in this file, extracting public classes to new files, creating new packages/classes/methods/variables/enums, add cast to make classes convertible, change type of object to match, rename a similarly named class/method/variable/enum to match this reference to it, change this reference to a similarly named class/method/variable/enum, and what seems like many, many more.
- There is a way to change how many spaces wide a tab is, but there is no way to insert spaces instead of tabs (I’m sure there is a way to do this but I couldn’t find it).
- The auto completion feature works as well as modern versions of Visual Studio which is something I have been sorely missing in KDevelop. Good auto completion is quite rare. Admittedly the C++ case is more complex. Includes, defines and ifdef/ifndef, mean that a state machine and parsing of all previous code is required to get an accurate auto completion list. Early versions of Visual Studio for example got this very wrong.
- When it is working, warnings and errors as you type is very handy.
- Debugging is a bit clunkier compared to KDevelop and Visual Studio (But at least it works which is more than I can say for debugging C++ applications in Xcode (Perhaps Objective C debugging actually works but no one at Apple cares about Carbon any more?)).
- Various for and while loops can be auto completed using arrays, arrays with a temporary variable, collections and iterators.
- The create new variable/function/class/file wizard not only works but is actually useful.
- Refactoring is phenomenal, for example “Extract method” will find similar code throughout the whole class to extract, not just the current selection in one function.