I absolutely love IntelliJ. It is by far the best IDE I've ever used. Just a few suggestions to make it just a bit better. (Sorry if any of these are repeats)
1) I tried to use the Extract Method refactoring today, but, upon recognizing that my particular situation involved multiple return values, I realized that I must use the Replace Method with Method Object (Fowler, 135) refactoring instead. While this was a reasonably easy refactoring to perform, it was mostly a rote task, and therefore would be a logical candidate for automation. 2) I was realizing that the interface for typing a live-template is extraordinarily convenient. I believe that it would be beneficial to use this interface instead of dialog boxes for some of the currently existing refactorings. Extract variable and rename immediately come to mind, for instance. In the case of extract-variable, I would suggest that hitting ctrl-alt-v performs the extraction and places the user in a live-template mode where they can type the variable name, which will update in realtime in both the variable declaration and usages. In the case of rename, I would suggest that hitting rename puts them in a live-template mode where they can choose the new variable name. When they exit the mode (via tab, or other means), the usage and confirmation panel pops up. I think I would find this method less interruptive than dialog boxes, especially if there are multiple variables that I might want to rename (parameters in extract-method, for instance). 3) This is definitely a repeat, but the ability to open multiple source-code browsing windows at the same time is absolutely vital. Currently I am having a hard time convincing anyone in my company to switch to IntelliJ, soley for this reason. Everyone in my company has multiple monitors, and they all want to open two or three .java files at the same time. As soon as this feature is added, I expect most of my coworkers to make the switch. 4) This is probably a separate product (or PhD thesis) altogether... but have you considered whether there is an appropriate way to do a "diff" between two java-files that encorporates the parsed structure of the file, and perhaps recognizes likely refactorings. Current version-control systems that I know of are still using line-by-line 3-way merge systems for resolving concurrent modification. Clearly a system that can recognize refactorings and other higher-level changes could allow significantly better automated resolution for concurrent modifications, not to mention the fact that a much better visual-diff could be presented to the user if they were shown the refactorings that occurred, rather than just line-by-line changes. (As an example of visualization: if someone changes "x" to "y" in one location, it highlights this change in a certain color, if they rename a particular variable "x" to "y" in all occurences, this would highlight in a different color -- the meaning of the diff is now much more apparent). Unfortunately, I have this strange feeling that this problem is reducible to detecting graph isomorphism, which I vaguely remember as being NP-complete. But hopefully I'm wrong -- hopefully tree-isomorphism is substantially simpler -- or maybe good approximations can be made. :) Thanks for your time. I'd be especially interested in hearing anyone's thoughts on (4). -Dwight Rodgers _______________________________________________ Eap-features mailing list [EMAIL PROTECTED] http://www.intellij.com/mailman/listinfo/eap-features
