提交 1580cd18 编写于 作者: J Johannes Rieken

first version of simple clipboard API, #217

上级 e2027598
...@@ -11,6 +11,19 @@ declare module 'vscode' { ...@@ -11,6 +11,19 @@ declare module 'vscode' {
export function sampleFunction(): Thenable<any>; export function sampleFunction(): Thenable<any>;
} }
//#region Joh - clipboard https://github.com/Microsoft/vscode/issues/217
export interface Clipboard {
readText(): Promise<string>;
writeText(value: string): Promise<void>;
}
export namespace env {
export const clipboard: Clipboard;
}
//#endregion
//#region Joh - read/write in chunks //#region Joh - read/write in chunks
export interface FileSystemProvider { export interface FileSystemProvider {
......
...@@ -15,6 +15,7 @@ import { LanguageConfigurationFileHandler } from 'vs/workbench/parts/codeEditor/ ...@@ -15,6 +15,7 @@ import { LanguageConfigurationFileHandler } from 'vs/workbench/parts/codeEditor/
// --- mainThread participants // --- mainThread participants
import 'vs/workbench/api/node/apiCommands'; import 'vs/workbench/api/node/apiCommands';
import './mainThreadClipboard';
import './mainThreadCommands'; import './mainThreadCommands';
import './mainThreadConfiguration'; import './mainThreadConfiguration';
import './mainThreadDebugService'; import './mainThreadDebugService';
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { clipboard } from 'electron';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { MainContext, MainThreadClipboardShape } from '../node/extHost.protocol';
@extHostNamedCustomer(MainContext.MainThreadClipboard)
export class MainThreadCommands implements MainThreadClipboardShape {
dispose(): void {
// nothing
}
$readText(): Promise<string> {
return Promise.resolve(clipboard.readText());
}
$writeText(value: string): Promise<void> {
clipboard.writeText(value);
return undefined;
}
}
...@@ -61,6 +61,7 @@ import { ExtHostComments } from './extHostComments'; ...@@ -61,6 +61,7 @@ import { ExtHostComments } from './extHostComments';
import { ExtHostSearch } from './extHostSearch'; import { ExtHostSearch } from './extHostSearch';
import { ExtHostUrls } from './extHostUrls'; import { ExtHostUrls } from './extHostUrls';
import { localize } from 'vs/nls'; import { localize } from 'vs/nls';
import { ExtHostClipboard } from 'vs/workbench/api/node/extHostClipboard';
export interface IExtensionApiFactory { export interface IExtensionApiFactory {
(extension: IExtensionDescription): typeof vscode; (extension: IExtensionDescription): typeof vscode;
...@@ -134,6 +135,7 @@ export function createApiFactory( ...@@ -134,6 +135,7 @@ export function createApiFactory(
rpcProtocol.assertRegistered(expected); rpcProtocol.assertRegistered(expected);
// Other instances // Other instances
const extHostClipboard = new ExtHostClipboard(rpcProtocol);
const extHostMessageService = new ExtHostMessageService(rpcProtocol); const extHostMessageService = new ExtHostMessageService(rpcProtocol);
const extHostDialogs = new ExtHostDialogs(rpcProtocol); const extHostDialogs = new ExtHostDialogs(rpcProtocol);
const extHostStatusBar = new ExtHostStatusBar(rpcProtocol); const extHostStatusBar = new ExtHostStatusBar(rpcProtocol);
...@@ -237,6 +239,10 @@ export function createApiFactory( ...@@ -237,6 +239,10 @@ export function createApiFactory(
get onDidChangeLogLevel() { get onDidChangeLogLevel() {
checkProposedApiEnabled(extension); checkProposedApiEnabled(extension);
return extHostLogService.onDidChangeLogLevel; return extHostLogService.onDidChangeLogLevel;
},
get clipboard(): vscode.Clipboard {
checkProposedApiEnabled(extension);
return extHostClipboard;
} }
}); });
......
...@@ -86,6 +86,11 @@ export interface IMainContext extends IRPCProtocol { ...@@ -86,6 +86,11 @@ export interface IMainContext extends IRPCProtocol {
// --- main thread // --- main thread
export interface MainThreadClipboardShape extends IDisposable {
$readText(): Promise<string>;
$writeText(value: string): Promise<void>;
}
export interface MainThreadCommandsShape extends IDisposable { export interface MainThreadCommandsShape extends IDisposable {
$registerCommand(id: string): void; $registerCommand(id: string): void;
$unregisterCommand(id: string): void; $unregisterCommand(id: string): void;
...@@ -1014,6 +1019,7 @@ export interface ExtHostCommentsShape { ...@@ -1014,6 +1019,7 @@ export interface ExtHostCommentsShape {
// --- proxy identifiers // --- proxy identifiers
export const MainContext = { export const MainContext = {
MainThreadClipboard: <ProxyIdentifier<MainThreadClipboardShape>>createMainId<MainThreadClipboardShape>('MainThreadClipboard'),
MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'), MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'),
MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'), MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'),
MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'), MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { IMainContext, MainContext, MainThreadClipboardShape } from 'vs/workbench/api/node/extHost.protocol';
import * as vscode from 'vscode';
export class ExtHostClipboard implements vscode.Clipboard {
private readonly _proxy: MainThreadClipboardShape;
constructor(mainContext: IMainContext) {
this._proxy = mainContext.getProxy(MainContext.MainThreadClipboard);
}
readText(): Promise<string> {
return this._proxy.$readText();
}
writeText(value: string): Promise<void> {
return this._proxy.$writeText(value);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册