Разработка плагинов Intellij - Получить доступ к внутреннему стеку последних активированных редакторов - PullRequest
3 голосов
/ 20 февраля 2020

В среде разработки плагинов intellij я хотел бы получить доступ к тому, что должно быть доступно, какому-то стеку, по сравнению с тем, что редакторы в последний раз активировали.

Я полагаю, это используется "активировать последний открытый файл" .

Создание этого индекса самостоятельно приведет к ошибкам из-за различных способов открытия файла / вкладки.

Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 21 февраля 2020
    /**
     * 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 несколькими способами.

...