/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * Created on Sep 20, 2005 * * @author Fabio Zadrozny */ package com.python.pydev.analysis.ctrl_1; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.python.pydev.core.IPythonNature; import org.python.pydev.core.docutils.PySelection; import org.python.pydev.editor.PyEdit; import org.python.pydev.editor.actions.PyFormatStd.FormatStd; import org.python.pydev.editor.codefolding.MarkerAnnotationAndPosition; import org.python.pydev.editor.correctionassist.CheckAnalysisErrors; import org.python.pydev.editor.correctionassist.IgnoreCompletionProposal; import org.python.pydev.editor.correctionassist.IgnoreCompletionProposalInSameLine; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.shared_ui.UIConstants; import org.python.pydev.shared_ui.proposals.PyCompletionProposal; import com.python.pydev.analysis.IAnalysisPreferences; import com.python.pydev.analysis.builder.AnalysisRunner; public class IgnoreErrorParticipant implements IAnalysisMarkersParticipant { private Set<Integer> handled = new HashSet<>(); private FormatStd format; public IgnoreErrorParticipant() { this(null); } /** * Only for tests. */ /*default*/ IgnoreErrorParticipant(FormatStd format) { this.format = format; } /** * @throws CoreException * @see com.python.pydev.analysis.ctrl_1.IAnalysisMarkersParticipant#addProps(org.eclipse.core.resources.IMarker, com.python.pydev.analysis.IAnalysisPreferences, java.lang.String, org.python.pydev.core.docutils.PySelection, int, org.python.pydev.editor.PyEdit, java.util.List) */ @Override public void addProps(MarkerAnnotationAndPosition marker, IAnalysisPreferences analysisPreferences, final String line, final PySelection ps, int offset, IPythonNature nature, final PyEdit edit, List<ICompletionProposal> props) throws BadLocationException, CoreException { Integer id = (Integer) marker.markerAnnotation.getMarker().getAttribute(AnalysisRunner.PYDEV_ANALYSIS_TYPE); if (handled.contains(id)) { return; } handled.add(id); final String messageToIgnore = analysisPreferences.getRequiredMessageToIgnore(id); if (CheckAnalysisErrors.isCodeAnalysisErrorHandled(line, messageToIgnore)) { return; } IgnoreCompletionProposal proposal = new IgnoreCompletionProposalInSameLine(messageToIgnore, ps.getEndLineOffset(), 0, offset, //note: the cursor position is unchanged! PydevPlugin.getImageCache().get(UIConstants.ASSIST_ANNOTATION), messageToIgnore.substring(1), null, null, PyCompletionProposal.PRIORITY_DEFAULT, edit, line, ps, format); props.add(proposal); } }