From 411af3e4e9c4b192cf3e336d3cbcd7e66f38aff0 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Thu, 3 May 2012 13:18:36 +0400 Subject: [PATCH] IDEA-85591 Avoid exception on opening code style settings from the welcome screen Temporary workaround for the disabled PSI -> document synchronisation for default project --- .../src/com/intellij/formatting/FormatProcessor.java | 12 ++++++++++++ .../psi/formatter/PsiBasedFormattingModel.java | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java index ae8a514bd9ee..e3ba65302ee2 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java @@ -16,6 +16,7 @@ package com.intellij.formatting; +import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.TextChange; @@ -27,6 +28,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.formatter.DocumentBasedFormattingModel; +import com.intellij.psi.formatter.PsiBasedFormattingModel; import com.intellij.util.ui.UIUtil; import gnu.trove.TIntObjectHashMap; import org.jetbrains.annotations.NotNull; @@ -1408,6 +1410,16 @@ class FormatProcessor { if (done) { myModel.commitChanges(); + + // TODO [cdr] remove when IDEA-85591 is done + if (myModel instanceof PsiBasedFormattingModel) { + PsiBasedFormattingModel psiModel = ((PsiBasedFormattingModel)myModel); + final ASTNode rootNode = psiModel.getRootNode(); + final Document document = psiModel.getDocumentModel().getDocument(); + if (rootNode != null && !document.getText().equals(rootNode.getText())) { + document.setText(rootNode.getText()); + } + } } } diff --git a/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java b/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java index db3220decc5e..a7a551a78b62 100644 --- a/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java +++ b/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -134,6 +134,11 @@ public class PsiBasedFormattingModel implements FormattingModel { public Block getRootBlock() { return myRootBlock; } + + @Nullable + public ASTNode getRootNode() { + return myASTNode; + } public void canModifyAllWhiteSpaces() { myCanModifyAllWhiteSpaces = true;