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);
}
Aggregations