Intellij 插件开发 - 访问最后激活的编辑器的内部堆栈
Intellij plugin development - Get access to internal stack of last activated editors
在 intellij 插件开发环境中,我想访问上次激活的编辑器上应该可用的某种堆栈。
我相信这是被 "activate most recently opened file" 使用的。
自己建这个索引会因为各种打开方式而出错file/tab。
最好的方法是什么?
/**
* 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;
}
getMostRecentFile(1)
会先于当前活动的编辑器获取文件。
此处缺少 isOpen
和 project
,但可以通过多种方式从 AnActionEvent 事件中检索。
在 intellij 插件开发环境中,我想访问上次激活的编辑器上应该可用的某种堆栈。
我相信这是被 "activate most recently opened file" 使用的。
自己建这个索引会因为各种打开方式而出错file/tab。
最好的方法是什么?
/**
* 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;
}
getMostRecentFile(1)
会先于当前活动的编辑器获取文件。
isOpen
和 project
,但可以通过多种方式从 AnActionEvent 事件中检索。