Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,24 +74,25 @@
import org.netbeans.spi.editor.highlighting.support.OffsetsBag;
import org.netbeans.spi.editor.hints.ErrorDescription;
import org.netbeans.spi.editor.hints.ErrorDescriptionFactory;
import org.netbeans.spi.editor.hints.Fix;
import org.netbeans.spi.editor.hints.LazyFixList;
import org.netbeans.spi.editor.hints.Severity;
import org.openide.cookies.EditorCookie;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataObject;
import org.openide.text.Annotation;
import org.openide.text.NbDocument;
import org.openide.util.RequestProcessor;
import org.openide.util.WeakListeners;
import org.openide.filesystems.FileUtil;
import org.openide.text.PositionBounds;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.LookupEvent;
import org.openide.util.LookupListener;
import org.openide.util.NbBundle;
import org.openide.util.Pair;
import org.openide.util.RequestProcessor;
import org.openide.util.RequestProcessor.Task;
import org.openide.util.WeakListeners;

/**
*
Expand Down Expand Up @@ -1394,6 +1395,42 @@ public void run() {
return result[0];
}

public synchronized void removeErrorForFixOnLine(Fix fix, int line) throws IOException, BadLocationException {
Position pos = getPosition(line, false);
List<ErrorDescription> errs = getErrorsForLine(pos, false);

List<ErrorDescription> errsToRemove = new ArrayList<>(); // Should be 1, but uses List just in case
for (ErrorDescription err : errs) {
if (err.getFixes().getFixes().contains(fix)) {
errsToRemove.add(err);
}
}

Map<String, List<ErrorDescription>> layers = new HashMap<>();
for (ErrorDescription ed : errsToRemove) {
for (Entry<String, List<ErrorDescription>> layer : layer2Errors.entrySet()) {
String key = layer.getKey();
List<ErrorDescription> val = layer.getValue();
for (ErrorDescription err : val) {
if (!ed.equals(err)) {
continue;
}
if (!layers.containsKey(key)) {
layers.put(key, new ArrayList<>(val));
}
layers.get(key).remove(ed);
}
}
}

for (Entry<String, List<ErrorDescription>> entry : layers.entrySet()) {
String key = entry.getKey();
List<ErrorDescription> val = entry.getValue();
setErrorDescriptions(key, val, false);
}
}


private static final boolean ENABLE_ASSERTS = Boolean.getBoolean(AnnotationHolder.class.getName() + ".enableAsserts200469");

private static class PositionComparator implements Comparator<Object> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@
import javax.swing.text.JTextComponent;
import javax.swing.text.Position;
import org.netbeans.api.editor.EditorRegistry;
import org.netbeans.api.editor.document.LineDocument;
import org.netbeans.api.editor.document.LineDocumentUtils;
import org.netbeans.api.editor.mimelookup.MimeLookup;
import org.netbeans.api.editor.settings.EditorStyleConstants;
import org.netbeans.editor.AnnotationDesc;
Expand Down Expand Up @@ -350,7 +352,7 @@ public void showPopup(FixData hints) {
}
}

public void showPopup(FixData fixes, String description, JTextComponent component, Point position) {
public void showPopup(FixData fixes, String description, JTextComponent component, Point position) {
removeHints();
setComponent(component);
JTextComponent comp = getComponent();
Expand Down Expand Up @@ -630,7 +632,6 @@ boolean invokeDefaultAction(boolean onlyActive) {
String description;

if (!onlyActive) {
refresh(doc, comp.getCaretPosition());
AnnotationHolder holder = getAnnotationHolder(doc);
Pair<FixData, String> fixData = holder != null ? holder.buildUpFixDataForLine(line) : null;

Expand Down Expand Up @@ -807,6 +808,9 @@ private void invokeHint (final Fix f) {
t = RequestProcessor.getDefault().post(new Runnable() {
public void run() {
try {
int line = LineDocumentUtils.getLineIndex((LineDocument) component.getDocument(), component.getCaretPosition());
AnnotationHolder holder = getAnnotationHolder(component.getDocument());
holder.removeErrorForFixOnLine(f, line);
changes = f.implement();
} catch (GuardedException ge) {
reportGuardedException(component, ge);
Expand Down