mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 11:08:51 +01:00
Revert "know decorations using command links, #29076"
This reverts commit 94c4b25a47.
This commit is contained in:
@@ -80,7 +80,7 @@ export function createApiFactory(
|
||||
|
||||
// Addressable instances
|
||||
const extHostHeapService = threadService.set(ExtHostContext.ExtHostHeapService, new ExtHostHeapService());
|
||||
const extHostDocumentsAndEditors = threadService.set(ExtHostContext.ExtHostDocumentsAndEditors, new ExtHostDocumentsAndEditors(threadService, extensionService));
|
||||
const extHostDocumentsAndEditors = threadService.set(ExtHostContext.ExtHostDocumentsAndEditors, new ExtHostDocumentsAndEditors(threadService));
|
||||
const extHostDocuments = threadService.set(ExtHostContext.ExtHostDocuments, new ExtHostDocuments(threadService, extHostDocumentsAndEditors));
|
||||
const extHostDocumentContentProviders = threadService.set(ExtHostContext.ExtHostDocumentContentProviders, new ExtHostDocumentContentProvider(threadService, extHostDocumentsAndEditors));
|
||||
const extHostDocumentSaveParticipant = threadService.set(ExtHostContext.ExtHostDocumentSaveParticipant, new ExtHostDocumentSaveParticipant(extHostDocuments, threadService.get(MainContext.MainThreadWorkspace)));
|
||||
|
||||
@@ -11,7 +11,6 @@ import { ExtHostDocumentData } from './extHostDocumentData';
|
||||
import { ExtHostTextEditor } from './extHostTextEditor';
|
||||
import * as assert from 'assert';
|
||||
import * as typeConverters from './extHostTypeConverters';
|
||||
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
|
||||
|
||||
export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsShape {
|
||||
|
||||
@@ -30,8 +29,7 @@ export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsSha
|
||||
readonly onDidChangeActiveTextEditor: Event<ExtHostTextEditor> = this._onDidChangeActiveTextEditor.event;
|
||||
|
||||
constructor(
|
||||
private readonly _mainContext: IMainContext,
|
||||
private readonly _extHostExtensions: ExtHostExtensionService
|
||||
private readonly _mainContext: IMainContext
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -83,8 +81,6 @@ export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsSha
|
||||
const documentData = this._documents.get(data.document.toString());
|
||||
const editor = new ExtHostTextEditor(
|
||||
this._mainContext.get(MainContext.MainThreadEditors),
|
||||
this._mainContext.get(MainContext.MainThreadTelemetry),
|
||||
this._extHostExtensions,
|
||||
data.id,
|
||||
documentData,
|
||||
data.selections.map(typeConverters.toSelection),
|
||||
|
||||
@@ -19,7 +19,6 @@ import { Barrier } from 'vs/workbench/services/extensions/node/barrier';
|
||||
import { ExtHostThreadService } from 'vs/workbench/services/thread/node/extHostThreadService';
|
||||
import { realpath } from 'fs';
|
||||
import { TrieMap } from 'vs/base/common/map';
|
||||
import { V8CallSite } from 'vs/base/common/errors';
|
||||
|
||||
class ExtensionMemento implements IExtensionMemento {
|
||||
|
||||
@@ -228,27 +227,6 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
|
||||
return this._extensionPathIndex;
|
||||
}
|
||||
|
||||
public getActiveExtensionFromCallstack(): TPromise<IExtensionDescription> {
|
||||
const err = new Error();
|
||||
return this.getExtensionPathIndex().then(index => {
|
||||
let oldHandler = (<any>Error).prepareStackTrace;
|
||||
let result: IExtensionDescription;
|
||||
(<any>Error).prepareStackTrace = (err: Error, stacktrace: V8CallSite[]) => {
|
||||
for (const call of stacktrace) {
|
||||
result = index.findSubstr(call.getFileName());
|
||||
if (result) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
err.stack;
|
||||
|
||||
(<any>Error).prepareStackTrace = oldHandler;
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
public deactivate(extensionId: string): TPromise<void> {
|
||||
let result: TPromise<void> = TPromise.as(void 0);
|
||||
|
||||
@@ -205,7 +205,7 @@ class HoverAdapter {
|
||||
// we wanna know which extension uses command links
|
||||
// because that is a potential trick-attack on users
|
||||
if (result.contents.some(containsCommandLink)) {
|
||||
this._telemetryLog('MarkedString/commandLink', { from: 'hover' });
|
||||
this._telemetryLog('usesCommandLink', { from: 'hover' });
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
||||
@@ -13,12 +13,10 @@ import { ExtHostDocumentData } from 'vs/workbench/api/node/extHostDocumentData';
|
||||
import { Selection, Range, Position, EndOfLine, TextEditorRevealType, TextEditorLineNumbersStyle, SnippetString } from './extHostTypes';
|
||||
import { ISingleEditOperation } from 'vs/editor/common/editorCommon';
|
||||
import * as TypeConverters from './extHostTypeConverters';
|
||||
import { MainThreadEditorsShape, IResolvedTextEditorConfiguration, ITextEditorConfigurationUpdate, MainThreadTelemetryShape } from './extHost.protocol';
|
||||
import { MainThreadEditorsShape, IResolvedTextEditorConfiguration, ITextEditorConfigurationUpdate } from './extHost.protocol';
|
||||
import * as vscode from 'vscode';
|
||||
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
|
||||
import { IRange } from 'vs/editor/common/core/range';
|
||||
import { containsCommandLink } from 'vs/base/common/htmlContent';
|
||||
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
|
||||
|
||||
export class TextEditorDecorationType implements vscode.TextEditorDecorationType {
|
||||
|
||||
@@ -316,8 +314,6 @@ export class ExtHostTextEditorOptions implements vscode.TextEditorOptions {
|
||||
export class ExtHostTextEditor implements vscode.TextEditor {
|
||||
|
||||
private readonly _proxy: MainThreadEditorsShape;
|
||||
private readonly _telemetry: MainThreadTelemetryShape;
|
||||
private readonly _extHostExtensions: ExtHostExtensionService;
|
||||
private readonly _id: string;
|
||||
private readonly _documentData: ExtHostDocumentData;
|
||||
|
||||
@@ -328,19 +324,8 @@ export class ExtHostTextEditor implements vscode.TextEditor {
|
||||
|
||||
get id(): string { return this._id; }
|
||||
|
||||
constructor(
|
||||
proxy: MainThreadEditorsShape,
|
||||
telemetry: MainThreadTelemetryShape,
|
||||
extHostExtensions: ExtHostExtensionService,
|
||||
id: string,
|
||||
document: ExtHostDocumentData,
|
||||
selections: Selection[],
|
||||
options: IResolvedTextEditorConfiguration,
|
||||
viewColumn: vscode.ViewColumn
|
||||
) {
|
||||
constructor(proxy: MainThreadEditorsShape, id: string, document: ExtHostDocumentData, selections: Selection[], options: IResolvedTextEditorConfiguration, viewColumn: vscode.ViewColumn) {
|
||||
this._proxy = proxy;
|
||||
this._telemetry = telemetry;
|
||||
this._extHostExtensions = extHostExtensions;
|
||||
this._id = id;
|
||||
this._documentData = document;
|
||||
this._selections = selections;
|
||||
@@ -429,36 +414,12 @@ export class ExtHostTextEditor implements vscode.TextEditor {
|
||||
this._trySetSelection();
|
||||
}
|
||||
|
||||
setDecorations(decorationType: vscode.TextEditorDecorationType, rangesOrOptions: Range[] | vscode.DecorationOptions[]): void {
|
||||
|
||||
const options = TypeConverters.fromRangeOrRangeWithMessage(rangesOrOptions);
|
||||
|
||||
let usesCommands = false;
|
||||
for (let i = 0; i < options.length && !usesCommands; i++) {
|
||||
const { hoverMessage } = options[i];
|
||||
if (Array.isArray(hoverMessage)) {
|
||||
usesCommands = hoverMessage.some(containsCommandLink);
|
||||
} else if (hoverMessage) {
|
||||
usesCommands = containsCommandLink(hoverMessage);
|
||||
}
|
||||
}
|
||||
if (usesCommands) {
|
||||
this._extHostExtensions.getActiveExtensionFromCallstack().then(extension => {
|
||||
if (!extension) {
|
||||
return;
|
||||
}
|
||||
this._telemetry.$publicLog('MarkedString/commandLink', {
|
||||
extension: extension.id,
|
||||
from: 'decoration'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
setDecorations(decorationType: vscode.TextEditorDecorationType, ranges: Range[] | vscode.DecorationOptions[]): void {
|
||||
this._runOnProxy(
|
||||
() => this._proxy.$trySetDecorations(
|
||||
this._id,
|
||||
decorationType.key,
|
||||
options
|
||||
TypeConverters.fromRangeOrRangeWithMessage(ranges)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user