mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 05:21:29 +07:00
[code style] IDEA-327617 migrate production code that uses doWithTemporarySettings to runWithLocalSettings
`doWithTemporarySettings` uses a global variable under the hood and its concurrent usages lead to race conditions. `runWithLocalSettings` provides the same functionality in a thread-safe manner using a thread-local variable. GitOrigin-RevId: 0d32cb8ac2e3347f4b5fabda8092d399827b2d6a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2d160c85d3
commit
bf688b75fb
@@ -58,7 +58,7 @@ public class TextBlockBackwardMigrationInspection extends AbstractBaseJavaLocalI
|
||||
CodeStyleSettings tempSettings = CodeStyle.getSettings(file);
|
||||
tempSettings.getCommonSettings(JavaLanguage.INSTANCE).ALIGN_MULTILINE_BINARY_OPERATION = true;
|
||||
CodeStyleManager manager = CodeStyleManager.getInstance(literalExpression.getProject());
|
||||
CodeStyle.doWithTemporarySettings(project, tempSettings, () -> {
|
||||
CodeStyle.runWithLocalSettings(project, tempSettings, () -> {
|
||||
PsiElement result = new CommentTracker().replaceAndRestoreComments(literalExpression, replacement);
|
||||
manager.reformat(result);
|
||||
});
|
||||
|
||||
@@ -225,7 +225,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable, ComponentHig
|
||||
|
||||
applySettingsToModel();
|
||||
final Ref<PsiFile> formatted = Ref.create();
|
||||
CodeStyle.doWithTemporarySettings(
|
||||
CodeStyle.runWithLocalSettings(
|
||||
project,
|
||||
mySettings,
|
||||
settings -> {
|
||||
@@ -270,7 +270,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable, ComponentHig
|
||||
private Document collectChangesBeforeCurrentSettingsAppliance(@NotNull Project project) {
|
||||
PsiFile psiFile = createFileFromText(project, myTextToReformat);
|
||||
prepareForReformat(psiFile);
|
||||
CodeStyle.doWithTemporarySettings(
|
||||
CodeStyle.runWithLocalSettings(
|
||||
project,
|
||||
mySettings,
|
||||
settings -> {
|
||||
|
||||
@@ -155,7 +155,7 @@ public class ReformatCodeProcessor extends AbstractLayoutCodeProcessor {
|
||||
boolean doNotKeepLineBreaks = confirmSecondReformat(file);
|
||||
return new FutureTask<>(() -> {
|
||||
Ref<Boolean> result = new Ref<>();
|
||||
CodeStyle.doWithTemporarySettings(myProject, CodeStyle.getSettings(fileToProcess), (settings) -> {
|
||||
CodeStyle.runWithLocalSettings(myProject, CodeStyle.getSettings(fileToProcess), (settings) -> {
|
||||
if (doNotKeepLineBreaks) {
|
||||
settings.getCommonSettings(fileToProcess.getLanguage()).KEEP_LINE_BREAKS = false;
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ public final class FixDocCommentAction extends EditorAction {
|
||||
}
|
||||
|
||||
private static void reformatCommentKeepingEmptyTags(@NotNull PsiFile file, @NotNull Project project, int start, int end) {
|
||||
CodeStyle.doWithTemporarySettings(
|
||||
CodeStyle.runWithLocalSettings(
|
||||
project,
|
||||
CodeStyle.getSettings(file),
|
||||
tempSettings -> {
|
||||
|
||||
@@ -53,7 +53,7 @@ public final class SelectedTextFormatter {
|
||||
void reformatSelectedText(@NotNull CodeStyleSettings reformatSettings) {
|
||||
final SelectionModel model = myEditor.getSelectionModel();
|
||||
if (model.hasSelection()) {
|
||||
CodeStyle.doWithTemporarySettings(myProject, reformatSettings, () -> reformatRange(myFile, getSelectedRange()));
|
||||
CodeStyle.runWithLocalSettings(myProject, reformatSettings, () -> reformatRange(myFile, getSelectedRange()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,9 +50,9 @@ public final class CodeStyleSettingsCodeFragmentFilter {
|
||||
|
||||
public @NotNull CodeStyleSettingsToShow getFieldNamesAffectingCodeFragment(LanguageCodeStyleSettingsProvider.SettingsType... types) {
|
||||
Ref<CodeStyleSettingsToShow> settingsToShow = new Ref<>();
|
||||
CodeStyle.doWithTemporarySettings(myProject,
|
||||
CodeStyle.getSettings(myFile),
|
||||
tempSettings -> settingsToShow.set(computeFieldsWithTempSettings(tempSettings, types)));
|
||||
CodeStyle.runWithLocalSettings(myProject,
|
||||
CodeStyle.getSettings(myFile),
|
||||
tempSettings -> settingsToShow.set(computeFieldsWithTempSettings(tempSettings, types)));
|
||||
return settingsToShow.get();
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ final class EditorConfigPreviewFile extends LightVirtualFile implements CodeStyl
|
||||
CodeStyleSettings settings = CodeStyle.getSettings(originalPsiFile);
|
||||
PsiFile psiFile = createPsi(originalPsiFile.getFileType());
|
||||
psiFile.putUserData(PsiFileFactory.ORIGINAL_FILE, originalPsiFile);
|
||||
CodeStyle.doWithTemporarySettings(
|
||||
CodeStyle.runWithLocalSettings(
|
||||
myProject, settings, () -> CodeStyleManager.getInstance(myProject).reformatText(psiFile, 0, psiFile.getTextLength()));
|
||||
myDocument.replaceString(0, myDocument.getTextLength(), psiFile.getText());
|
||||
}
|
||||
|
||||
@@ -4,9 +4,7 @@ package org.jetbrains.kotlin.idea.codeInsight.inspections.shared
|
||||
import com.intellij.application.options.CodeStyle
|
||||
import com.intellij.codeInsight.intention.FileModifier
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.codeInspection.options.OptPane
|
||||
import com.intellij.codeInspection.options.OptPane.*
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel
|
||||
import com.intellij.codeInspection.util.InspectionMessage
|
||||
import com.intellij.codeInspection.util.IntentionFamilyName
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -15,7 +13,6 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.inspections.AbstractKotlinInspection
|
||||
@@ -33,7 +30,6 @@ import org.jetbrains.kotlin.idea.util.leafIgnoringWhitespaceAndComments
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||
import javax.swing.JComponent
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
internal class TrailingCommaInspection(
|
||||
@@ -198,12 +194,11 @@ internal class TrailingCommaInspection(
|
||||
override fun applyFix(project: Project, problemDescriptor: ProblemDescriptor) {
|
||||
val element = commaOwnerPointer.element ?: return
|
||||
val range = createFormatterTextRange(element)
|
||||
val settings = CodeStyleSettingsManager.getInstance(project).cloneSettings(CodeStyle.getSettings(element.containingKtFile))
|
||||
settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true
|
||||
settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA_ON_CALL_SITE = true
|
||||
CodeStyle.doWithTemporarySettings(project, settings, Runnable {
|
||||
CodeStyle.runWithLocalSettings(project, CodeStyle.getSettings(element.containingKtFile)) { tempSettings ->
|
||||
tempSettings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true
|
||||
tempSettings.kotlinCustomSettings.ALLOW_TRAILING_COMMA_ON_CALL_SITE = true
|
||||
CodeStyleManager.getInstance(project).reformatRange(element, range.startOffset, range.endOffset)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun createFormatterTextRange(commaOwner: KtElement): TextRange {
|
||||
|
||||
Reference in New Issue
Block a user