mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[registry] IJPL-175398 Move plugin registry keys out of the platform registry.properties
GitOrigin-RevId: 70ed1d4864da4788fd77a719a9063b560c5bb5d6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
24c4e4b024
commit
b42ac48323
@@ -108,6 +108,7 @@
|
||||
<keymapExtension implementation="com.intellij.debugger.actions.DebuggerKeymapExtension"/>
|
||||
|
||||
<xdebugger.settings implementation="com.intellij.debugger.settings.JavaDebuggerSettings"/>
|
||||
<registryKey key="execution.java.always.debug" defaultValue="false" description="Always run java processes with the debug agent"/>
|
||||
|
||||
<xdebugger.breakpointGroupingRule implementation="com.intellij.debugger.ui.XBreakpointGroupingByPackageRule"/>
|
||||
<xdebugger.breakpointGroupingRule implementation="com.intellij.debugger.ui.XBreakpointGroupingByClassRule"/>
|
||||
@@ -219,6 +220,8 @@
|
||||
description="The timeout between the hit run-to-cursor breakpoint in another thread/coroutine and pause the debugger"/>
|
||||
<registryKey key="debugger.run.to.cursor.waited.threads.limit" defaultValue="1"
|
||||
description="How many of threads allow to wait on the hit run-to-cursor breakpoint for the desired hit"/>"/>
|
||||
<registryKey key="debugger.log.jdi.in.unit.tests" defaultValue="false"
|
||||
description="Enable full JDI logging under DebugProcessImpl.LOG.debug for unit tests"/>
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
|
||||
@@ -365,5 +365,8 @@
|
||||
<referenceInjector implementation="com.intellij.microservices.jvm.url.HttpUrlReferenceInjector"/>
|
||||
<referenceInjector implementation="com.intellij.microservices.jvm.url.WSUrlReferenceInjector"/>
|
||||
<referenceInjector implementation="com.intellij.microservices.jvm.url.HttpMethodReferenceInjector"/>
|
||||
|
||||
<registryKey key="batch.inspections.ignored.jvm.languages" defaultValue="Groovy,Scala"
|
||||
description="Disable UAST processing for JVM languages; a comma separated list of UAST capable language ids."/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
||||
@@ -678,10 +678,6 @@
|
||||
implementationClass="com.intellij.codeInsight.hint.NextParameterAfterCompletionHandler"/>
|
||||
<compiler.updateResourcesBuildContributor implementation="com.intellij.compiler.impl.JavaResourcesBuildContributor"/>
|
||||
|
||||
<!--<expectedTypesProvider implementation="com.intellij.codeInsight.JavaExpectedTypesProvider"/>-->
|
||||
|
||||
|
||||
|
||||
<projectService serviceImplementation="com.intellij.execution.testDiscovery.JavaAutoRunManager"/>
|
||||
<registryKey defaultValue="true" description="Trigger autotest on delay instead of build events" key="trigger.autotest.on.delay"/>
|
||||
|
||||
@@ -811,6 +807,10 @@
|
||||
<applicationService serviceInterface="com.intellij.execution.vmOptions.VMOptionsService"
|
||||
serviceImplementation="com.intellij.execution.vmOptions.VMOptionsServiceImpl"/>
|
||||
|
||||
<registryKey key="ide.jvm.run.marker" defaultValue="false" description="Enable JVM-lang-based run line markers"/>
|
||||
<registryKey key="ide.jvm.command.line.clear.all.environments" defaultValue="true"
|
||||
description="Clear all environments when running a JVM command line application"/>
|
||||
|
||||
<runDashboardCustomizer implementation="com.intellij.execution.CommonJavaRunDashboardCustomizer" id="commonJavaCustomizer"/>
|
||||
|
||||
<warmupConfigurator implementation="com.intellij.ide.warmup.JdkWarmupConfigurator"/>
|
||||
@@ -2785,12 +2785,19 @@
|
||||
<registryKey key="java.completion.methods.use.tags"
|
||||
defaultValue="true"
|
||||
description="Use additional tags for methods for completion"/>
|
||||
<registryKey key="ide.java.completion.suggest.static.after.instance"
|
||||
defaultValue="false"
|
||||
description="Suggest static methods/fields after instance qualifier in Java completion"/>
|
||||
|
||||
<registryKey key="java.create.compact.source.file.separately"
|
||||
defaultValue="true"
|
||||
description="Show 'Create java compact file' separately from all other classes"/>
|
||||
|
||||
<virtualFileCustomDataProvider implementation="com.intellij.ide.JavaCodeStyleSettingsCustomDataSynchronizer"/>
|
||||
|
||||
<registryKey key="compiler.external.javac.keep.alive.timeout" defaultValue="300000"
|
||||
description="If not used for the specified period of time or longer, the IDE will shut down the cached javac compilation process"/>
|
||||
<registryKey key="compiler.build.can.use.eel" defaultValue="true" description="Allow using Eel API to run build processes"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains">
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+5
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
Highlights keys in `registry.properties` that are not allowed in the platform registry and must be moved to plugins.
|
||||
</body>
|
||||
</html>
|
||||
@@ -659,7 +659,13 @@
|
||||
implementation="org.jetbrains.idea.devkit.references.MessageBundleReferenceContributor$ImplicitUsageProvider"/>
|
||||
<codeInsight.implicitSubclassProvider implementation="org.jetbrains.idea.devkit.inspections.DevKitImplicitSubclassProvider"/>
|
||||
|
||||
<annotator language="Properties" implementationClass="org.jetbrains.idea.devkit.inspections.RegistryPropertiesAnnotator"/>
|
||||
<localInspection language="Properties"
|
||||
level="ERROR"
|
||||
enabledByDefault="true"
|
||||
key="inspections.plugin.keys.in.platform.registry"
|
||||
groupPathKey="inspections.group.path" groupKey="inspections.group.code"
|
||||
shortName="PluginKeysAreProhibitedInPlatformRegistry"
|
||||
implementationClass="org.jetbrains.idea.devkit.inspections.RegistryPropertiesInspection"/>
|
||||
|
||||
<moduleService serviceImplementation="org.jetbrains.idea.devkit.build.PluginBuildConfiguration"/>
|
||||
<backgroundPostStartupActivity
|
||||
|
||||
@@ -832,4 +832,5 @@ plugins.go.description=Go language
|
||||
plugins.php.description=PHP language
|
||||
plugins.ruby.description=Ruby language
|
||||
plugins.rust.description=Rust language
|
||||
inspection.use.optimized.eel.functions.display.name=Use optimized function from EelApi
|
||||
inspection.use.optimized.eel.functions.display.name=Use optimized function from EelApi
|
||||
inspections.plugin.keys.in.platform.registry=Plugin keys defined in platform regitry.properties
|
||||
@@ -2,36 +2,27 @@
|
||||
|
||||
package org.jetbrains.idea.devkit.inspections
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo
|
||||
import com.intellij.codeInsight.intention.preview.IntentionPreviewUtils
|
||||
import com.intellij.lang.annotation.AnnotationHolder
|
||||
import com.intellij.lang.annotation.Annotator
|
||||
import com.intellij.lang.annotation.HighlightSeverity
|
||||
import com.intellij.lang.properties.psi.PropertiesFile
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.lang.properties.PropertiesImplUtil
|
||||
import com.intellij.lang.properties.psi.impl.PropertyImpl
|
||||
import com.intellij.lang.properties.psi.impl.PropertyKeyImpl
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.DumbAware
|
||||
import com.intellij.openapi.project.IntelliJProjectUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.util.IncorrectOperationException
|
||||
import com.intellij.util.PsiNavigateUtil
|
||||
import org.jetbrains.annotations.Nls
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.idea.devkit.DevKitBundle
|
||||
import java.util.*
|
||||
|
||||
@NonNls
|
||||
internal const val REGISTRY_PROPERTIES_FILENAME = "registry.properties"
|
||||
|
||||
@NonNls
|
||||
internal const val DESCRIPTION_SUFFIX = ".description"
|
||||
|
||||
@NonNls
|
||||
internal const val RESTART_REQUIRED_SUFFIX = ".restartRequired"
|
||||
|
||||
internal fun isImplicitUsageKey(keyName: String): Boolean {
|
||||
@@ -39,120 +30,120 @@ internal fun isImplicitUsageKey(keyName: String): Boolean {
|
||||
keyName.endsWith(RESTART_REQUIRED_SUFFIX)
|
||||
}
|
||||
|
||||
private val PLUGIN_GROUP_NAMES = setOf(
|
||||
"appcode", "cidr", "clion",
|
||||
"cvs", "git", "github", "svn", "hg4idea", "tfs",
|
||||
"dart", "markdown",
|
||||
"java", "javac", "uast", "junit4", "dsm",
|
||||
"js", "javascript", "typescript", "nodejs", "eslint", "jest",
|
||||
"ruby", "rubymine",
|
||||
"groovy", "grails", "python", "php",
|
||||
"kotlin", "spring", "jupyter", "dataspell", "javafx",
|
||||
"maven", "gradle", "android", "eclipse",
|
||||
"rider", "compiler"
|
||||
)
|
||||
|
||||
internal fun isRegistryPropertiesFile(psiFile: PsiFile): Boolean {
|
||||
return IntelliJProjectUtil.isIntelliJPlatformProject(psiFile.project) && psiFile.name == REGISTRY_PROPERTIES_FILENAME
|
||||
}
|
||||
|
||||
/**
|
||||
* Highlights key in `registry.properties` without matching `key.description` entry + corresponding quickfix.
|
||||
*/
|
||||
private class RegistryPropertiesAnnotator : Annotator, DumbAware {
|
||||
@NonNls
|
||||
private val PLUGIN_GROUP_NAMES = setOf(
|
||||
"appcode", "cidr", "clion",
|
||||
"cvs", "git", "github", "svn", "hg4idea", "tfs",
|
||||
"dart", "markdown",
|
||||
"java", "javac", "uast", "junit4", "dsm",
|
||||
"js", "javascript", "typescript", "nodejs", "eslint", "jest",
|
||||
"ruby", "rubymine",
|
||||
"groovy", "grails", "python", "php",
|
||||
"kotlin", "spring", "jupyter", "dataspell", "javafx",
|
||||
"maven", "gradle", "android", "eclipse"
|
||||
)
|
||||
internal class RegistryPropertiesInspection : LocalInspectionTool() {
|
||||
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
|
||||
if (!isRegistryPropertiesFile(holder.file)) return PsiElementVisitor.EMPTY_VISITOR
|
||||
|
||||
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
|
||||
if (element !is PropertyKeyImpl) return
|
||||
val propertiesFile = PropertiesImplUtil.getPropertiesFile(holder.file)
|
||||
|
||||
val file = holder.currentAnnotationSession.file
|
||||
if (!isRegistryPropertiesFile(file)) {
|
||||
return
|
||||
}
|
||||
return object : PsiElementVisitor() {
|
||||
override fun visitElement(element: PsiElement) {
|
||||
if (element !is PropertyKeyImpl) return
|
||||
|
||||
val propertyName = element.text
|
||||
if (isImplicitUsageKey(propertyName)) {
|
||||
return
|
||||
}
|
||||
val propertyName = element.text
|
||||
if (isImplicitUsageKey(propertyName)) {
|
||||
return
|
||||
}
|
||||
|
||||
val groupName = propertyName.substringBefore('.').lowercase(Locale.getDefault())
|
||||
val groupName = propertyName.substringBefore('.').lowercase(Locale.getDefault())
|
||||
|
||||
if (PLUGIN_GROUP_NAMES.contains(groupName) ||
|
||||
propertyName.startsWith("editor.config.") ||
|
||||
propertyName.startsWith("debugger.kotlin.") ||
|
||||
propertyName.startsWith("debugger.enable.kotlin.") ||
|
||||
propertyName.startsWith("ide.java.") ||
|
||||
propertyName.startsWith("execution.java.") ||
|
||||
propertyName.startsWith("debugger.log.jdi.")) {
|
||||
if (PLUGIN_GROUP_NAMES.contains(groupName) ||
|
||||
propertyName.startsWith("editor.config.") ||
|
||||
propertyName.startsWith("debugger.kotlin.") ||
|
||||
propertyName.startsWith("debugger.enable.kotlin.") ||
|
||||
propertyName.startsWith("ide.java.") ||
|
||||
propertyName.startsWith("ide.jvm.") ||
|
||||
propertyName.startsWith("idea.profiler.") ||
|
||||
propertyName.startsWith("execution.java.") ||
|
||||
propertyName.startsWith("debugger.log.jdi.")) {
|
||||
|
||||
holder.newAnnotation(HighlightSeverity.ERROR, DevKitBundle.message("registry.properties.annotator.plugin.keys.use.ep"))
|
||||
.withFix(ShowEPDeclarationIntention(propertyName)).create()
|
||||
}
|
||||
holder.registerProblem(
|
||||
element,
|
||||
DevKitBundle.message("registry.properties.annotator.plugin.keys.use.ep"),
|
||||
ShowEPDeclarationIntention(propertyName, element)
|
||||
)
|
||||
}
|
||||
|
||||
val propertiesFile = file as PropertiesFile
|
||||
val descriptionProperty = propertiesFile.findPropertyByKey(propertyName + DESCRIPTION_SUFFIX)
|
||||
if (descriptionProperty == null) {
|
||||
holder.newAnnotation(HighlightSeverity.WARNING,
|
||||
DevKitBundle.message("registry.properties.annotator.key.no.description.key", propertyName))
|
||||
.withFix(AddDescriptionKeyIntention(propertyName)).create()
|
||||
val descriptionProperty = propertiesFile?.findPropertyByKey(propertyName + DESCRIPTION_SUFFIX)
|
||||
if (descriptionProperty == null) {
|
||||
holder.registerProblem(
|
||||
element,
|
||||
DevKitBundle.message("registry.properties.annotator.key.no.description.key", propertyName),
|
||||
ProblemHighlightType.WARNING,
|
||||
AddDescriptionKeyIntention(propertyName, element)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ShowEPDeclarationIntention(private val propertyName: String) : IntentionAction, DumbAware {
|
||||
override fun startInWriteAction(): Boolean = false
|
||||
private class ShowEPDeclarationIntention(private val propertyName: String, element: PsiElement) : LocalQuickFixOnPsiElement(element), DumbAware {
|
||||
override fun startInWriteAction(): Boolean = false
|
||||
override fun getFamilyName(): String = DevKitBundle.message("registry.properties.annotator.show.ep.family.name")
|
||||
override fun getText(): String = DevKitBundle.message("registry.properties.annotator.show.ep.name", propertyName)
|
||||
|
||||
override fun generatePreview(project: Project, editor: Editor, psiFile: PsiFile): IntentionPreviewInfo {
|
||||
return IntentionPreviewInfo.EMPTY
|
||||
override fun invoke(project: Project, psiFile: PsiFile, startElement: PsiElement, endElement: PsiElement) {
|
||||
val propertiesFile = psiFile.let { PropertiesImplUtil.getPropertiesFile(it) } ?: return
|
||||
val defaultValue = propertiesFile.findPropertyByKey(propertyName)?.value
|
||||
val description = propertiesFile.findPropertyByKey(propertyName + DESCRIPTION_SUFFIX)?.value
|
||||
@NonNls var restartRequiredText = ""
|
||||
if (propertiesFile.findPropertyByKey(propertyName + RESTART_REQUIRED_SUFFIX) != null) {
|
||||
restartRequiredText = "restartRequired=\"true\""
|
||||
}
|
||||
|
||||
override fun getFamilyName(): String = DevKitBundle.message("registry.properties.annotator.show.ep.family.name")
|
||||
|
||||
override fun isAvailable(project: Project, editor: Editor?, psiFile: PsiFile?): Boolean = true
|
||||
|
||||
override fun getText(): String = DevKitBundle.message("registry.properties.annotator.show.ep.name", propertyName)
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, psiFile: PsiFile?) {
|
||||
val propertiesFile = psiFile as PropertiesFile
|
||||
val defaultValue = propertiesFile.findPropertyByKey(propertyName)!!.value
|
||||
val description = propertiesFile.findPropertyByKey(propertyName + DESCRIPTION_SUFFIX)?.value
|
||||
@NonNls var restartRequiredText = ""
|
||||
if (propertiesFile.findPropertyByKey(propertyName + RESTART_REQUIRED_SUFFIX) != null) {
|
||||
restartRequiredText = "restartRequired=\"true\""
|
||||
}
|
||||
|
||||
val epText = """
|
||||
val epText = """
|
||||
<registryKey key="${propertyName}" defaultValue="${defaultValue}" ${restartRequiredText}
|
||||
description="${description}"/>
|
||||
""".trimIndent()
|
||||
Messages.showMultilineInputDialog(project,
|
||||
DevKitBundle.message("registry.properties.annotator.show.ep.message"),
|
||||
DevKitBundle.message("registry.properties.annotator.show.ep.title"),
|
||||
epText, null, null)
|
||||
}
|
||||
Messages.showMultilineInputDialog(project,
|
||||
DevKitBundle.message("registry.properties.annotator.show.ep.message"),
|
||||
DevKitBundle.message("registry.properties.annotator.show.ep.title"),
|
||||
epText, null, null)
|
||||
}
|
||||
|
||||
private class AddDescriptionKeyIntention(private val myPropertyName: String) : IntentionAction, DumbAware {
|
||||
override fun generatePreview(project: Project, previewDescriptor: ProblemDescriptor): IntentionPreviewInfo = IntentionPreviewInfo.EMPTY
|
||||
}
|
||||
|
||||
@Nls
|
||||
override fun getText(): String = DevKitBundle.message("registry.properties.annotator.add.description.text", myPropertyName)
|
||||
private class AddDescriptionKeyIntention(private val myPropertyName: String, element: PsiElement) : LocalQuickFixOnPsiElement(element), DumbAware {
|
||||
override fun startInWriteAction(): Boolean = true
|
||||
override fun getText(): @Nls String = DevKitBundle.message("registry.properties.annotator.add.description.text", myPropertyName)
|
||||
override fun getFamilyName(): @Nls String = DevKitBundle.message("registry.properties.annotator.add.description.family.name")
|
||||
|
||||
@Nls
|
||||
override fun getFamilyName(): String = DevKitBundle.message("registry.properties.annotator.add.description.family.name")
|
||||
override fun invoke(project: Project, psiFile: PsiFile, startElement: PsiElement, endElement: PsiElement) {
|
||||
val propertiesFile = psiFile.let { PropertiesImplUtil.getPropertiesFile(it) } ?: return
|
||||
|
||||
override fun isAvailable(project: Project, editor: Editor, psiFile: PsiFile): Boolean = true
|
||||
val originalProperty = propertiesFile.findPropertyByKey(myPropertyName)
|
||||
val descriptionProperty = propertiesFile.addPropertyAfter(myPropertyName + DESCRIPTION_SUFFIX, "Description", originalProperty)
|
||||
|
||||
@Throws(IncorrectOperationException::class)
|
||||
override fun invoke(project: Project, editor: Editor, psiFile: PsiFile) {
|
||||
val propertiesFile = psiFile as PropertiesFile
|
||||
|
||||
val originalProperty = propertiesFile.findPropertyByKey(myPropertyName) as PropertyImpl?
|
||||
val descriptionProperty = propertiesFile.addPropertyAfter(myPropertyName + DESCRIPTION_SUFFIX, "Description", originalProperty)
|
||||
|
||||
val valueNode = (descriptionProperty.psiElement as PropertyImpl).valueNode!!
|
||||
if (!IntentionPreviewUtils.isPreviewElement(valueNode.psi)) {
|
||||
PsiNavigateUtil.navigate(valueNode.psi)
|
||||
val psi = descriptionProperty.psiElement
|
||||
if (psi is PropertyImpl) {
|
||||
val valuePsi = psi.valueNode?.psi ?: psi
|
||||
if (!IntentionPreviewUtils.isPreviewElement(valuePsi)) {
|
||||
PsiNavigateUtil.navigate(valuePsi)
|
||||
}
|
||||
}
|
||||
|
||||
override fun startInWriteAction(): Boolean = true
|
||||
else if (!IntentionPreviewUtils.isPreviewElement(psi)) {
|
||||
PsiNavigateUtil.navigate(psi)
|
||||
}
|
||||
}
|
||||
|
||||
override fun generatePreview(project: Project, previewDescriptor: ProblemDescriptor): IntentionPreviewInfo = IntentionPreviewInfo.EMPTY
|
||||
}
|
||||
+1
-1
@@ -12,7 +12,7 @@ import java.util.stream.Stream;
|
||||
|
||||
public class DevkitInspectionsRegistrationCheckTest extends BasePlatformTestCase {
|
||||
|
||||
private static final int EXPECTED_INSPECTIONS_NUMBER = 87;
|
||||
private static final int EXPECTED_INSPECTIONS_NUMBER = 88;
|
||||
|
||||
/**
|
||||
* Inspections that are finished and intentionally disabled.
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ public class PluginConfigReferenceTest extends JavaCodeInsightFixtureTestCase {
|
||||
assertEquals(AllIcons.Nodes.PluginRestart, plugin.getIcon());
|
||||
|
||||
final LookupElementPresentation properties = getLookupElementPresentation("vcs.showConsole");
|
||||
assertEquals(" Show 'Console' tab in VCS toolwindow that logs all write-commands performed by IDE.", properties.getTailText());
|
||||
assertEquals(" Show the 'Console' tab in the VCS toolwindow that logs all write-commands performed by IDE.", properties.getTailText());
|
||||
assertEquals("true", properties.getTypeText());
|
||||
assertEquals(AllIcons.Nodes.Plugin, properties.getIcon());
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<![CDATA[
|
||||
Enables interoperability with Eclipse and provides the following features:
|
||||
<ul>
|
||||
<li>Open Eclipse project in IntelliJ IDEA</li>
|
||||
<li>Import Eclipse project into IntelliJ IDEA</li>
|
||||
<li>Open an Eclipse project in IntelliJ IDEA</li>
|
||||
<li>Import an Eclipse project into IntelliJ IDEA</li>
|
||||
<li>Export IntelliJ IDEA project into Eclipse</li>
|
||||
<li>Convert IntelliJ IDEA module to Eclipse-compatible format</li>
|
||||
<li>Synchronize Eclipse project files</li>
|
||||
@@ -48,6 +48,7 @@
|
||||
<notificationGroup id="Unknown Natures Detected" displayType="BALLOON" bundle="messages.EclipseBundle" key="notification.group.unknown.natures"/>
|
||||
<welcome.projectDetector implementation="org.jetbrains.idea.eclipse.detect.EclipseProjectDetector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="org.jetbrains.idea.eclipse.detect.EclipseProjectDetectorUsagesCollector"/>
|
||||
<registryKey key="eclipse.scan.home.directory" defaultValue="true" description="Scan home directory for existing Eclipse projects"/>
|
||||
</extensions>
|
||||
<actions>
|
||||
<action id="ExportToEclipse" class="org.jetbrains.idea.eclipse.export.ExportEclipseProjectsAction">
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.util.JDOMUtil;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.io.FileSystemUtil;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.impl.welcomeScreen.ProjectDetector;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
@@ -53,7 +54,7 @@ public final class EclipseProjectDetector extends ProjectDetector {
|
||||
for (String appLocation : getStandardAppLocations()) {
|
||||
collectProjects(projects, Path.of(appLocation));
|
||||
}
|
||||
if (PropertiesComponent.getInstance().getBoolean("eclipse.scan.home.directory", true)) {
|
||||
if (Registry.is("eclipse.scan.home.directory", true)) {
|
||||
visitFiles(new File(home), file1 -> scanForProjects(file1.getPath(), projects), 2);
|
||||
}
|
||||
}
|
||||
@@ -80,7 +81,7 @@ public final class EclipseProjectDetector extends ProjectDetector {
|
||||
ProjectGroup group = ContainerUtil.find(manager.getGroups(), g -> groupName.equals(g.getName()));
|
||||
String property = "eclipse.projects.detected";
|
||||
if (group == null && PropertiesComponent.getInstance().isValueSet(property)) {
|
||||
// the group was removed by user
|
||||
// the user removed the group
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,10 @@
|
||||
description="Specifies port at which Gradle target server process will wait for debugger connections. -1 means disabled feature."/>
|
||||
<registryKey key="gradle.refresh.project.outputs" defaultValue="true"
|
||||
description="After a Gradle task, do a shallow refresh of modules outputs in VFS"/>
|
||||
<registryKey key="android.gradle.project.startup.activity.disabled" defaultValue="false"
|
||||
description="Disable Gradle post-startup activity for Android projects"/>
|
||||
<registryKey key="android.sdk.local.properties.update.disabled" defaultValue="false"
|
||||
description="Disable update android sdk for local.properties"/>
|
||||
|
||||
<localInspection language="UAST" groupPath="Gradle" shortName="ConfigurationAvoidance"
|
||||
bundle="messages.GradleInspectionBundle"
|
||||
|
||||
@@ -210,6 +210,8 @@
|
||||
|
||||
<search.optionContributor implementation="org.jetbrains.plugins.gradle.config.GradleSearchableOptionContributor"/>
|
||||
|
||||
<registryKey key="GRADLE.system.in.process" defaultValue="true"
|
||||
description="Whether IDEA should use 'in-process' mode for interaction with Gradle API"/>
|
||||
<registryKey key="gradle.daemon.jvm.criteria" defaultValue="true"
|
||||
description="Enable the Gradle Daemon JVM criteria allowing to detect provisioning required toolchain for the build"/>
|
||||
<registryKey key="gradle.daemon.jvm.criteria.new.project" defaultValue="false"
|
||||
@@ -246,6 +248,9 @@
|
||||
<registryKey key="gradle.daemon.legacy.dependency.resolver" defaultValue="false"
|
||||
description="Use ArtifactResolutionQuery instead of ArtifactView to resolve Javadoc/Sources"/>
|
||||
<registryKey key="gradle.sync.use.eel.for.wsl" defaultValue="true" description="Use EEL API for WSL projects"/>
|
||||
<registryKey key="gradle.auto.auto.jdk.fix.disabled" defaultValue="false"
|
||||
description="Disable attempt to fix unknown JDK in Gradle configuration on project open"/>
|
||||
|
||||
<commandLineInspectionProjectConfigurator implementation="org.jetbrains.plugins.gradle.GradleCommandLineProjectConfigurator"/>
|
||||
<warmupConfigurator implementation="org.jetbrains.plugins.gradle.GradleWarmupConfigurator"/>
|
||||
<notificationGroup id="Gradle Notification Group" displayType="STICKY_BALLOON" bundle="messages.GradleBundle" key="notification.group.gradle"/>
|
||||
|
||||
@@ -105,6 +105,9 @@
|
||||
<internalFileTemplate name="FxmlFile"/>
|
||||
|
||||
<spellchecker.bundledDictionaryProvider implementation="org.jetbrains.plugins.javaFX.JavafxBundledDictionaryProvider"/>
|
||||
|
||||
<registryKey key="javafx.fxml.controller.from.loader" defaultValue="false"
|
||||
description="Resolve FXML controllers specified with FXMLLoader.setController()"/>
|
||||
</extensions>
|
||||
|
||||
<projectListeners>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<debugger.creationStackTraceProvider implementation="org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineAsyncStackTraceProvider"/>
|
||||
<debugger.dumpItemsProvider implementation="org.jetbrains.kotlin.idea.debugger.coroutine.view.CoroutinesDumpAsyncProvider"/>
|
||||
<registryKey key="debugger.kotlin.show.coroutines.in.threadDumpPanel" defaultValue="true"
|
||||
description="Merge coroutine dump with thread dump in ThreadDumpPanel"/>
|
||||
|
||||
<runConfigurationExtension implementation="org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineDebugConfigurationExtension"/>
|
||||
|
||||
@@ -38,6 +40,8 @@
|
||||
<applicationService
|
||||
serviceInterface="org.jetbrains.kotlin.idea.debugger.core.StackFrameInterceptor"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineStackFrameInterceptor"/>
|
||||
<registryKey key="debugger.kotlin.auto.show.coroutines.view" defaultValue="false"
|
||||
description="Automatically open coroutines view if stack trace contains coroutine stack frames"/>
|
||||
|
||||
<xdebugger.settings implementation="org.jetbrains.kotlin.idea.debugger.KotlinDebuggerSettings"/>
|
||||
<xdebugger.breakpointType implementation="org.jetbrains.kotlin.idea.debugger.breakpoints.KotlinFieldBreakpointType"/>
|
||||
@@ -47,7 +51,7 @@
|
||||
<debugger.compoundRendererProvider id="KotlinClassRendererProvider"
|
||||
implementation="org.jetbrains.kotlin.idea.debugger.core.render.KotlinClassRendererProvider"/>
|
||||
<debugger.positionManagerFactory implementation="org.jetbrains.kotlin.idea.debugger.core.KotlinPositionManagerFactory"/>
|
||||
|
||||
<registryKey key="debugger.kotlin.inline.stack.trace.enabled" defaultValue="true" description="Enable inline stack trace"/>
|
||||
|
||||
<debugger.sourcePositionHighlighter implementation="org.jetbrains.kotlin.idea.debugger.core.KotlinSourcePositionHighlighter"/>
|
||||
<debugger.sourcePositionProvider implementation="org.jetbrains.kotlin.idea.debugger.core.KotlinSourcePositionProvider"/>
|
||||
@@ -64,6 +68,8 @@
|
||||
<debuggerEditorTextProvider
|
||||
language="kotlin"
|
||||
implementationClass="org.jetbrains.kotlin.idea.debugger.core.EnclosingKotlinEditorTextProvider"/>
|
||||
<registryKey key="debugger.kotlin.analysis.api.editor.text.provider" defaultValue="true"
|
||||
description="Use Analysis API-based implementation of 'EditorTextProvider'"/>
|
||||
|
||||
<debuggerClassFilterProvider implementation="org.jetbrains.kotlin.idea.debugger.core.filter.KotlinDebuggerInternalClassesFilterProvider"/>
|
||||
|
||||
@@ -100,5 +106,21 @@
|
||||
description="Use Analysis API-based implementation for file applicability checker"
|
||||
defaultValue="false"
|
||||
restartRequired="false"/>
|
||||
<registryKey
|
||||
key="debugger.kotlin.multiline.lambda.breakpoints"
|
||||
defaultValue="false"
|
||||
description="Allow installing breakpoint on multiline lambdas"/>
|
||||
<registryKey
|
||||
key="debugger.kotlin.report.smart.step.into.targets.detection.failure"
|
||||
defaultValue="true"
|
||||
description="Report an error when smart targets detection in bytecode failed (leads to a failure in tests)"/>
|
||||
<registryKey
|
||||
key="debugger.kotlin.step.through.inline.lambdas"
|
||||
defaultValue="true"
|
||||
description="Step over action steps into inline lambdas (e.g., calls of let/run/synchronized/...)"/>
|
||||
<registryKey
|
||||
key="debugger.enable.kotlin.evaluator.in.java.context"
|
||||
defaultValue="false"
|
||||
description="Enable Kotlin evaluation features when hitting/suspending in Java frames (suggest Kotlin language in evaluation prompts, conditional breakpoints, and 'Evaluate and log' field; support Kotlin watches)"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<postStartupActivity implementation="org.jetbrains.idea.maven.project.MavenProjectsManagerProjectActivity"/>
|
||||
|
||||
<registryKey key="MAVEN.system.in.process" defaultValue="true"
|
||||
description="Whether IDEA should use 'in-process' mode for interaction with Maven API"/>
|
||||
|
||||
<pathMacroContributor implementation="org.jetbrains.idea.maven.utils.MavenPathMacroContributor"/>
|
||||
<projectPathMacroContributor implementation="org.jetbrains.idea.maven.utils.MavenProjectPathMacroContributor"/>
|
||||
<buildProcess.parametersProvider implementation="org.jetbrains.idea.maven.utils.MavenBuildProcessParameterProvider"/>
|
||||
|
||||
@@ -93,6 +93,9 @@
|
||||
instance="com.intellij.pycharm.community.ide.impl.settings.MemoryUsageConfigurable"
|
||||
groupId="root"/>
|
||||
|
||||
<registryKey key="dataspell.interpreter.widget" defaultValue="true"
|
||||
description="Interpreter widget for lightweight interpreter management"/>
|
||||
|
||||
<statusBarWidgetFactory id="pythonInterpreterWidget"
|
||||
implementation="com.intellij.pycharm.community.ide.impl.configuration.PySdkStatusBarWidgetFactory"
|
||||
order="after CodeStyleStatusBarWidget, before git, before hg, before Notifications"/>
|
||||
|
||||
Reference in New Issue
Block a user