提交 e83c7a08 编写于 作者: J Johannes Rieken

use fallback-command instead of text, make fallback configurable via keybindings file, #65587

上级 96ab284b
......@@ -116,7 +116,7 @@ export abstract class Command {
//#region EditorCommand
export interface IContributionCommandOptions<T> extends ICommandOptions {
handler: (controller: T) => void;
handler: (controller: T, args: any) => void;
}
export interface EditorControllerCommand<T extends IEditorContribution> {
new(opts: IContributionCommandOptions<T>): EditorCommand;
......@@ -128,7 +128,7 @@ export abstract class EditorCommand extends Command {
*/
public static bindToContribution<T extends IEditorContribution>(controllerGetter: (editor: ICodeEditor) => T): EditorControllerCommand<T> {
return class EditorControllerCommandImpl extends EditorCommand {
private _callback: (controller: T) => void;
private _callback: (controller: T, args: any) => void;
constructor(opts: IContributionCommandOptions<T>) {
super(opts);
......@@ -139,7 +139,7 @@ export abstract class EditorCommand extends Command {
public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {
let controller = controllerGetter(editor);
if (controller) {
this._callback(controllerGetter(editor));
this._callback(controllerGetter(editor), args);
}
}
};
......
......@@ -12,7 +12,7 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, ServicesAccessor } from 'vs/editor/browser/editorExtensions';
import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Range } from 'vs/editor/common/core/range';
import { IEditorContribution, ScrollType, Handler } from 'vs/editor/common/editorCommon';
import { IEditorContribution, ScrollType } from 'vs/editor/common/editorCommon';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { CompletionItemProvider, CompletionItemInsertTextRule } from 'vs/editor/common/modes';
import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2';
......@@ -32,6 +32,7 @@ import { Event } from 'vs/base/common/event';
import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService';
import { IdleValue } from 'vs/base/common/async';
import { CharacterSet } from 'vs/editor/common/core/characterClassifier';
import { isObject } from 'vs/base/common/types';
class AcceptOnCharacterOracle {
......@@ -303,7 +304,7 @@ export class SuggestController implements IEditorContribution {
}
}
triggerSuggestAndAcceptBest(defaultTypeText: string): void {
triggerSuggestAndAcceptBest(arg: { fallback: string }): void {
if (!this._editor.hasModel()) {
return;
......@@ -312,7 +313,7 @@ export class SuggestController implements IEditorContribution {
const fallback = () => {
if (positionNow.equals(this._editor.getPosition()!)) {
this._editor.trigger('suggest', Handler.Type, { text: defaultTypeText });
this._commandService.executeCommand(arg.fallback);
}
};
......@@ -611,7 +612,10 @@ registerEditorCommand(new SuggestCommand({
SuggestAlternatives.OtherSuggestions.toNegated(),
SnippetController2.InSnippetMode.toNegated()
),
handler: x => x.triggerSuggestAndAcceptBest('\t'),//todo@joh fallback/default configurable?
handler: (x, arg) => {
x.triggerSuggestAndAcceptBest(isObject(arg) ? { fallback: 'tab', ...arg } : { fallback: 'tab' });
},
kbOpts: {
weight,
primary: KeyCode.Tab
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册