Merge remote-tracking branch 'origin/main' into rebornix/controller-connection

This commit is contained in:
rebornix
2022-05-20 15:49:23 -07:00
364 changed files with 10565 additions and 5780 deletions

View File

@@ -451,7 +451,8 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
return extHostLanguages.changeLanguage(document.uri, languageId);
},
match(selector: vscode.DocumentSelector, document: vscode.TextDocument): number {
return score(typeConverters.LanguageSelector.from(selector), document.uri, document.languageId, true, document.notebook?.notebookType);
const notebook = extHostDocuments.getDocumentData(document.uri)?.notebook;
return score(typeConverters.LanguageSelector.from(selector), document.uri, document.languageId, true, notebook?.uri, notebook?.notebookType);
},
registerCodeActionsProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider, metadata?: vscode.CodeActionProviderMetadata): vscode.Disposable {
return extHostLanguageFeatures.registerCodeActionProvider(extension, checkSelector(selector), provider, metadata);
@@ -567,9 +568,9 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
createLanguageStatusItem(id: string, selector: vscode.DocumentSelector): vscode.LanguageStatusItem {
return extHostLanguages.createLanguageStatusItem(extension, id, selector);
},
registerDocumentOnDropProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentOnDropProvider): vscode.Disposable {
registerDocumentOnDropEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentOnDropEditProvider): vscode.Disposable {
checkProposedApiEnabled(extension, 'textEditorDrop');
return extHostLanguageFeatures.registerDocumentOnDropProvider(extension, selector, provider);
return extHostLanguageFeatures.registerDocumentOnDropEditProvider(extension, selector, provider);
}
};
@@ -1315,6 +1316,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
NotebookCellStatusBarItem: extHostTypes.NotebookCellStatusBarItem,
NotebookControllerAffinity: extHostTypes.NotebookControllerAffinity,
NotebookControllerState: extHostTypes.NotebookControllerState,
NotebookEdit: extHostTypes.NotebookEdit,
PortAttributes: extHostTypes.PortAttributes,
LinkedEditingRanges: extHostTypes.LinkedEditingRanges,
TestResultState: extHostTypes.TestResultState,

View File

@@ -392,7 +392,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable {
$registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerTypeHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerDocumentOnDropProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerDocumentOnDropEditProvider(handle: number, selector: IDocumentFilterDto[]): void;
$resolveDocumentOnDropFileData(handle: number, requestId: number, dataIndex: number): Promise<VSBuffer>;
$setLanguageConfiguration(handle: number, languageId: string, configuration: ILanguageConfigurationDto): void;
}

View File

