Consider a class A that calls method X on class B. If I open class B in the editor and rename the method X to Y, it is correctly renamed in both class A and class B. Then I execute "Save All". (My understanding of "Save All" is that it undertakes to save all "dirty" edit sessions, i.e., those that have changes in memory but not on the file system, let alone in Salesforce. In this case, both class A and class B should be dirty after the refactoring.)
When I execute "Save All", only class B is saved. If I now rerun class A, it fails with a compilation error saying "method does not exist, or incorrect signature". If I try "Save All" with class A open in the editor, nothing happens. Instead I have to use "Force Save" to push class A to the server, then everything is OK again. This is all clumsy enough if there are only two files involved, but if there are more, which there might well be for a rename refactoring, it becomes a bit of a nightmare.
Is there a better way?