@Nullable private static PsiElement findTargetElement(@NotNull Project project, @NotNull XSourcePosition position, @NotNull Editor editor, @NotNull String name) { PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); if (file == null || !file.getVirtualFile().equals(position.getFile())) return null; ASTNode leafElement = file.getNode().findLeafElementAt(position.getOffset()); if (leafElement == null) return null; GoTopLevelDeclaration topLevel = PsiTreeUtil.getTopmostParentOfType(leafElement.getPsi(), GoTopLevelDeclaration.class); SyntaxTraverser<PsiElement> traverser = SyntaxTraverser.psiTraverser(topLevel) .filter(e -> e instanceof GoNamedElement && Comparing.equal(name, ((GoNamedElement)e).getName())); Iterator<PsiElement> iterator = traverser.iterator(); return iterator.hasNext() ? iterator.next() : null; }
@Override @Nullable public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { ASTNode node = psiFile.getNode(); if (node == null || node.getElementType() != SoyFileType.FILE || !(psiFile instanceof SoyFile)) { return null; } return new TreeBasedStructureViewBuilder() { @NotNull @Override public StructureViewModel createStructureViewModel(Editor editor) { return new TextEditorBasedStructureViewModel(psiFile) { @NotNull @Override public StructureViewTreeElement getRoot() { return new SoyRootTreeElement((SoyFile)psiFile); } }; } }; } }
@NotNull @Override public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) { PsiFile containingFile = element.getContainingFile().getViewProvider().getPsi(ProtoLanguage.INSTANCE); ASTNode fileNode = containingFile.getNode(); Wrap wrap = Wrap.createWrap(WrapType.NONE, false); Alignment alignment = Alignment.createAlignment(); ProtoFileBlock block = new ProtoFileBlock(fileNode, wrap, alignment, settings); return FormattingModelProvider.createFormattingModelForPsiFile(containingFile, block, settings); }
@Nullable private Block getInjectedLanguageRoot() { if (myInjectedPsiFile == null || StringUtil.isEmptyOrSpaces(getInjectedTreeRange().subSequence(myInjectedPsiFile.getNode().getChars()))) { return null; } FormattingModelBuilder builder = getInjectedBuilder(); if (builder == null) { return null; } final FormattingModel childModel = builder.createModel(myInjectedPsiFile, mySettings); return new PerlInjectedLanguageBlockWrapper(childModel.getRootBlock(), this); }
TreeUtil.ensureParsed(file.getNode()); return state.items;
@NotNull public FormattingModel createModel(final PsiElement element, final CodeStyleSettings settings) { ASTNode node = element.getNode(); assert node != null; PsiFile containingFile = element.getContainingFile(); ASTNode astNode = containingFile.getNode(); assert astNode != null; BashProjectSettings projectSettings = BashProjectSettings.storedSettings(containingFile.getProject()); if (!projectSettings.isFormatterEnabled()) { return FormattingModelProvider.createFormattingModelForPsiFile(containingFile, new NoOpBlock(astNode), settings); } return FormattingModelProvider.createFormattingModelForPsiFile(containingFile, new BashBlock(astNode, null, Indent.getAbsoluteNoneIndent(), null, settings), settings); }
public void actionPerformed(AnActionEvent event) { Editor editor = event.getData(PlatformDataKeys.EDITOR); Project project = event.getData(PlatformDataKeys.PROJECT); DialogBuilder dialogBuilder = new DialogBuilder(project); dialogBuilder.setTitle("Formatting Block structure"); final String text = editor != null ? editor.getDocument().getText() : ""; final CodeStyleSettings settings = CodeStyle.getDefaultSettings(); MathematicaFormattingModelBuilder modelBuilder = new MathematicaFormattingModelBuilder(); final PsiFile file = PsiFileFactory.getInstance(project).createFileFromText("a.m", MathematicaLanguage.INSTANCE, text); final FormattingModel model = modelBuilder.createModel(file.getNode().getPsi(), settings); final Block rootBlock = model.getRootBlock(); final String blockText = printBlock((AbstractBlock) rootBlock, text); JTextArea textArea = new JTextArea(blockText); final JScrollPane pane = new JScrollPane(textArea); dialogBuilder.setCenterPanel(pane); dialogBuilder.show(); } }
int newLineIndex = StringUtil.indexOf(currentFile.getNode().getChars(), "\n", stringElement.getTextRange().getEndOffset()); if (newLineIndex > 1) { PsiElement anchor = currentFile.findElementAt(newLineIndex);
@Test public void testVariablesFolding() { String fileContent = "TMP_DIR=tmpDir\nDECOMPILED_SRC_DIR=\"$TMP_DIR/../../data/decompiled_src\""; PsiFile psiFile = myFixture.configureByText(BashFileType.BASH_FILE_TYPE, fileContent); BashVariableFoldingBuilder builder = new BashVariableFoldingBuilder(); FoldingDescriptor[] regions = builder.buildFoldRegions(psiFile.getNode(), myFixture.getDocument(psiFile)); Assert.assertEquals(1, regions.length); Assert.assertEquals("(35,43)", regions[0].getRange().toString()); }
PsiFile file = psiFileFactory.createFileFromText("a.bnf", BnfLanguage.INSTANCE, text, true, false); file.putUserData(GeneratedParserUtilBase.COMPLETION_STATE_KEY, state); TreeUtil.ensureParsed(file.getNode()); PsiFile file2 = psiFileFactory.createFileFromText("a.bnf", BnfLanguage.INSTANCE, text2, true, false); file2.putUserData(GeneratedParserUtilBase.COMPLETION_STATE_KEY, state); TreeUtil.ensureParsed(file2.getNode());