@@ -37,7 +37,7 @@ export class ExtHostDocumentData extends MirrorTextModel {
uri: URI, lines: string[], eol: string, versionId: number,
private _languageId: string,
private _isDirty: boolean,
private readonly _notebook?: vscode.NotebookDocument | undefined
public readonly notebook?: vscode.NotebookDocument | undefined
) {
super(uri, lines, eol, versionId);
}
@@ -66,7 +66,6 @@ export class ExtHostDocumentData extends MirrorTextModel {
get version() { return that._versionId; },
get isClosed() { return that._isDisposed; },
get isDirty() { return that._isDirty; },
get notebook() { return that._notebook; },
save() { return that._save(); },
getText(range?) { return range ? that._getTextInRange(range) : that.getText(); },
get eol() { return that._eol === '\n' ? EndOfLine.LF : EndOfLine.CRLF; },

View File

@@ -1745,12 +1745,12 @@ class TypeHierarchyAdapter {
}
}
class DocumentOnDropAdapter {
class DocumentOnDropEditAdapter {
constructor(
private readonly _proxy: extHostProtocol.MainThreadLanguageFeaturesShape,
private readonly _documents: ExtHostDocuments,
private readonly _provider: vscode.DocumentOnDropProvider,
private readonly _provider: vscode.DocumentOnDropEditProvider,
private readonly _handle: number,
) { }
@@ -1778,7 +1778,7 @@ type Adapter = DocumentSymbolAdapter | CodeLensAdapter | DefinitionAdapter | Hov
| DocumentSemanticTokensAdapter | DocumentRangeSemanticTokensAdapter
| EvaluatableExpressionAdapter | InlineValuesAdapter
| LinkedEditingRangeAdapter | InlayHintsAdapter | InlineCompletionAdapter | InlineCompletionAdapterNew
| DocumentOnDropAdapter;
| DocumentOnDropEditAdapter;
class AdapterData {
constructor(
@@ -2402,15 +2402,15 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
// --- Document on drop
registerDocumentOnDropProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentOnDropProvider) {
registerDocumentOnDropEditProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentOnDropEditProvider) {
const handle = this._nextHandle();
this._adapter.set(handle, new AdapterData(new DocumentOnDropAdapter(this._proxy, this._documents, provider, handle), extension));
this._proxy.$registerDocumentOnDropProvider(handle, this._transformDocumentSelector(selector));
this._adapter.set(handle, new AdapterData(new DocumentOnDropEditAdapter(this._proxy, this._documents, provider, handle), extension));
this._proxy.$registerDocumentOnDropEditProvider(handle, this._transformDocumentSelector(selector));
return this._createDisposable(handle);
}
$provideDocumentOnDropEdits(handle: number, requestId: number, resource: UriComponents, position: IPosition, dataTransferDto: DataTransferDTO, token: CancellationToken): Promise<Dto<languages.SnippetTextEdit> | undefined> {
return this._withAdapter(handle, DocumentOnDropAdapter, adapter =>
return this._withAdapter(handle, DocumentOnDropEditAdapter, adapter =>
Promise.resolve(adapter.provideDocumentOnDropEdits(requestId, URI.revive(resource), position, dataTransferDto, token)), undefined, undefined);
}

View File

@@ -105,6 +105,15 @@ export class ExtHostNotebookEditor {
get document() {
return that.notebookData.apiNotebook;
},
get notebook() {
return that.notebookData.apiNotebook;
},
get selection() {
return that._selections[0];
},
set selection(selection: vscode.NotebookRange) {
this.selections = [selection];
},
get selections() {
return that._selections;
},

View File

@@ -25,7 +25,7 @@ import { Command } from 'vs/editor/common/languages';
import { DataTransferConverter, DataTransferDTO } from 'vs/workbench/api/common/shared/dataTransfer';
import { ITreeViewsService, TreeviewsService } from 'vs/workbench/services/views/common/treeViewsService';
import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { IDataTransfer } from 'vs/editor/common/dnd';
import { IDataTransfer } from 'vs/base/common/dataTransfer';
type TreeItemHandle = string;

View File

@@ -598,6 +598,55 @@ export class TextEdit {
}
}
@es5ClassCompat
export class NotebookEdit implements vscode.NotebookEdit {
static isNotebookCellEdit(thing: any): thing is NotebookEdit {
if (thing instanceof NotebookEdit) {
return true;
}
if (!thing) {
return false;
}
return NotebookRange.isNotebookRange((<NotebookEdit>thing))
&& Array.isArray((<NotebookEdit>thing).newCells);
}
static replaceCells(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit {
return new NotebookEdit(range, newCells);
}
static insertCells(index: number, newCells: vscode.NotebookCellData[]): vscode.NotebookEdit {
return new NotebookEdit(new NotebookRange(index, index), newCells);
}
static deleteCells(range: NotebookRange): NotebookEdit {
return new NotebookEdit(range, []);
}
static updateCellMetadata(index: number, newMetadata: { [key: string]: any }): NotebookEdit {
const edit = new NotebookEdit(new NotebookRange(index, index), []);
edit.newCellMetadata = newMetadata;
return edit;
}
static updateNotebookMetadata(newMetadata: { [key: string]: any }): NotebookEdit {
const edit = new NotebookEdit(new NotebookRange(0, 0), []);
edit.newNotebookMetadata = newMetadata;
return edit;
}
range: NotebookRange;
newCells: NotebookCellData[];
newCellMetadata?: { [key: string]: any };
newNotebookMetadata?: { [key: string]: any };
constructor(range: NotebookRange, newCells: NotebookCellData[]) {
this.range = range;
this.newCells = newCells;
}
}
export class SnippetTextEdit implements vscode.SnippetTextEdit {
range: vscode.Range;
@@ -741,7 +790,7 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
return this._edits.some(edit => edit._type === FileEditType.Text && edit.uri.toString() === uri.toString());
}
set(uri: URI, edits: TextEdit[]): void {
set(uri: URI, edits: TextEdit[] | unknown): void {
if (!edits) {
// remove all text edits for `uri`
for (let i = 0; i < this._edits.length; i++) {
@@ -753,9 +802,17 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
coalesceInPlace(this._edits);
} else {
// append edit to the end
for (const edit of edits) {
for (const edit of edits as TextEdit[] | NotebookEdit[]) {
if (edit) {
this._edits.push({ _type: FileEditType.Text, uri, edit });
if (NotebookEdit.isNotebookCellEdit(edit)) {
if (edit.newCellMetadata) {
this.replaceNotebookCellMetadata(uri, edit.range.start, edit.newCellMetadata);
} else {
this.replaceNotebookCells(uri, edit.range, edit.newCells);
}
} else {
this._edits.push({ _type: FileEditType.Text, uri, edit });
}
}
}
}

View File

@@ -5,7 +5,7 @@
import { once } from 'vs/base/common/functional';
import { URI, UriComponents } from 'vs/base/common/uri';
import { IDataTransfer, IDataTransferItem } from 'vs/editor/common/dnd';
import { IDataTransfer, IDataTransferItem } from 'vs/base/common/dataTransfer';
export interface IDataTransferFileDTO {
readonly name: string;

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { VSBuffer } from 'vs/base/common/buffer';
import { IDataTransfer, IDataTransferItem } from 'vs/editor/common/dnd';
import { IDataTransfer, IDataTransferItem } from 'vs/base/common/dataTransfer';
export class DataTransferCache {