IDEA-85591 Avoid exception on opening code style settings from the welcome screen

Temporary workaround for the disabled PSI -> document synchronisation for default project
This commit is contained in:
Denis.Zhdanov
2012-05-03 13:18:59 +04:00
parent 3dc09fc31d
commit 411af3e4e9
2 changed files with 18 additions and 1 deletions
@@ -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());
}
}
}
}
@@ -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;