<orderEntry type="module" module-name="jps-model-impl" />
<orderEntry type="module" module-name="maven-jps-plugin" />
<orderEntry type="module" module-name="maven-artifact-resolver-m3" />
+ <orderEntry type="module" module-name="spellchecker" />
</component>
<component name="copyright">
<Base>
*/
package org.jetbrains.idea.maven.dom.model;
+import com.intellij.spellchecker.xml.NoSpellchecking;
import com.intellij.util.xml.Convert;
import com.intellij.util.xml.GenericDomValue;
import com.intellij.util.xml.Required;
public interface MavenDomArtifactCoordinates extends MavenDomShortArtifactCoordinates {
@Required
+ @NoSpellchecking
@Convert(MavenArtifactCoordinatesVersionConverter.class)
GenericDomValue<String> getVersion();
}
*/
package org.jetbrains.idea.maven.dom.model;
+import com.intellij.spellchecker.xml.NoSpellchecking;
import com.intellij.util.xml.Convert;
import com.intellij.util.xml.GenericDomValue;
import com.intellij.util.xml.Required;
public interface MavenDomShortArtifactCoordinates {
@Required
+ @NoSpellchecking
@Convert(MavenArtifactCoordinatesGroupIdConverter.class)
GenericDomValue<String> getGroupId();
@Required
+ @NoSpellchecking
@Convert(MavenArtifactCoordinatesArtifactIdConverter.class)
GenericDomValue<String> getArtifactId();
}
--- /dev/null
+/*
+ * Copyright 2000-2013 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jetbrains.idea.maven.dom;
+
+import com.intellij.spellchecker.inspections.SpellCheckingInspection;
+
+/**
+ * @author Sergey Evdokimov
+ */
+public class MavenSpellcheckerTest extends MavenDomTestCase {
+
+ public void testSpell() throws Exception {
+ myFixture.enableInspections(SpellCheckingInspection.class);
+
+ createProjectPom("<groupId>test</groupId>\n" +
+ "<artifactId>project</artifactId>\n" +
+ "<version>1</version>\n" +
+
+ "<description><TYPO>xxxxx</TYPO></description>\n" +
+
+ "<dependencies>\n" +
+ " <dependency>\n" +
+ " <groupId>xxxxx</groupId>\n" +
+ " <artifactId>xxxxx</artifactId>\n" +
+ " <version>4.0</version>\n" +
+ " <type>pom</type>\n" +
+ " </dependency>\n" +
+ "</dependencies>");
+
+ checkHighlighting();
+ }
+
+}
<orderEntry type="module" module-name="platform-impl" />
<orderEntry type="module" module-name="xml-openapi" />
<orderEntry type="module" module-name="testFramework" scope="TEST" />
+ <orderEntry type="module" module-name="dom-openapi" />
</component>
</module>
<spellchecker.support language="TEXT" implementationClass="com.intellij.spellchecker.tokenizer.SpellcheckingStrategy"/>
<spellchecker.support language="HTML" implementationClass="com.intellij.spellchecker.tokenizer.HtmlSpellcheckingStrategy"/>
+ <spellchecker.support language="XML" implementationClass="com.intellij.spellchecker.xml.XmlSpellcheckingStrategy"/>
<spellchecker.bundledDictionaryProvider implementation="com.intellij.spellchecker.DefaultBundledDictionariesProvider"/>
<projectService serviceImplementation="com.intellij.spellchecker.state.ProjectDictionaryState"/>
--- /dev/null
+/*
+ * Copyright 2000-2013 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.spellchecker.xml;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * @author Sergey Evdokimov
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface NoSpellchecking {
+
+}
--- /dev/null
+package com.intellij.spellchecker.xml;
+
+import com.intellij.codeInspection.SuppressIntentionAction;
+import com.intellij.psi.PsiElement;
+import com.intellij.spellchecker.tokenizer.SuppressibleSpellcheckingStrategy;
+import com.intellij.util.xml.DomElement;
+import com.intellij.util.xml.DomUtil;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author Sergey Evdokimov
+ */
+public class XmlSpellcheckingStrategy extends SuppressibleSpellcheckingStrategy {
+
+ @Override
+ public boolean isSuppressedFor(@NotNull PsiElement element, @NotNull String name) {
+ DomElement domElement = DomUtil.getDomElement(element);
+ if (domElement != null) {
+ if (domElement.getAnnotation(NoSpellchecking.class) != null) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public SuppressIntentionAction[] getSuppressActions(@NotNull PsiElement element, @NotNull String name) {
+ return SuppressIntentionAction.EMPTY_ARRAY;
+ }
+}