Skip to content

Commit

Permalink
Suppress validation kinds based on file pattern
Browse files Browse the repository at this point in the history
Fixes eclipse#1275

Signed-off-by: azerr <[email protected]>
  • Loading branch information
angelozerr committed Sep 2, 2022
1 parent 67b1340 commit 63aa85c
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,8 @@ public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completio
@Override
public CompletableFuture<CompletionItem> resolveCompletionItem(CompletionItem unresolved) {
return computeDOMAsync(unresolved.getData(), (xmlDocument, cancelChecker) -> {
return getXMLLanguageService().resolveCompletionItem(unresolved, xmlDocument, sharedSettings, cancelChecker);
return getXMLLanguageService().resolveCompletionItem(unresolved, xmlDocument, sharedSettings,
cancelChecker);
});
}

Expand Down Expand Up @@ -660,7 +661,8 @@ void validate(DOMDocument xmlDocument, Map<String, Object> validationArgs) throw
cancelChecker.checkCanceled();
getXMLLanguageService().publishDiagnostics(xmlDocument,
params -> xmlLanguageServer.getLanguageClient().publishDiagnostics(params),
(doc) -> triggerValidationFor(doc, TriggeredBy.Other), sharedSettings.getValidationSettings(),
(doc) -> triggerValidationFor(doc, TriggeredBy.Other),
sharedSettings.getValidationSettings().getValidationSettings(xmlDocument.getDocumentURI()),
validationArgs, cancelChecker);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.eclipse.lemminx.extensions.contentmodel.settings;

import org.eclipse.lemminx.settings.PathPatternMatcher;

public class XMLValidationFilter extends XMLValidationSettings {

private String pattern;

private transient PathPatternMatcher matcher;

public boolean matches(String uri) {
if (matcher == null) {
matcher = new PathPatternMatcher();
matcher.setPattern(pattern);
}
return matcher.matches(uri);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/**
* Copyright (c) 2019 Red Hat Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Red Hat Inc. - initial API and implementation
*/
package org.eclipse.lemminx.extensions.contentmodel.settings;

import java.util.Arrays;

/**
* XMLValidationSettings
*/
public class XMLValidationRootSettings extends XMLValidationSettings {

private XMLValidationFilter[] filters;

public XMLValidationFilter[] getFilters() {
return filters;
}

public void setFilters(XMLValidationFilter[] filters) {
this.filters = filters;
}

public XMLValidationSettings getValidationSettings(String uri) {
if (filters != null) {
for (XMLValidationFilter filter : filters) {
if (filter.matches(uri)) {
return filter;
}
}
}
return this;
}

@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Arrays.hashCode(filters);
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
XMLValidationRootSettings other = (XMLValidationRootSettings) obj;
return Arrays.equals(filters, other.filters);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
*******************************************************************************/
package org.eclipse.lemminx.settings;

import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings;
import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings;

/**
Expand All @@ -21,7 +22,7 @@ public class SharedSettings {
private final XMLCompletionSettings completionSettings;
private final XMLFoldingSettings foldingSettings;
private final XMLFormattingOptions formattingSettings;
private final XMLValidationSettings validationSettings;
private final XMLValidationRootSettings validationSettings;
private final XMLSymbolSettings symbolSettings;

private final XMLCodeActionSettings codeActionSettings;
Expand All @@ -37,7 +38,7 @@ public SharedSettings() {
this.completionSettings = new XMLCompletionSettings();
this.foldingSettings = new XMLFoldingSettings();
this.formattingSettings = new XMLFormattingOptions(true);
this.validationSettings = new XMLValidationSettings();
this.validationSettings = new XMLValidationRootSettings();
this.symbolSettings = new XMLSymbolSettings();
this.codeActionSettings = new XMLCodeActionSettings();
this.codeLensSettings = new XMLCodeLensSettings();
Expand Down Expand Up @@ -75,7 +76,7 @@ public XMLFormattingOptions getFormattingSettings() {
return formattingSettings;
}

public XMLValidationSettings getValidationSettings() {
public XMLValidationRootSettings getValidationSettings() {
return validationSettings;
}

Expand Down

0 comments on commit 63aa85c

Please sign in to comment.