According to the official site, "[i]t was developed to provide a small
and fast IDE, which has only a few dependencies from other packages.
It supports many filetypes and has some nice features."
This is a great minimal programming editor that has a Windows port. It is relatively cheap ($0 < $100), runs on Windows 8, it makes no assumptions about the compiler, (AFAIK) maintains the C++ standard as it uses GNU gcc/g++ by default for C/C++ (you could use any compiler installed, though), and has many of the features you are asking for. Although a little more limited than some of the other enterprise solutions, especially in resource lacking environments it can hold its own since:
- Code completion/hinting
- Indentation assistance
- Syntax highlighting
- UPDATE: It does support minimal refactoring and reflow (and there are tools/plugins which may improve this too)
- Code navigation (Ctrl if the declaration is in an open file)
It is in a similar category is the amazing program Notepad++, and the Unix/GNULinux powerhouses vim or emacs varieties, but I would recommend Geany as it is easy to use with nearly 0 learning curve, and :
Also has in addition:
- Cross platform
- gives you the same look and feel (although this is highly customizable) no matter the platform
- will allow for multilanguage support (often large projects may use scripting, etc and it is nice to only need one IDE)
- No compiler assumptions - it is easy to make it use any C++ compliant
- Very customizable
- VERY light-weight
- Complete terminal integration under POSIX systems (Linux)
Personally, I almost exclusively use this IDE when writing code quickly on Linux with a GUI. It has some very nice features for C/C++ that are usually reserved for much larger programs. It is fast and can open just about any non-binary form document. It has nice key commands like switching lines, duplication, and multi-line indentation and comment control. You can use VIM inside it (as part of the terminal access it provides). It can save ways of building software, without requiring projects to self-contain their own build options. For example, even if there isn't a makefile (which can be used with a function-key) you can save build options that are selectable based on filetype. This is useful if there are several libraries that you use often and link with but want to be able to write something quickly, compile and test it. For example two custom commands I end up using a lot with geany are
g++ -Wall -o "%e" "%f" 'allegro-config --cflags --libs' could be used to compile an Allegro4 program or
nvcc -arch=sm_20 -o "%e" *.o -lcudart 'pkg-config opencv --cflags --libs' to build a CUDA application that also uses OpenCV. Once you save these they are selectable from a drop-down box or as a function-key for every .CPP file or whichever file type you associated it with. I have also found its print formatted and syntax-highlighted code to PDF (using Linux CUPS IIRC) to be very useful for handing in program documentation for classes. Being so low resource I have it on a portable Linux, and having made my own setup / configuration of it, I have saved an uncountable number of hours on each project since. To add to an existing project just make a new .CPP document or open an existing one from the file manager, and you're already working, rather than configuring, building off of a template, manually adding libraries, etc.