Используйте команду vscode.open из TreeDataProvider

Как открыть файл из настраиваемого элемента древовидного представления при создании расширения vscode? Вот пример элемента древовидного представления:

import { URI } from 'vscode-uri';
import { TreeDataProvider, ProviderResult, TreeItem } from 'vscode';

export class CustomTreeProvider implements TreeDataProvider<TreeItem>{

    public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
        if (!element) {
            return [{
                id: 'some-unique-id',
                label: 'some-unique-label',
                command: {
                    command: 'vscode.open',
                    title: 'Open',
                    arguments: [URI.file('path/to/file']
                }
            }];
        }
    }

}

Однако всякий раз, когда я нажимаю на этот элемент представления в виде дерева, в консоли появляется следующее сообщение:

[renderer7] [ошибка] Выполнение добавленной команды: 'vscode.open' не удалось. Недопустимый аргумент «ресурс» - ресурс, который нужно открыть: Ошибка: выполнение добавленной команды: «vscode.open» не удалось. Недопустимый аргумент "ресурс" - ресурс для открытия

У меня есть обходной путь, при котором я могу зарегистрировать свою собственную команду для открытия файла, но я бы предпочел использовать встроенную команду vscode.open, если это возможно.


person TwitchBronBron    schedule 07.09.2020    source источник


Ответы (1)


Проблема в том, что команде vscode.open не нравится Uri, сгенерированный пакетом vscode-uri. Вместо этого используйте vscode.Uri.

import { TreeDataProvider, ProviderResult, TreeItem, Uri } from 'vscode';

export class CustomTreeProvider implements TreeDataProvider<TreeItem>{

    public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
        if (!element) {
            return [{
                id: 'some-unique-id',
                label: 'some-unique-label',
                command: {
                    command: 'vscode.open',
                    title: 'Open',
                    arguments: [Uri.file('path/to/file']
                }
            }];
        }
    }

}
person TwitchBronBron    schedule 08.09.2020