@NotNull public static CharacterPosition offsetToCharacterPosition(@NotNull final Editor editor, final int offset) { int line = editor.getDocument().getLineNumber(normalizeOffset(editor, offset)); int col = offset - editor.getDocument().getLineStartOffset(line); return new CharacterPosition(line, col); }
@NotNull private static String excerpt(@NotNull PsiFile containingFile, @NotNull PsiElement element) { StringBuilder excerptBuilder = new StringBuilder(); excerptBuilder.append('\n'); excerptBuilder.append("### Excerpt\n"); excerptBuilder.append('\n'); excerptBuilder.append("```\n"); excerptBuilder.append(element.getText()); excerptBuilder.append('\n'); excerptBuilder.append("```\n"); FileViewProvider fileViewProvider = containingFile.getViewProvider(); Document document = fileViewProvider.getDocument(); if (document != null) { TextRange textRange = element.getTextRange(); int startingLine = document.getLineNumber(textRange.getStartOffset()); int endingLine = document.getLineNumber(textRange.getEndOffset()); excerptBuilder.append(" Line(s) "); excerptBuilder.append(startingLine); excerptBuilder.append('-'); excerptBuilder.append(endingLine); VirtualFile virtualFile = containingFile.getVirtualFile(); if (virtualFile != null) { excerptBuilder.append(" in "); excerptBuilder.append(virtualFile.getPath()); } excerptBuilder.append("\n"); } return excerptBuilder.toString(); }
private void addMarker(@NotNull Collection<LineMarkerInfo> result, @NotNull Set<Integer> lines, @NotNull PsiElement definition, @NotNull PsiElement implementation) { // Get the document manager; PsiDocumentManager documentManager = PsiDocumentManager.getInstance(definition.getProject()); // Get the document. Document document = documentManager.getDocument(implementation.getContainingFile()); if (document == null) { return; } // Get the offset of the current element. int textOffset = implementation.getTextOffset(); // Get the line number of the current element. int lineNumber = document.getLineNumber(textOffset); if (!lines.contains(lineNumber)) { // Add the number to the set. lines.add(lineNumber); // Return a new line marker. result.add(new BallerinaImplementedFunctionMarkerInfo(definition, implementation)); result.add(new BallerinaImplementingFunctionMarkerInfo(implementation, definition)); } }
@Override public void collectSlowLineMarkers(@NotNull List<PsiElement> elements, @NotNull Collection<LineMarkerInfo> result) { Set<Integer> lines = ContainerUtil.newHashSet(); for (PsiElement element : elements) { if (element instanceof GoCallExpr) { PsiElement resolve = GoPsiImplUtil.resolveCall((GoCallExpr)element); if (resolve instanceof GoFunctionOrMethodDeclaration) { if (isRecursiveCall(element, (GoFunctionOrMethodDeclaration)resolve)) { PsiDocumentManager instance = PsiDocumentManager.getInstance(element.getProject()); Document document = instance.getDocument(element.getContainingFile()); int textOffset = element.getTextOffset(); if (document == null) continue; int lineNumber = document.getLineNumber(textOffset); if (!lines.contains(lineNumber)) { result.add(new RecursiveMethodCallMarkerInfo(element)); } lines.add(lineNumber); } } } } }
document.getLineNumber(openingElement.getStartOffset()) != document.getLineNumber(closingElement.getStartOffset())) { tailWrap = Wrap.createWrap(WrapType.ALWAYS, true);
private boolean firstOnLine(@NotNull ASTNode node) { Document document = document(node.getPsi()); assert document != null; int nodeStartOffset = node.getStartOffset(); int lineNumber = document.getLineNumber(nodeStartOffset); int lineStartOffset = document.getLineStartOffset(lineNumber); String prefix = document.getText(new TextRange(lineStartOffset, nodeStartOffset)); return isWhitespace(prefix); }
@Override public boolean autoImportReferenceAtCursor(@NotNull Editor editor, @NotNull PsiFile file) { if (!file.getViewProvider().getLanguages().contains(GoLanguage.INSTANCE) || !DaemonListeners.canChangeFileSilently(file)) { return false; } int caretOffset = editor.getCaretModel().getOffset(); Document document = editor.getDocument(); int lineNumber = document.getLineNumber(caretOffset); int startOffset = document.getLineStartOffset(lineNumber); int endOffset = document.getLineEndOffset(lineNumber); List<PsiElement> elements = CollectHighlightsUtil.getElementsInRange(file, startOffset, endOffset); for (PsiElement element : elements) { if (element instanceof GoCompositeElement) { for (PsiReference reference : element.getReferences()) { GoImportPackageQuickFix fix = new GoImportPackageQuickFix(reference); if (fix.doAutoImportOrShowHint(editor, false)) { return true; } } } } return false; }
PsiElement rbrace = block.getRbrace(); int lbraceEndOffset = lbrace.getTextRange().getEndOffset(); int startLine = document.getLineNumber(lbraceEndOffset); int endLine = rbrace != null ? document.getLineNumber(rbrace.getTextRange().getStartOffset()) : startLine; int lineDiff = endLine - startLine; if (lineDiff < 2) {
private void removeEmptyLineIfNecessary(final Editor editor) { final int offset = editor.getCaretModel().getOffset(); final int lineNumber = editor.getDocument().getLineNumber(offset); final int lineStartOffset = editor.getDocument().getLineStartOffset(lineNumber); final int lineEndOffset = editor.getDocument().getLineEndOffset(lineNumber); final String lineContent = editor.getDocument().getText().substring(lineStartOffset, lineEndOffset); if ("".equals(lineContent.trim())) { final int endIndex = editor.getDocument().getText().length() > lineEndOffset ? lineEndOffset + 1 : lineEndOffset; editor.getDocument().deleteString(lineStartOffset, endIndex); } }
private void removeEmptyLineIfNecessary(final Editor editor) { final int offset = editor.getCaretModel().getOffset(); final int lineNumber = editor.getDocument().getLineNumber(offset); final int lineStartOffset = editor.getDocument().getLineStartOffset(lineNumber); final int lineEndOffset = editor.getDocument().getLineEndOffset(lineNumber); final String lineContent = editor.getDocument().getText().substring(lineStartOffset, lineEndOffset); if ("".equals(lineContent.trim())) { final int endIndex = editor.getDocument().getText().length() > lineEndOffset ? lineEndOffset + 1 : lineEndOffset; editor.getDocument().deleteString(lineStartOffset, endIndex); } }
/** * @return line number of the node or -1 if node is null or document missing */ private int getNodeLine(@Nullable ASTNode node) { Document document = getDocument(); return node == null || document == null ? -1 : document.getLineNumber(node.getStartOffset()); } }
@Override protected void run() throws Throwable { int position = document.getLineEndOffset(document.getLineNumber(anchorOffset)); document.insertString(position, text); } }.execute();
private static int getLineOffset(Document document, final int offset) { return 0 <= offset && offset < document.getTextLength() ? document.getLineStartOffset(document.getLineNumber(offset)) : 0; } }
private static void addHeaderFoldingDescriptor(List<FoldingDescriptor> descriptors, PsiElement root, Document document) { TextRange range = getFileHeader(root); if (range != null && range.getLength() > 1 && document.getLineNumber(range.getEndOffset()) > document.getLineNumber(range.getStartOffset())) { descriptors.add(new FoldingDescriptor(root, range)); } }
public static int getElementLineNumber(PsiElement element) { FileViewProvider fileViewProvider = element.getContainingFile().getViewProvider(); if (fileViewProvider.getDocument() != null) { return fileViewProvider.getDocument().getLineNumber(element.getTextOffset()) + 1; } return 0; }
@Override public int getLineNumber() { PsiFile file = getContainingFile(); if (file == null) { return 0; } Document document = PsiDocumentManager.getInstance(getProject()).getCachedDocument(file); return document == null ? 0 : document.getLineNumber(getTextOffset()) + 1; }
@Override public int getLineNumber() { Document document = PsiDocumentManager.getInstance(getProject()).getCachedDocument(getContainingFile()); return document == null ? 0 : document.getLineNumber(getTextOffset()) + 1; }
public static int getElementEndLineNumber(PsiElement element) { FileViewProvider fileViewProvider = element.getContainingFile().getViewProvider(); if (fileViewProvider.getDocument() != null) { return fileViewProvider.getDocument().getLineNumber(element.getTextOffset() + element.getTextLength()) + 1; } return 0; }
@Override public Integer getLine() { if (range != null && isValid()) { AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); try { return range.getDocument().getLineNumber(range.getStartOffset()) + 1; } finally { accessToken.finish(); } } return null; }
public static TextRange getLineRange(@NotNull PsiElement psiElement) { Project project = psiElement.getProject(); PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project); Document document = documentManager.getDocument(psiElement.getContainingFile().getContainingFile()); if (document == null) { return TextRange.EMPTY_RANGE; } int line = document.getLineNumber(psiElement.getTextOffset()); int lineEndOffset = document.getLineEndOffset(line); return new TextRange(psiElement.getTextOffset(),lineEndOffset); } }