Skip to content

Commit

Permalink
Stub registerMappedEditProvider (#13681)
Browse files Browse the repository at this point in the history
Contributed on behalf of STMicroelectronics

Signed-off-by: Thomas Mäder <[email protected]>
  • Loading branch information
tsmaeder authored May 6, 2024
1 parent 2a85c9b commit 0501d74
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 0 deletions.
8 changes: 8 additions & 0 deletions packages/plugin-ext/src/plugin/plugin-context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1218,9 +1218,17 @@ export function createAPIFactory(
}
};

const chat: typeof theia.chat = {
/** @stubbed MappedEditsProvider */
registerMappedEditsProvider(documentSelector: theia.DocumentSelector, provider: theia.MappedEditsProvider): Disposable {
return Disposable.NULL;
}
};

return <typeof theia>{
version: require('../../package.json').version,
authentication,
chat,
commands,
comments,
window,
Expand Down
1 change: 1 addition & 0 deletions packages/plugin/src/theia.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import './theia.proposed.dropMetadata';
import './theia.proposed.editSessionIdentityProvider';
import './theia.proposed.extensionsAny';
import './theia.proposed.externalUriOpener';
import './theia.proposed.mappedEditsProvider';
import './theia.proposed.notebookCellExecutionState';
import './theia.proposed.notebookKernelSource';
import './theia.proposed.notebookMessaging';
Expand Down
59 changes: 59 additions & 0 deletions packages/plugin/src/theia.proposed.mappedEditsProvider.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// *****************************************************************************
// Copyright (C) 2024 STMicroelectronics and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// http://www.eclipse.org/legal/epl-2.0.
//
// This Source Code may also be made available under the following Secondary
// Licenses when the conditions for such availability set forth in the Eclipse
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
// with the GNU Classpath Exception which is available at
// https://www.gnu.org/software/classpath/license.html.
//
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

export module '@theia/plugin' {

export interface DocumentContextItem {
readonly uri: Uri;
readonly version: number;
readonly ranges: Range[];
}

export interface MappedEditsContext {
documents: DocumentContextItem[][];
}

/**
* Interface for providing mapped edits for a given document.
*/
export interface MappedEditsProvider {
/**
* Provide mapped edits for a given document.
* @param document The document to provide mapped edits for.
* @param codeBlocks Code blocks that come from an LLM's reply.
* "Insert at cursor" in the panel chat only sends one edit that the user clicks on, but inline chat can send multiple blocks
* and let the lang server decide what to do with them.
* @param context The context for providing mapped edits.
* @param token A cancellation token.
* @returns A provider result of text edits.
*/
provideMappedEdits(
document: TextDocument,
codeBlocks: string[],
context: MappedEditsContext,
token: CancellationToken
): ProviderResult<WorkspaceEdit | null>;
}

export namespace chat {
export function registerMappedEditsProvider(documentSelector: DocumentSelector, provider: MappedEditsProvider): Disposable;
}
}

0 comments on commit 0501d74

Please sign in to comment.