Я пишу плагин, который будет вставлять методы получения и установки в текущий файл Java. Моя проблема в том, что каждый раз, когда я запускаю плагин, кажется, что никаких изменений не происходит. Однако изменения происходят, но только после того, как я захожу в File | Синхронизировать они отображаются в файле.
У меня включена автоматическая синхронизация настроек, но это не решает проблему. Я также попытался заглянуть в исходный код Intellij Community Edition, чтобы попытаться выяснить, какой код скрывается за File | Синхронизировать, но не удалось.
public void makeGetters(AnActionEvent e, ArrayList<String> lines, String mainLine) {
Project project = e.getProject();
Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
Document document = FileEditorManager.getInstance(project).getSelectedTextEditor().getDocument();
SelectionModel selectionModel = editor.getSelectionModel();
VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document);
String fileName = virtualFile.getPath();
String method = "Error method not initiated";
String returnType = "Error return type not initiated";
for (String s : lines) {
String[] lineArray = s.split(" ");
if (s.contains(" String ")) {
returnType = "String";
}
else if (s.contains(" int ")) {
returnType = "int";
}
else if (s.contains(" double ")) {
returnType = "double";
}
else if (s.contains(" boolean ")) {
returnType = "boolean";
}
method = "\n\tpublic " + returnType + " getName () { return " + lineArray[5] + " }\n";
try {
insert(fileName, method, mainLine);
} catch (IOException exception) {
Messages.showInfoMessage("IOException in insert method", "IOException!");
} finally {
//Some line(s) of code which will synchronize the document.
}
public void insert(String fileName, String method, String mainLine) throws IOException {
Path path = Paths.get(fileName);
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int line = lines.indexOf(" public static void main(String[] args) {") - 1;
lines.add(line,method);
Files.write(path, lines, StandardCharsets.UTF_8);
}
Я хотел бы, чтобы код записывался в файл, а затем для синхронизации файла в конце.
Любая помощь или направление было бы здорово.