use of com.intellij.psi.PsiFileFactory in project intellij-community by JetBrains.
the class PostfixLiveTemplate method copyFile.
@NotNull
public static PsiFile copyFile(@NotNull PsiFile file, @NotNull StringBuilder fileContentWithoutKey) {
final PsiFileFactory psiFileFactory = PsiFileFactory.getInstance(file.getProject());
PsiFile copy = psiFileFactory.createFileFromText(file.getName(), file.getFileType(), fileContentWithoutKey);
if (copy instanceof PsiFileImpl) {
((PsiFileImpl) copy).setOriginalFile(TemplateLanguageUtil.getBaseFile(file));
}
VirtualFile vFile = copy.getVirtualFile();
if (vFile != null) {
vFile.putUserData(UndoConstants.DONT_RECORD_UNDO, Boolean.TRUE);
}
return copy;
}
use of com.intellij.psi.PsiFileFactory in project intellij-community by JetBrains.
the class LanguageTextField method createDocument.
public static Document createDocument(String value, @Nullable Language language, Project project, @NotNull SimpleDocumentCreator documentCreator) {
if (language != null) {
final PsiFileFactory factory = PsiFileFactory.getInstance(project);
final FileType fileType = language.getAssociatedFileType();
assert fileType != null;
final long stamp = LocalTimeCounter.currentTime();
final PsiFile psiFile = factory.createFileFromText("Dummy." + fileType.getDefaultExtension(), fileType, value, stamp, true, false);
documentCreator.customizePsiFile(psiFile);
final Document document = PsiDocumentManager.getInstance(project).getDocument(psiFile);
assert document != null;
return document;
} else {
return EditorFactory.getInstance().createDocument(value);
}
}
use of com.intellij.psi.PsiFileFactory in project intellij by bazelbuild.
the class BuildElementGenerator method createDummyFile.
public PsiFile createDummyFile(String contents) {
PsiFileFactory factory = PsiFileFactory.getInstance(project);
LightVirtualFile virtualFile = new LightVirtualFile(DUMMY_FILENAME, BuildFileType.INSTANCE, contents);
PsiFile psiFile = ((PsiFileFactoryImpl) factory).trySetupPsiForFile(virtualFile, BuildFileLanguage.INSTANCE, false, true);
assert psiFile != null;
return psiFile;
}
use of com.intellij.psi.PsiFileFactory in project intellij-community by JetBrains.
the class RegExpFactory method createPatternFromText.
@NotNull
public static RegExpPattern createPatternFromText(@NotNull CharSequence text, @NotNull PsiElement context) {
final PsiFileFactory factory = PsiFileFactory.getInstance(context.getProject());
final PsiFile file = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, text);
final RegExpPattern pattern = PsiTreeUtil.getChildOfType(file, RegExpPattern.class);
assert pattern != null;
return pattern;
}
use of com.intellij.psi.PsiFileFactory in project intellij-community by JetBrains.
the class GroupSurrounder method surroundElements.
@Nullable
public TextRange surroundElements(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement[] elements) throws IncorrectOperationException {
assert elements.length == 1 || PsiTreeUtil.findCommonParent(elements) == elements[0].getParent();
final PsiElement e = elements[0];
final ASTNode node = e.getNode();
assert node != null;
final ASTNode parent = node.getTreeParent();
final StringBuilder s = new StringBuilder();
for (int i = 0; i < elements.length; i++) {
final PsiElement element = elements[i];
if (element instanceof RegExpElementImpl) {
s.append(((RegExpElementImpl) element).getUnescapedText());
} else {
s.append(element.getText());
}
if (i > 0) {
final ASTNode child = element.getNode();
assert child != null;
parent.removeChild(child);
}
}
final PsiFileFactory factory = PsiFileFactory.getInstance(project);
final PsiFile f = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, makeReplacement(s));
final RegExpPattern pattern = PsiTreeUtil.getChildOfType(f, RegExpPattern.class);
assert pattern != null;
final RegExpAtom element = pattern.getBranches()[0].getAtoms()[0];
if (isInsideStringLiteral(e)) {
final Document doc = editor.getDocument();
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(doc);
final TextRange tr = e.getTextRange();
doc.replaceString(tr.getStartOffset(), tr.getEndOffset(), StringUtil.escapeStringCharacters(element.getText()));
return TextRange.from(e.getTextRange().getEndOffset(), 0);
} else {
final PsiElement n = e.replace(element);
return TextRange.from(n.getTextRange().getEndOffset(), 0);
}
}
Aggregations