mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
RUST-13858 API for disabling toml plugin completion
GitOrigin-RevId: c77dbdbf35773550050a06d6c72f9b5ff1bec1a9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6b131342f8
commit
ddb26ed347
+1
@@ -39,6 +39,7 @@ import org.toml.lang.psi.ext.kind
|
||||
class TomlJsonSchemaCompletionContributor : CompletionContributor() {
|
||||
override fun fillCompletionVariants(parameters: CompletionParameters, result: CompletionResultSet) {
|
||||
if (!TomlExperiments.isJsonSchemaEnabled) return
|
||||
if (!TomlJsonSchemaCompletionFileFilter.shouldCompleteInFile(parameters.originalFile)) return
|
||||
|
||||
val position = parameters.position
|
||||
val jsonSchemaService = JsonSchemaService.Impl.get(position.project)
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.toml.ide.json
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
import com.intellij.psi.PsiFile
|
||||
|
||||
interface TomlJsonSchemaCompletionFileFilter {
|
||||
companion object {
|
||||
val EP_NAME = ExtensionPointName.create<TomlJsonSchemaCompletionFileFilter>("org.toml.ide.json.tomlJsonSchemaCompletionFileFilter")
|
||||
|
||||
fun shouldCompleteInFile(file: PsiFile): Boolean = EP_NAME.extensionsIfPointIsRegistered.all { it.shouldCompleteInFile(file) }
|
||||
}
|
||||
|
||||
fun shouldCompleteInFile(file: PsiFile): Boolean
|
||||
}
|
||||
@@ -3,6 +3,13 @@
|
||||
<plugin id="com.intellij.modules.json"/>
|
||||
</dependencies>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint
|
||||
qualifiedName="org.toml.ide.json.tomlJsonSchemaCompletionFileFilter"
|
||||
interface="org.toml.ide.json.TomlJsonSchemaCompletionFileFilter"
|
||||
dynamic="true"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<completion.contributor order="last" language="TOML" id="TomlJsonSchema"
|
||||
implementationClass="org.toml.ide.json.TomlJsonSchemaCompletionContributor"/>
|
||||
|
||||
@@ -34,6 +34,16 @@ class TomlCompletionFixture(
|
||||
doNotContainsCompletion(variants, render)
|
||||
}
|
||||
|
||||
fun checkNotContainsCompletions(
|
||||
code: String,
|
||||
) = withNoAutoCompletion {
|
||||
myFixture.configureByText(defaultFileName, code.trimIndent())
|
||||
val lookups = myFixture.completeBasic()
|
||||
if (lookups.isNotEmpty()) {
|
||||
error("Expected completions to be empty")
|
||||
}
|
||||
}
|
||||
|
||||
fun checkCompletionList(
|
||||
variants: List<String>,
|
||||
code: String,
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package org.toml.ide.json
|
||||
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.testFramework.ExtensionTestUtil
|
||||
|
||||
class TomlJsonSchemaCompletionFileFilterTest : TomlJsonSchemaCompletionTestBase() {
|
||||
fun `test no completion for file when filtered out`() {
|
||||
ExtensionTestUtil.maskExtensions(TomlJsonSchemaCompletionFileFilter.EP_NAME, listOf(TestFileFilterExclude()), testRootDisposable)
|
||||
|
||||
checkNotContainsCompletions("""
|
||||
<caret>
|
||||
""")
|
||||
}
|
||||
|
||||
fun `test complete if filter is not valid for this file`() {
|
||||
ExtensionTestUtil.maskExtensions(TomlJsonSchemaCompletionFileFilter.EP_NAME, listOf(TestFileFilterDoNotExclude()), testRootDisposable)
|
||||
|
||||
checkContainsCompletion(setOf("dependencies"), """
|
||||
dep<caret>
|
||||
""")
|
||||
}
|
||||
}
|
||||
|
||||
private class TestFileFilterExclude: TomlJsonSchemaCompletionFileFilter {
|
||||
override fun shouldCompleteInFile(file: PsiFile): Boolean {
|
||||
return file.name != "Cargo.toml"
|
||||
}
|
||||
}
|
||||
|
||||
private class TestFileFilterDoNotExclude: TomlJsonSchemaCompletionFileFilter {
|
||||
override fun shouldCompleteInFile(file: PsiFile): Boolean {
|
||||
return file.name != "Foo.toml"
|
||||
}
|
||||
}
|
||||
+4
@@ -30,6 +30,10 @@ abstract class TomlJsonSchemaCompletionTestBase : TomlJsonSchemaTestBase() {
|
||||
render: LookupElement.() -> String = { lookupString }
|
||||
) = completionFixture.checkNotContainsCompletion(variants, code, render)
|
||||
|
||||
fun checkNotContainsCompletions(
|
||||
@Language("TOML") code: String,
|
||||
) = completionFixture.checkNotContainsCompletions(code)
|
||||
|
||||
fun doSingleCompletion(
|
||||
@Language("TOML") before: String,
|
||||
@Language("TOML") after: String
|
||||
|
||||
Reference in New Issue
Block a user