Skip to content

Commit e593b79

Browse files
author
Steve Ramage
committed
Moar support
1 parent 7c56108 commit e593b79

File tree

11 files changed

+87
-84
lines changed

11 files changed

+87
-84
lines changed

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/completion/UnitFileKeyCompletionContributor.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import net.sjrx.intellij.plugins.systemdunitfiles.generated.UnitFileElementTypeH
1414
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileProperty
1515
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1616
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
17+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
18+
1719
import java.util.stream.Collectors
1820

1921
/**
@@ -36,11 +38,11 @@ class UnitFileKeyCompletionContributor : CompletionContributor() {
3638
val definedKeys = section.propertyList.stream().map { obj: UnitFileProperty -> obj.key }.collect(Collectors.toSet())
3739
val sdr = SemanticDataRepository.instance
3840

39-
val filename = section.containingFile.name
41+
val fileClass = section.containingFile.fileClass()
4042

41-
for (keyword in sdr.getDocumentedKeywordsInSection(filename, sectionName)) {
43+
for (keyword in sdr.getDocumentedKeywordsInSection(fileClass, sectionName)) {
4244
if (definedKeys.contains(keyword)) continue
43-
val deprecated = sdr.isDeprecated(filename, sectionName, keyword)
45+
val deprecated = sdr.isDeprecated(fileClass, sectionName, keyword)
4446
val builder = LookupElementBuilder
4547
.create(keyword)
4648
.withInsertHandler(KeyInsertHandler())

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/completion/UnitFileValueCompletionContributor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.generated.UnitFileElementTypeH
1010
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileProperty
1111
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1212
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
13+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1314
import java.util.function.Supplier
1415
import java.util.stream.Collectors
1516

@@ -44,9 +45,9 @@ class UnitFileValueCompletionContributor : CompletionContributor() {
4445
val sectionName = section.sectionName
4546
val keyName = property.key
4647
val sdr = SemanticDataRepository.instance
47-
val filename = section.containingFile.name
48+
val fileClass = section.containingFile.fileClass()
4849

49-
val validator = sdr.getOptionValidator(filename, sectionName, keyName)
50+
val validator = sdr.getOptionValidator(fileClass, sectionName, keyName)
5051
resultSet.addAllElements(
5152
validator.getAutoCompleteOptions(property.project)
5253
.stream()

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/documentation/UnitFileDocumentationProvider.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.generated.UnitFileElementTypeH
1111
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFilePropertyType
1212
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionType
1313
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
14+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1415

1516
class UnitFileDocumentationProvider : AbstractDocumentationProvider() {
1617
override fun getQuickNavigateInfo(element: PsiElement, originalElement: PsiElement): String? {
@@ -26,9 +27,9 @@ class UnitFileDocumentationProvider : AbstractDocumentationProvider() {
2627
val sectionName = section.sectionName
2728
val keyName = element.node.text
2829
val sdr: SemanticDataRepository = SemanticDataRepository.instance
29-
val filename = section.containingFile.name
30+
val fileClass = section.containingFile.fileClass()
3031

31-
val keyComment = sdr.getDocumentationContentForKeyInSection(filename, sectionName, keyName)
32+
val keyComment = sdr.getDocumentationContentForKeyInSection(fileClass, sectionName, keyName)
3233
if (keyComment != null) {
3334
return DocumentationMarkup.DEFINITION_START + keyName + DocumentationMarkup.DEFINITION_END + DocumentationMarkup.CONTENT_START + keyComment + DocumentationMarkup.CONTENT_END
3435
}
@@ -55,14 +56,15 @@ class UnitFileDocumentationProvider : AbstractDocumentationProvider() {
5556
val section = PsiTreeUtil.getParentOfType(element, UnitFileSectionType::class.java) ?: return null
5657
val sectionName = section.sectionName
5758
val keyName = element.text
58-
val fname = section.containingFile.name
59+
val fileClass = section.containingFile.fileClass()
60+
5961
val sdr: SemanticDataRepository = SemanticDataRepository.instance
60-
val url = sdr.getKeywordDocumentationUrl(fname, sectionName, keyName)
62+
val url = sdr.getKeywordDocumentationUrl(fileClass, sectionName, keyName)
6163
if (url != null) {
6264
return listOf(url)
6365
}
64-
val keyNameToPointTo = sdr.getKeywordLocationInDocumentation(fname, sectionName, keyName)
65-
val filename = sdr.getKeywordFileLocationInDocumentation(fname, sectionName, keyName)
66+
val keyNameToPointTo = sdr.getKeywordLocationInDocumentation(fileClass, sectionName, keyName)
67+
val filename = sdr.getKeywordFileLocationInDocumentation(fileClass, sectionName, keyName)
6668
if (keyNameToPointTo != null && filename != null) {
6769
return listOf(
6870
"https://www.freedesktop.org/software/systemd/man/" + filename.replaceFirst(".xml$".toRegex(), ".html") + "#"

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/DeprecatedOptionsInspection.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFilePropertyType
1111
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1212
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileVisitor
1313
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
14+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1415

1516
class DeprecatedOptionsInspection : LocalInspectionTool() {
1617
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
@@ -26,10 +27,10 @@ class DeprecatedOptionsInspection : LocalInspectionTool() {
2627
val sdr = SemanticDataRepository.instance
2728
val sectionName = section.sectionName
2829
val key = property.key
29-
val filename = section.containingFile.name
30+
val fileClass = section.containingFile.fileClass()
3031

31-
if (sdr.isDeprecated(filename, sectionName, key)) {
32-
val text = sdr.getDeprecationReason(filename, sectionName, key, false)
32+
if (sdr.isDeprecated(fileClass, sectionName, key)) {
33+
val text = sdr.getDeprecationReason(fileClass, sectionName, key, false)
3334
holder.registerProblem(property.keyNode.psi, text!!, ProblemHighlightType.LIKE_DEPRECATED)
3435
}
3536
}

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/InvalidValueInspection.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFilePropertyType
1010
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1111
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileVisitor
1212
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
13+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1314

1415
class InvalidValueInspection : LocalInspectionTool() {
1516
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
@@ -24,8 +25,8 @@ class InvalidValueInspection : LocalInspectionTool() {
2425
val section = PsiTreeUtil.getParentOfType(property, UnitFileSectionGroups::class.java) ?: return
2526
property.valueText ?: return
2627
val key = property.key
27-
val filename = section.containingFile.name
28-
val ovi = SemanticDataRepository.instance.getOptionValidator(filename, section.sectionName, key)
28+
val fileClass = section.containingFile.fileClass()
29+
val ovi = SemanticDataRepository.instance.getOptionValidator(fileClass, section.sectionName, key)
2930
ovi.generateProblemDescriptors(property, holder)
3031
}
3132
}

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ShellSyntaxInExecDirectiveInspection.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFilePropertyType
1212
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1313
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileVisitor
1414
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
15+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1516
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ExecOptionValue
1617
import java.util.regex.Pattern
1718

@@ -38,8 +39,8 @@ class ShellSyntaxInExecDirectiveInspection : LocalInspectionTool() {
3839
val section = PsiTreeUtil.getParentOfType(property, UnitFileSectionGroups::class.java) ?: return
3940
val value = property.valueText ?: return
4041
val key = property.key
41-
val filename = section.containingFile.name
42-
if (SemanticDataRepository.instance.getOptionValidator(filename, section.sectionName, key) !is ExecOptionValue) return
42+
val fileClass = section.containingFile.fileClass()
43+
if (SemanticDataRepository.instance.getOptionValidator(fileClass, section.sectionName, key) !is ExecOptionValue) return
4344
val completedString = StringBuilder()
4445
val im = holder.manager
4546
while (completedString.length < value.length) {

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/UnknownKeyInSectionInspection.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFilePropertyType
1111
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileSectionGroups
1212
import net.sjrx.intellij.plugins.systemdunitfiles.psi.UnitFileVisitor
1313
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.SemanticDataRepository
14+
import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.fileClass
1415

1516
/**
1617
* The purpose of this inspection is to catch any warnings that may be generated by systemd when processing a unit file.
@@ -45,8 +46,8 @@ class UnknownKeyInSectionInspection : LocalInspectionTool() {
4546
return
4647
}
4748

48-
val filename = section.containingFile.name
49-
if (!SemanticDataRepository.instance.getAllowedKeywordsInSectionFromValidators(filename, sectionName).contains(key)) {
49+
val fileClass = section.containingFile.fileClass()
50+
if (!SemanticDataRepository.instance.getAllowedKeywordsInSectionFromValidators(fileClass, sectionName).contains(key)) {
5051
// TODO Figure out what highlight to use
5152
holder.registerProblem(property.keyNode.psi, INSPECTION_TOOL_TIP_TEXT, ProblemHighlightType.GENERIC_ERROR_OR_WARNING)
5253
}

0 commit comments

Comments
 (0)