Skip to content

Commit

Permalink
Improve read only check
Browse files Browse the repository at this point in the history
Don't fail if got exception while formatting one of files
  • Loading branch information
funbiscuit committed Jul 4, 2023
1 parent 5b365b8 commit 88627e5
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
import com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor;
import com.intellij.codeInsight.actions.RearrangeCodeProcessor;
import com.intellij.codeInsight.actions.ReformatCodeProcessor;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessProvider;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiUtilCore;

import java.util.Objects;

public class FileFormatter implements FileProcessor {
private static final String PROCESS_RESULT_OK = "OK";
Expand All @@ -18,7 +23,10 @@ public FileFormatter(FormatStatistics statistics) {

@Override
public String processFile(PsiFile originalFile) {
if (!originalFile.isWritable()) {
FileDocumentManager documentManager = FileDocumentManager.getInstance();
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(originalFile);
var document = documentManager.getDocument(Objects.requireNonNull(virtualFile));
if (!documentManager.requestWriting(Objects.requireNonNull(document), null)) {
return PROCESS_RESULT_READ_ONLY;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public class FormatCommand implements Callable<Integer> {
private static final String PROJECT_DIR_SUFFIX = ".tmp";
private static final String PROCESS_RESULT_BINARY_FILE = "Skipped, binary file.";
private static final String PROCESS_RESULT_FAILED_OPEN = "Failed to open.";
private static final String PROCESS_RESULT_FAILED_TO_PROCESS = "Failed to process.";

@Option(names = {"-s", "--style"}, required = true, description = "A path to Intellij IDEA code style settings .xml file")
private Path style;
Expand Down Expand Up @@ -103,8 +104,18 @@ public Integer call() throws Exception {

private void processPath(Path filePath) {
messageOutput.info("%s %s... ".formatted(fileProcessor.actionMessage(), filePath));
String result = processPathInternal(filePath);
String result;
Exception ex = null;
try {
result = processPathInternal(filePath);
} catch (Exception e) {
result = PROCESS_RESULT_FAILED_TO_PROCESS;
ex = e;
}
messageOutput.info("%s%n".formatted(result));
if (ex != null) {
ex.printStackTrace();
}
}

private String processPathInternal(Path filePath) {
Expand Down

0 comments on commit 88627e5

Please sign in to comment.