Java Intellij插件开发-访问上次激活的编辑器的内部堆栈
在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
/**
/**
* 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