private static int getOffsetStart(final PsiFile file, final int startLine, final int startColumn) { final int[] retVal = {-1}; final ThrowableRunnable getOffset = new ThrowableRunnable() { public void run() { final Document document = PsiDocumentManager.getInstance(file.getProject()) .getDocument(file); final int line = getValidLineNumber(startLine, document); final int offset = StringUtil .lineColToOffset(file.getText(), line, startColumn - 1); retVal[0] = offset <= 1 ? 1 : offset; } }; ReadAction.run(getOffset); return retVal[0]; }
private List<ClientInputFile> getInputFiles(Module module, VirtualFileTestPredicate testPredicate, Collection<VirtualFile> filesToAnalyze) { List<ClientInputFile> inputFiles = new LinkedList<>(); ReadAction.run(() -> filesToAnalyze.stream() .map(f -> createClientInputFile(module, f, testPredicate)) .filter(Objects::nonNull) .forEach(inputFiles::add)); return inputFiles; }
private Map<VirtualFile, String> getRelativePaths(Project project, Collection<VirtualFile> files) { Map<VirtualFile, String> relativePathPerFile = new HashMap<>(); ReadAction.run(() -> { for (VirtualFile file : files) { String relativePath = appUtils.getPathRelativeToProjectBaseDir(project, file); if (relativePath != null) { relativePathPerFile.put(file, relativePath); } } }); return relativePathPerFile; }
private static void showError(@NotNull Project project, @NotNull String message) { ReadAction.run(() -> { if (!project.isDisposed()) { Notifications.Bus.notify( new Notification( PerlBundle.message("perl.coverage.loading.error"), PerlBundle.message("perl.coverage.loading.error"), message, NotificationType.ERROR ), project ); } }); }
@Override public void actionPerformed(AnActionEvent e) { Project project = e.getProject(); ApplicationManager.getApplication().assertReadAccessAllowed(); if (project != null) { IssueManager issueManager = SonarLintUtils.get(project, IssueManager.class); DaemonCodeAnalyzer codeAnalyzer = SonarLintUtils.get(project, DaemonCodeAnalyzer.class); ReadAction.run(() -> { issueManager.clear(); // run annotator to remove highlighting of issues FileEditorManager editorManager = FileEditorManager.getInstance(project); VirtualFile[] openFiles = editorManager.getOpenFiles(); Collection<PsiFile> psiFiles = findFiles(project, openFiles); psiFiles.forEach(codeAnalyzer::restart); }); } }