Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Intellij插件开发-访问上次激活的编辑器的内部堆栈_Java_Intellij Idea_Intellij Plugin - Fatal编程技术网

Java Intellij插件开发-访问上次激活的编辑器的内部堆栈

Java Intellij插件开发-访问上次激活的编辑器的内部堆栈,java,intellij-idea,intellij-plugin,Java,Intellij Idea,Intellij Plugin,在intellij插件开发环境中,我希望访问应该可用的内容,以及上次激活的编辑器之上的某种堆栈 我相信这是使用的“激活最近打开的文件” 由于打开文件/选项卡的各种方式,自己构建此索引将导致错误 最好的方法是什么 /** /** * Note, most recent file is last in the list. */ public List<VirtualFile> getRecentFiles() { return

在intellij插件开发环境中,我希望访问应该可用的内容,以及上次激活的编辑器之上的某种堆栈

我相信这是使用的“激活最近打开的文件”

由于打开文件/选项卡的各种方式,自己构建此索引将导致错误

最好的方法是什么

/**
    /**
     * Note, most recent file is last in the list.
     */
    public List<VirtualFile> getRecentFiles() {
            return EditorHistoryManager.getInstance(project).getFileList();
    }
    public VirtualFile getMostRecentFile(int index) {
            return getMostRecentFile(index, true);
    }
    public VirtualFile getMostRecentFile(int index, boolean mustBeOpen) {
            List<VirtualFile> files = getRecentFiles();

            int i = files.size() - index - 1;

            if ( i < files.size() ) {
                    VirtualFile file = files.get(i);

                    if ( mustBeOpen && !isOpen(file) ) {
                            file = getMostRecentFile( index - 1, mustBeOpen );
                    }

                    return file;
            }

            return null;
    }
*注意,最新的文件是列表中的最后一个文件。 */ 公共列表getRecentFiles(){ 返回EditorHistoryManager.getInstance(project.getFileList(); } 公共虚拟文件getMostRecentFile(int索引){ 返回getMostRecentFile(index,true); } 公共虚拟文件getMostRecentFile(int索引,布尔值必须打开){ 列表文件=getRecentFiles(); int i=files.size()-index-1; 如果(i
getMostRecentFile(1)
将在当前活动编辑器之前获取该文件


此处缺少
isOpen
project
,但可以通过几种方式从ActionEvent中检索

我想我已经实现了一个可行的解决方案,虽然它基于EditorHistoryManager,通常会包含所有活动文件的历史记录,但是通过检查它们是否打开,我可以绕过它。我觉得默认的CloseAction应该已经做到了,但是源代码中的代码看起来不是那么可读,也没有可调用的方法。isOpen和project不是它的一部分,但不想发布整个代码库。好的解决方案+1*5