mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ignore ext resource works properly for urls inside xsi:schemaLocation and xsi:noNamespaceSchemaLocation
This commit is contained in:
@@ -583,6 +583,8 @@ public class XmlHighlightVisitor extends PsiElementVisitor implements Validator.
|
||||
String location = attribute.getValue();
|
||||
|
||||
if (attribute.getLocalName().equals("noNamespaceSchemaLocation")) {
|
||||
if(ExternalResourceManagerEx.getInstanceEx().isIgnoredResource(location)) return;
|
||||
|
||||
if(XmlUtil.findXmlFile(attribute.getContainingFile(),location) == null) {
|
||||
final int start = attribute.getValueElement().getTextOffset();
|
||||
reportURIProblem(start,start + location.length());
|
||||
@@ -592,11 +594,11 @@ public class XmlHighlightVisitor extends PsiElementVisitor implements Validator.
|
||||
XmlFile file = null;
|
||||
|
||||
while(tokenizer.hasMoreElements()) {
|
||||
String namespace = tokenizer.nextToken(); // skip namespace
|
||||
tokenizer.nextToken(); // skip namespace
|
||||
if (!tokenizer.hasMoreElements()) return;
|
||||
String url = tokenizer.nextToken();
|
||||
|
||||
if(ExternalResourceManagerEx.getInstanceEx().isIgnoredResource(namespace)) continue;
|
||||
if(ExternalResourceManagerEx.getInstanceEx().isIgnoredResource(url)) continue;
|
||||
if (file == null) {
|
||||
file = (XmlFile)attribute.getContainingFile();
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public class FetchExtResourceAction extends BaseIntentionAction {
|
||||
return "Fetch External Resource";
|
||||
}
|
||||
|
||||
private String findUri(PsiFile file, int offset) {
|
||||
static String findUri(PsiFile file, int offset) {
|
||||
final PsiElement currentElement = file.findElementAt(offset);
|
||||
PsiElement element = PsiTreeUtil.getParentOfType(currentElement, XmlDoctype.class);
|
||||
if (element != null) {
|
||||
|
||||
@@ -5,13 +5,8 @@ import com.intellij.j2ee.openapi.ex.ExternalResourceManagerEx;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.xml.XmlAttribute;
|
||||
import com.intellij.psi.xml.XmlDoctype;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.xml.util.XmlUtil;
|
||||
|
||||
/**
|
||||
@@ -22,7 +17,7 @@ public class IgnoreExtResourceAction extends BaseIntentionAction {
|
||||
if (!(file instanceof XmlFile)) return false;
|
||||
|
||||
int offset = editor.getCaretModel().getOffset();
|
||||
String uri = findUri(file, offset);
|
||||
String uri = FetchExtResourceAction.findUri(file, offset);
|
||||
|
||||
if (uri == null) return false;
|
||||
|
||||
@@ -39,31 +34,12 @@ public class IgnoreExtResourceAction extends BaseIntentionAction {
|
||||
return "Ignore External Resource";
|
||||
}
|
||||
|
||||
|
||||
private String findUri(PsiFile file, int offset) {
|
||||
final PsiElement currentElement = file.findElementAt(offset);
|
||||
PsiElement element = PsiTreeUtil.getParentOfType(currentElement, XmlDoctype.class);
|
||||
if (element != null) {
|
||||
return ((XmlDoctype)element).getDtdUri();
|
||||
}
|
||||
|
||||
final XmlAttribute attribute = PsiTreeUtil.getParentOfType(currentElement, XmlAttribute.class);
|
||||
if(attribute != null && attribute.isNamespaceDeclaration()){
|
||||
final String uri = attribute.getValue();
|
||||
final PsiElement parent = attribute.getParent();
|
||||
if(uri != null && parent instanceof XmlTag && ((XmlTag)parent).getNSDescriptor(uri, true) == null){
|
||||
return uri;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void invoke(final Project project, final Editor editor, PsiFile file) {
|
||||
int offset = editor.getCaretModel().getOffset();
|
||||
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
final String uri = findUri(file, offset);
|
||||
final String uri = FetchExtResourceAction.findUri(file, offset);
|
||||
if (uri == null) return;
|
||||
|
||||
ExternalResourceManagerEx.getInstanceEx().addIgnoredResource(uri);
|
||||
|
||||
Reference in New Issue
Block a user