类com.intellij.psi.PsiParserFacade源码实例Demo

下面列出了怎么用com.intellij.psi.PsiParserFacade的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: consulo-csharp   文件: AddUsingUtil.java
@RequiredReadAction
private static void addUsingStatementAfter(@Nonnull CSharpUsingListChild afterElement, @Nonnull CSharpUsingNamespaceStatement newStatement)
{
	CSharpUsingListOwner parent = (CSharpUsingListOwner) afterElement.getParent();

	if(isUsingListContainsNamespace(parent, newStatement.getReferenceText()))
	{
		return;
	}

	Project project = afterElement.getProject();

	PsiElement whiteSpaceFromText = PsiParserFacade.SERVICE.getInstance(project).createWhiteSpaceFromText("\n");

	parent.addAfter(whiteSpaceFromText, afterElement);

	parent.addAfter(newStatement, afterElement.getNode().getTreeNext().getPsi());
}
 
protected void modify(@NonNls @NotNull String qualifiedName) {
  final PsiClass psiClass = findClassAndAssert(qualifiedName);
  final PsiFile psiFile = psiClass.getContainingFile();
  final PsiParserFacade parserFacade = PsiParserFacade.SERVICE.getInstance(myProject);
  final PsiComment comment = parserFacade.createBlockCommentFromText(psiFile.getLanguage(), "Foo");
  WriteCommandAction.runWriteCommandAction(
    myProject,
    ((Runnable) () -> psiFile.add(comment))
  );
  FileDocumentManager manager = FileDocumentManager.getInstance();
  manager.saveAllDocuments();
}
 
@RequiredReadAction
public static void addModifier(@Nonnull CSharpModifierList modifierList, @Nonnull DotNetModifier modifier)
{
	PsiElement anchor = modifierList.getLastChild();

	CSharpFieldDeclaration field = CSharpFileFactory.createField(modifierList.getProject(), modifier.getPresentableText() + " int b");
	PsiElement modifierElement = field.getModifierList().getModifierElement(modifier);

	PsiElement psiElement = modifierList.addAfter(modifierElement, anchor);
	modifierList.addAfter(PsiParserFacade.SERVICE.getInstance(modifierList.getProject()).createWhiteSpaceFromText(" "), psiElement);
}
 
@Override
public void invoke(@NotNull final Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
  ApplicationManager.getApplication().invokeLater(
    new Runnable() {
      @Override
      public void run() {
        if (classModel.getBodyPsi() == null) return;

        final StringBuilder builder = new StringBuilder();
        GetterSetterMethodBuilder.build(builder, field, generateGetter);

        new WriteCommandAction.Simple(project) {
          @Override
          public void run() {
            List<HaxeNamedComponent> elements =
              HaxeElementGenerator.createNamedSubComponentsFromText(project, builder.toString());

            PsiElement body = classModel.getBodyPsi();
            PsiElement anchor = body.getLastChild();

            for (PsiElement element : elements) {
              PsiElement newLine = createNewLine();
              anchor = body.addAfter(element, anchor);
              anchor = body.addBefore(newLine, anchor);
            }
          }

          private PsiElement createNewLine() {
            return PsiParserFacade.SERVICE.getInstance(project).createWhiteSpaceFromText("\n\n");
          }
        }.execute();
      }
    }
  );
}
 
源代码5 项目: consulo   文件: SuppressionUtil.java
@Nonnull
public static PsiComment createComment(@Nonnull Project project,
                                       @Nonnull String commentText,
                                       @Nonnull Language language) {
  final PsiParserFacade parserFacade = PsiParserFacade.SERVICE.getInstance(project);
  return parserFacade.createLineOrBlockCommentFromText(language, commentText);
}
 
public void doInsert(
  @NotNull PsiFile buildFile,
  @NotNull final String targetName,
  @NotNull PantsTargetAddress addressToAdd
) throws IncorrectOperationException {
  final PyCallExpression targetDefinitionExpression = PantsPsiUtil.findTargets(buildFile).get(targetName);
  if (targetDefinitionExpression == null) {
    return;
  }

  final Project project = buildFile.getProject();
  final PyElementGenerator generator = PyElementGenerator.getInstance(project);
  final String targetAddressStringToAdd = addressToAdd.toString();

  final PyExpression dependenciesArgument = targetDefinitionExpression.getKeywordArgument("dependencies");
  if (dependenciesArgument == null) {
    final PyKeywordArgument keywordArgument =
      generator.createKeywordArgument(LanguageLevel.forElement(buildFile), "dependencies", "['"+ targetAddressStringToAdd + "']");
    Optional.ofNullable(targetDefinitionExpression.getArgumentList()).ifPresent(l -> l.addArgument(keywordArgument));
  } else if (dependenciesArgument instanceof PyListLiteralExpression) {
    PyExpression position = null;
    // we assume all elements are sorted.
    for (PyExpression expression : ((PyListLiteralExpression)dependenciesArgument).getElements()) {
      if (expression instanceof PyStringLiteralExpression &&
          targetAddressStringToAdd.compareTo(((PyStringLiteralExpression)expression).getStringValue()) < 0) {
        // found a position to insert
        break;
      }
      position = expression;
    }
    final PyStringLiteralExpression literalToAdd = generator.createStringLiteralAlreadyEscaped("'" + targetAddressStringToAdd + "'");
    if (position != null) {
      final PsiElement newLine = PsiParserFacade.SERVICE.getInstance(project).createWhiteSpaceFromText("\n");
      final PsiElement addedLiteral = dependenciesArgument.addAfter(literalToAdd, position);
      dependenciesArgument.getNode().addChild(newLine.getNode(), addedLiteral.getNode());
    } else {
      dependenciesArgument.add(literalToAdd);
    }
    CodeStyleManager.getInstance(project).reformat(dependenciesArgument);
  }
  FileDocumentManager.getInstance().saveAllDocuments(); // dump VFS to FS before refreshing
  PantsUtil.refreshAllProjects(project);
}
 
源代码7 项目: consulo-csharp   文件: CSharpIntroduceHandler.java
protected PsiElement modifyDeclaration(@Nonnull PsiElement declaration)
{
	PsiElement parent = declaration.getParent();
	parent.addAfter(PsiParserFacade.SERVICE.getInstance(declaration.getProject()).createWhiteSpaceFromText("\n"), declaration);
	return declaration;
}
 
protected static void addStatements(HaxeBlockStatement block, PsiElement[] elements) throws IncorrectOperationException {
  block.addRangeAfter(elements[0], elements[elements.length - 1], block.getFirstChild());
  final PsiElement newLineNode =
    PsiParserFacade.SERVICE.getInstance(block.getProject()).createWhiteSpaceFromText("\n");
  block.addAfter(newLineNode, block.getFirstChild());
}
 
源代码9 项目: intellij-haxe   文件: BaseCreateMethodsFix.java
protected PsiElement afterAddHandler(PsiElement element, PsiElement anchor) {
  final PsiElement newLineNode =
    PsiParserFacade.SERVICE.getInstance(element.getProject()).createWhiteSpaceFromText("\n\n");
  anchor.getParent().addBefore(newLineNode, anchor);
  return anchor;
}
 
 类所在包
 类方法
 同包方法