use of com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade in project intellij-community by JetBrains.
the class ParagraphFillHandler method performOnElement.
protected void performOnElement(@NotNull final PsiElement element, @NotNull final Editor editor) {
final Document document = editor.getDocument();
final TextRange textRange = getTextRange(element, editor);
if (textRange.isEmpty())
return;
final String text = textRange.substring(element.getContainingFile().getText());
final List<String> subStrings = StringUtil.split(text, "\n", true);
final String prefix = getPrefix(element);
final String postfix = getPostfix(element);
final StringBuilder stringBuilder = new StringBuilder();
appendPrefix(element, text, stringBuilder);
for (String string : subStrings) {
final String startTrimmed = StringUtil.trimStart(string.trim(), prefix.trim());
final String str = StringUtil.trimEnd(startTrimmed, postfix.trim());
final String finalString = str.trim();
if (!StringUtil.isEmptyOrSpaces(finalString))
stringBuilder.append(finalString).append(" ");
}
appendPostfix(element, text, stringBuilder);
final String replacementText = stringBuilder.toString();
CommandProcessor.getInstance().executeCommand(element.getProject(), () -> {
document.replaceString(textRange.getStartOffset(), textRange.getEndOffset(), replacementText);
final CodeFormatterFacade codeFormatter = new CodeFormatterFacade(CodeStyleSettingsManager.getSettings(element.getProject()), element.getLanguage());
final PsiFile file = element.getContainingFile();
FormatterTagHandler formatterTagHandler = new FormatterTagHandler(CodeStyleSettingsManager.getSettings(file.getProject()));
List<TextRange> enabledRanges = formatterTagHandler.getEnabledRanges(file.getNode(), TextRange.create(0, document.getTextLength()));
codeFormatter.doWrapLongLinesIfNecessary(editor, element.getProject(), document, textRange.getStartOffset(), textRange.getStartOffset() + replacementText.length() + 1, enabledRanges);
}, null, document);
}
use of com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade in project intellij-community by JetBrains.
the class FileSetFormatter method reformatFile.
private void reformatFile(@NotNull Project project, @NotNull final PsiFile file, @NotNull Document document) {
WriteCommandAction.runWriteCommandAction(project, () -> {
CodeFormatterFacade formatterFacade = new CodeFormatterFacade(mySettings, file.getLanguage());
formatterFacade.processText(file, new FormatTextRanges(new TextRange(0, file.getTextLength()), true), false);
PsiDocumentManager.getInstance(project).commitDocument(document);
});
}
use of com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade in project intellij-community by JetBrains.
the class PostprocessReformattingAspect method getFormatterFacade.
@NotNull
private CodeFormatterFacade getFormatterFacade(@NotNull FileViewProvider viewProvider) {
final CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myPsiManager.getProject());
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(myPsiManager.getProject());
final Document document = viewProvider.getDocument();
assert document != null;
final CodeFormatterFacade codeFormatter = new CodeFormatterFacade(styleSettings, viewProvider.getBaseLanguage());
documentManager.commitDocument(document);
return codeFormatter;
}
use of com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade in project intellij-community by JetBrains.
the class JavaExtractor method getDiffer.
@NotNull
@Override
public Differ getDiffer(final Project project, PsiFile psiFile, CodeStyleSettings settings) {
return new DifferBase(project, psiFile, settings) {
@Override
public String reformattedText() {
JavaCodeFragment file = JavaCodeFragmentFactory.getInstance(project).createCodeBlockCodeFragment(myOrigText, myFile, false);
WriteCommandAction.runWriteCommandAction(myProject, "CodeStyleSettings extractor", "CodeStyleSettings extractor", () -> {
ASTNode treeElement = SourceTreeToPsiMap.psiToTreeNotNull(file);
SourceTreeToPsiMap.treeElementToPsi(new CodeFormatterFacade(mySettings, file.getLanguage()).processElement(treeElement));
}, file);
return file.getText();
}
};
}
Aggregations