Как расширить окно пути повторного использования кода в vscode и Azure Data Studio? - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю в репозитории microsoft / azuredatastudio github, который в значительной степени разветвлен из vscode.Я пытаюсь расширить нашу обработку командной строки для обработки параметра повторного использования окна, чтобы, если мы передадим соединение с сервером вместе с -r, мы откроем указанное соединение.Наша текущая служба обработки командной строки загружается с помощью src \ vs \ workbench \ Electron-browser \ workbench.ts в Workbench.initServices.

Существует ли какая-либо предоставляемая платформой служба, видимая как для электронной, так и для рабочей среды?\ электронный браузер, который я мог бы изменить или использовать для получения информации о повторном использовании приложения с новыми аргументами командной строки?

Я обнаружил, что LaunchService определен в src \ vs \ code \ Electron-main \ launch.ts, по-видимому, отвечает за захват аргументов и открытие или повторное использование окна, но не ясно, каким образом я бы направил уведомление от LaunchService в наши службы, загружаемые верстаком.

2/12 /Обновление 2019 года: похоже, мне нужно добавить эквивалент этой функции в src \ vs \ code \ Electron-Main \ windows.ts

    private doOpenFilesInExistingWindow(configuration: IOpenConfiguration, window: ICodeWindow, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor): ICodeWindow {
    window.focus(); // make sure window has focus

    window.ready().then(readyWindow => {
        const termProgram = configuration.userEnv ? configuration.userEnv['TERM_PROGRAM'] : void 0;
        readyWindow.send('vscode:openFiles', { filesToOpen, filesToCreate, filesToDiff, filesToWait, termProgram });
    });

    return window;
}

, в котором есть новое сообщение типа "ads: openconnection".Теперь, чтобы узнать, как обработать сообщение.

1 Ответ

0 голосов
/ 18 февраля 2019

Я закончил тем, что использовал службу ipcRenderer и добавил вызов ipc к службе запуска в main.

    // {{SQL CARBON EDIT}}
    // give the first used window a chance to process the other command line arguments
    if (args['reuse-window'] && usedWindows.length > 0 && usedWindows[0])
    {
        let window = usedWindows[0];
        usedWindows[0].ready().then(() => window.send('ads:processCommandLine', args));
    }
    // {{SQL CARBON EDIT}}
...