diff --git a/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java b/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java index c749f99cb6a7..814fb688a7dd 100644 --- a/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java +++ b/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java @@ -101,6 +101,8 @@ public class AbstractCommonUpdateAction extends AbstractVcsAction { public void run() { ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator(); + int toBeProcessed = updateEnvToVirtualFiles.size(); + int processed = 0; for (Iterator iterator = updateEnvToVirtualFiles.keySet().iterator(); iterator.hasNext();) { UpdateEnvironment updateEnvironment = iterator.next(); updateEnvironment.fillGroups(updatedFiles); @@ -108,6 +110,8 @@ public class AbstractCommonUpdateAction extends AbstractVcsAction { UpdateSession updateSession = updateEnvironment.updateDirectories(files.toArray(new FilePath[files.size()]), updatedFiles, progressIndicator); + processed++; + progressIndicator.setFraction((double) processed / (double) toBeProcessed); vcsExceptions.addAll(updateSession.getExceptions()); updateSessions.add(updateSession); } diff --git a/source/com/intellij/psi/impl/source/codeStyle/CodeEditUtil.java b/source/com/intellij/psi/impl/source/codeStyle/CodeEditUtil.java index 2d7f69d7db8c..823e57f1a595 100644 --- a/source/com/intellij/psi/impl/source/codeStyle/CodeEditUtil.java +++ b/source/com/intellij/psi/impl/source/codeStyle/CodeEditUtil.java @@ -12,6 +12,8 @@ import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.tree.*; import com.intellij.util.CharTable; import com.intellij.util.containers.HashMap; +import com.intellij.codeFormatting.PseudoTextBuilder; +import com.intellij.codeFormatting.PseudoText; public class CodeEditUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.codeStyle.CodeEditUtil"); @@ -402,4 +404,25 @@ public class CodeEditUtil { } } } + + public static String getWhiteSpaceBetweenTokens(LeafElement first, LeafElement second) { + final PsiElement firstAsPsiElement = SourceTreeToPsiMap.treeElementToPsi(first); + LOG.assertTrue(firstAsPsiElement != null); + final PsiFile file = firstAsPsiElement.getContainingFile(); + final FileType fileType = file.getVirtualFile().getFileType(); + final PseudoTextBuilder pseudoTextBuilder = fileType.getPseudoTextBuilder(); + LOG.assertTrue(pseudoTextBuilder != null); + final Project project = firstAsPsiElement.getProject(); + final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(project).getCurrentSettings(); + final int startOffset = first.getStartOffset(); + final int endOffset = second.getStartOffset(); + + final PseudoText pseudoText = pseudoTextBuilder.build(project, + settings, + file, + 0, + file.getTextLength()); + + return GeneralCodeFormatter.getWhiteSpaceBetweenTokens(pseudoText, settings, fileType, startOffset, endOffset); + } }