如何同步使用代码的IntelliJ当前的文件?

chesspriest:

我正在写一个插件,它会插入getter和setter方法到当前的java文件。我的问题是,我每次运行它好像没有变化发生在插件的时间。然而,变化确实发生了,但只有当我进入文件| 同步?他们在文件中显示出来。

我打开了自动同步设置,但这并不解决问题。我也试图寻找到的IntelliJ社区版的源代码,试图看代码隐藏文件是什么| 同步但没有管理。

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);
}

我想代码写入到文件,然后该文件在最后进行同步。

任何帮助或方向将是巨大的。

chesspriest:

下面的代码行解决我的问题:

VirtualFileManager.getInstance().syncRefresh()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用WSL / linux在Windows上同步代码文件?

如何只同步当前文件夹?

如何使用当前文件夹名称代码并作为名称文件放置?

使用IntelliJ IDEA创建后如何生成当前文件标题注释

Linux中当前的语言环境如何影响使用C代码中的文件名?

如何写入文件同步使用Java?

如何使用make保持文件同步?

如何同步Java代码

此代码如何同步?

Intellij IDEA插件如何获取当前打开的文件的路径?

Intellij IDEA插件如何获取当前选择的文件的路径?

使用当前时间同步显示

如何使用Java代码从具有当前日期和时间的文件夹中获取文件名

如何使用IDE设置同步插件上载IntelliJ IDEA设置?

如何获取当前正在执行的javascript代码的文件路径

从C代码获取当前使用的文件描述符的计数

以前的实现是同步的时如何使用异步代码

可疑方法:如何使用重载方法移植代码以(同步)smallltalk

如何使用C#在异步方法中重用同步代码

如何使用JS保存当前HTML文件

如何获得当前用户在intellij中使用的主题?

Vim:如何将NERDTree与当前打开的选项卡文件路径同步?

使用 youtube-dl 将当前文件夹中的项目与播放列表同步

如何同步单个文件?

如何更改代码以同步运行

如何同步回调代码?

如何使用rbind()当前优化此R代码?

如何获得UWP中当前使用的代码页?

如何在php中使用当前日期时间代码