Community
Participate
Eclipse IDE
I'm creating (problem) markers for a java file and I only have a line number available when I create the marker. I add the IMarker.LINE_NUMBER attribute to the marker attributes, but do not specify a CHAR_START or CHAR_END. The marker shows up in the file, but there are no Quick Fixes available for it (using Ctrl+1 or right click on the marker). When I click on the marker in the problems view, however, I get the quick fixes that are possible. (This used to work in 3.0, doesnt now in 3.1) I traced through the code and found that the markers with a line number get their end and start range set to be the same in: AbstractMarkerAnnotationModel.createPositionFromMarker(IMarker marker). Because the start and end are both -1 coming into the method, end = start. In JavaCorrectionAssistant.collectQuickFixableAnnotations(), there is a check to see if the Position for the offset is within the range -- its a call to JavaCorrectionAssistant.isInside(). isInside has the following body: private static boolean isInside(int offset, int start, int end) { return offset >= start && offset < end; } BUT, because the start and end are set to be the same, its NEVER inside. The net effect: any markers with a position set via LINE_NUMBER will not get a quick fix.
Martin, this is probably something that should be fixed for 3.1.1.
Created attachment 25234 [details] patch for JavaCorrectionAssistant
Dirk, I also support this as a 3.1.1 candidate. The fix is trivial and makes sure that also 0-length markers get quick assist support.
fix released in 3.2 HEAD stream
+1 for 3.1.1
Patched reviewed.
Reviewed by Tom, patch released in 3.1.1
Verifying...
Verified in M20050804-1200.
.