Missing basic features from Eclipse 关注
Just few days coming form Eclipse to all this "intelligent" stuff, I miss two basic intelligent things from Eclipse.
1. Remember where I was before. That is, I'm in class A, open class B, close class B - in Eclipse I'd be redirected back into class A (and that works with any length class chain), but Idea unintelligently forgets and redirects me to the first class in editor.
2. Open missing class. In Eclipse I could press F3 on a class which says it is not found, and I'd still be redirected to that class. In Idea, that does not work. Eclipse has more into it - also opening by partial selection which I found annoying as I never found any use for that, but had a lot of cases where I had accidental selections and pressed F3 wanting to navigate by full class name.
2. Please clarify with an example. Where will it find class that is missing from the project?
The (1) I'm surprised that you have this option and it isn't turned on by default.
The (2) happens when there are build problems in project. Say I can't build some module so classes from that module aren't in Maven repository, and there is an artifact in another pom.xml for unbuilt module. Idea complains that there are unresolved artifacts, and that class does not exist - though it exists somewhere in that another unbuilt module.
And following (2) Eclipse behavior, this could also apply to tooltips (mouse over, when turned on) and code in comments.
If the class exists in a module that is not built and this module is a dependency of your original module, IntelliJ IDEA will resolve this class and it will not be highlighted in red.
In my case, there is Maven dependency and it does not resolve, producing zillion of errors in java files. That seems because of (as I was messing a bit before with removing dependencies to get things to compile better so got some inaccurate understanding of what is happening) some other dependency(ies) being unresolved, and any other dependencies in pom declaration order (or any other order) gets unresolved too.
You need to fix the dependencies first, there is not much IntelliJ IDEA can do here.
But that's the point where I started. I should not be forced to fix anything to just be able to easily navigate through code. In fact, I may need to navigate code first to gather knowledge about how to fix it. Which does get us back to the missing feature question.
One more issue - quick documentation on mouse move (nice thing I turned on from getting used to in Eclipse) behaves badly when there are compilation errors. In Eclipse, errors do take priority and error popups are shown instead of documentation. In Idea, both are shown, and documentation popup covers error popup which makes it difficult to see errors at all (there is silly workaround in moving mouse to the error and quickly down bit, so error popup shows first and mouse moves over it so it does not disappear, but documentation does not get enough time to show).
See https://youtrack.jetbrains.com/issue/IDEA-132172 regarding the documentation popup issue.
It's from 2014.. Doubt it ever will get fixed.
Now another thing. I'm reading about Idea features here, https://dzone.com/articles/top-20-code-completions-in-intellij-idea. It says some nice things in "Case sensitivity settings" section, in that I do not need to write uppercase for "camel case", and screenshot shows it nicely working. I find that this does not work for me. Even more so (may be related issue), class completion by writing class name in lowercase (like I would start with "illegalacce") does not work too. Though these things do work in shiftx2 search.
Check your code completion case sensitivity and CamelHump settings.
Thanks. I once again wonder why these goodies aren't on by default..
Different products, different user habits for the defaults. IntelliJ IDEA has 17+ years history and it's always a pain when the defaults are changed for the users who are already used to another behavior.
I could compare this to Total Commander, which is so great tool but comes with so silly defaults. Eclipse on the other hand is introducing new things quite freely, and that I think is the right thing. Even Microsoft is changing things considerably with new versions of Windows or Office, and their user base overall should be much less advanced and less loving changes than Idea user base. If there is wish to keep old defaults, you could have an option on installation (changeable later in settings) - something like choosing Classic Feature set and Advanced Feature Set. And put new and right things into Advanced feature set like completion case insensitivity and Camel Humps (but not on mouse doubleclick, that was bad to enable this option by default).
Before changing any defaults an unbiased research has to be performed to find out what options majority of the users would prefer. Making such a research it not easy with the current statistics system since most users stick to the current IDE defaults.
That's too complicated and not suitable approach I think here with big research. It should not be about finding out what most would prefer (and likely the most would prefer classic stuff, based on your statistics). It should be about making a package of useful options which you see yourself as beneficial (I think you already know what good things you did), and push it to market as an optional package. For making such package, you still could use some additional info what other people who are really interested about productivity think about those features - like I was reading this page https://dzone.com/articles/top-20-code-completions-in-intellij-idea, and also see what Eclipse has turned on by default.
You can post the specific suggestions for the changes at https://youtrack.jetbrains.com/issues/IDEA. Make sure to specify why you think every new default would be better than the current option. If your requests will get many votes from the community, we'll consider making these changes.
Another missing thing (and could not find a config) - when there is an error about variable already defined in scope, editor marks with error only the first declaration. Second declaration is not marked, leaving to find out it manually where's the second wrong declaration.
Looks like already addressed in https://www.jetbrains.com/idea/nextversion/. See https://youtrack.jetbrains.com/v2/issue/IDEA-162316.
Next one. During rename refactoring (guess applies to all refactorings) there is "Preview" which does produce a list of changes to be made, but there is no actual preview with comparison like in Eclipse. From what I'm experiencing, the list without actual preview is difficult to use to being quite useless.
And given that Idea has a built in file compare tool, I find it strange that refactoring does not have actual preview. Maybe I'm just missing it, but I tried to look thoroughly.
And a small bug style issue, I'm using Eclipse keymap, and found out that there is code completion replace with Tab key instead of Enter which does replace whole identifier instead of inserting. Same thing as I found out exists is Eclipse, with Ctrl+Enter. So I'd expect that Eclipse keymap would replace this shorcut too which it did not. Wonder if I should register it as issue anywhere.
IntelliJ IDEA cannot do refactoring diffs in the preview. Related request: https://youtrack.jetbrains.com/v2/issue/IDEABKL-5402.
IntelliJ IDEA has no separate actions for Insert/Replace completion results, so Tab and Enter are hardcoded. Request is welcome at https://youtrack.jetbrains.com/issues/IDEA.
Breakpoint support - confusing info: https://www.jetbrains.com/help/idea/evaluating-expressions.html
Reordering last two points in Limitations part,
3. If a method invoked within Expression Evaluation has a breakpoint inside its body, this breakpoint will be ignored.
2. Expression Evaluation can only be "single-level". In other words, if IntelliJ IDEA stops at a breakpoint within a method called from the Expression Evaluation, you cannot use the Expression Evaluation feature again.
So 3. says that there would be no stop on breakpoint from Expression Evaluation, but then 2. talks about stopping on breakpoint from Expression Evauation. That sounds contradicting.
Thanks for the report, our documentation team will take care of it.
Another thing missing - copying code does not copy imports. After copying, classes have to be re-imported again. Not that it is clever to copy paste code, but often there is need to just move code between classes (and this is usually faster without using refactorings). Only that automated unambiguous imports are helping from making this big annoyance.
A strange thing - I thought that tooltips showing file path on editor tabs are not working at all, but after a bit clicking around and trying I understood that sometimes they do appear quickly like in a fraction of second, but more usually that takes 1-2 seconds. That is unreasonably long.
And a bug noticed - Run Configurations was not filling for long time, and dropdown field was staying empty on the screen and not showing anything by default, got fixed by itself after I restarted Idea. No understanding how to reproduce.
And I finally identified a really annoying bug. I guess it is related to the length of tabs in editor and looks more nasty when editor has more tabs than there fits in the screen so extras are shown in a list at top right corner (called "chevron" in eclipse, don't know it's name in Idea). So Idea starts opening new files over that top right area, not fitting full file name. Worst when it is just the size of "chevron" - many times I was wondering why I have opened file and do not see any tab active at all - turns out it is just that small corner in bright color meaning active, and "chevron" then does not work, not possible to get list of not fitting files:
Other I think related cases are when tabs do not fit and a tab is cut in half at left, but at the right there is a big empty area till chevron, and that stays after closing editor tabs - this is how the left and right sides look at the same time:And funny, tab limit is 10 but looks like I managed to open 11 tabs somehow in second screenshot, at least based on what is seen.
> Another thing missing - copying code does not copy imports.
Change to All: