Search in sources :

Example 1 with FormatterTagHandler

use of com.intellij.formatting.FormatterTagHandler 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);
}
Also used : FormatterTagHandler(com.intellij.formatting.FormatterTagHandler) TextRange(com.intellij.openapi.util.TextRange) UnfairTextRange(com.intellij.openapi.util.UnfairTextRange) CodeFormatterFacade(com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade) Document(com.intellij.openapi.editor.Document)

Aggregations

FormatterTagHandler (com.intellij.formatting.FormatterTagHandler)1 Document (com.intellij.openapi.editor.Document)1 TextRange (com.intellij.openapi.util.TextRange)1 UnfairTextRange (com.intellij.openapi.util.UnfairTextRange)1 CodeFormatterFacade (com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade)1