i was considering writing an IDE, could you please explain what refactoring tools are necessary/lacking from any ides that are not Visual studio
Refactoring tools are incredibly powerful. For example, renaming a class method "foo". You can rename it yourself with a text editor, but now you have to manually update all the callers. You could try using search/replace, but what if several unrelated classes have a "foo" method? How do you only change the correct method calls? The IDE refactoring tool does this automatically.
* Extract superclass/interface which will work on the whole codebase * Support for NVI - rename, change parameters, convert to virtual interface and back * code duplication detection (maybe exists but I never found sufficient one)