提交 30764542 编写于 作者: J Joao Moreno

suggest: cleanup

上级 0fe8e6b9
......@@ -12,13 +12,13 @@ import {TPromise} from 'vs/base/common/winjs.base';
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IKeybindingContextKey, IKeybindingService, KbExpr} from 'vs/platform/keybinding/common/keybindingService';
import {EditorAction} from 'vs/editor/common/editorAction';
import {ICommonCodeEditor, IEditorActionDescriptorData, IEditorContribution} from 'vs/editor/common/editorCommon';
import {ICommonCodeEditor, IEditorActionDescriptorData, IEditorContribution, KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS} from 'vs/editor/common/editorCommon';
import {CommonEditorRegistry, ContextKey, EditorActionDescriptor} from 'vs/editor/common/editorCommonExtensions';
import {ISuggestSupport, SuggestRegistry} from 'vs/editor/common/modes';
import {ICodeEditor} from 'vs/editor/browser/editorBrowser';
import {EditorBrowserRegistry} from 'vs/editor/browser/editorBrowserExtensions';
import {getSnippetController} from 'vs/editor/contrib/snippet/common/snippet';
import {ACCEPT_SELECTED_SUGGESTION_CMD, CONTEXT_SUGGEST_WIDGET_VISIBLE} from 'vs/editor/contrib/suggest/common/suggest';
import {CONTEXT_SUGGEST_WIDGET_VISIBLE} from 'vs/editor/contrib/suggest/common/suggest';
import {KeybindingsRegistry} from 'vs/platform/keybinding/common/keybindingsRegistry';
import {withCodeEditorFromCommandHandler} from 'vs/editor/common/config/config';
import {SuggestModel} from './suggestModel';
......@@ -27,7 +27,7 @@ import {SuggestWidget} from './suggestWidget';
export class SuggestController implements IEditorContribution {
static ID: string = 'editor.contrib.suggestController';
static getSuggestController(editor: ICommonCodeEditor): SuggestController {
static getController(editor: ICommonCodeEditor): SuggestController {
return <SuggestController>editor.getContribution(SuggestController.ID);
}
......@@ -201,56 +201,98 @@ export class TriggerSuggestAction extends EditorAction {
}
run(): TPromise<boolean> {
return SuggestController.getSuggestController(this.editor).triggerSuggest();
return SuggestController.getController(this.editor).triggerSuggest();
}
}
CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(
TriggerSuggestAction,
TriggerSuggestAction.ID,
nls.localize('suggest.trigger.label', "Trigger Suggest"),
{
context: ContextKey.EditorTextFocus,
primary: KeyMod.CtrlCmd | KeyCode.Space,
mac: { primary: KeyMod.WinCtrl | KeyCode.Space }
},
'Trigger Suggest'
));
const weight = CommonEditorRegistry.commandWeight(90);
// register action
CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(TriggerSuggestAction, TriggerSuggestAction.ID, nls.localize('suggest.trigger.label', "Trigger Suggest"), {
context: ContextKey.EditorTextFocus,
primary: KeyMod.CtrlCmd | KeyCode.Space,
mac: { primary: KeyMod.WinCtrl | KeyCode.Space }
}, 'Trigger Suggest'));
CommonEditorRegistry.registerEditorCommand(ACCEPT_SELECTED_SUGGESTION_CMD, weight, { primary: KeyCode.Tab }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.acceptSelectedSuggestion();
function handler(id: string, fn: (controller: SuggestController)=>void) {
return accessor => withCodeEditorFromCommandHandler(id, accessor, editor => {
fn(SuggestController.getController(editor));
});
}
KeybindingsRegistry.registerCommandDesc({
id: 'acceptSelectedSuggestion',
handler: handler('acceptSelectedSuggestion', c => c.acceptSelectedSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.Tab
});
KeybindingsRegistry.registerCommandDesc({
id: 'acceptSelectedSuggestionOnEnter',
handler(accessor) {
withCodeEditorFromCommandHandler('acceptSelectedSuggestionOnEnter', accessor, (editor) => {
const controller = SuggestController.getSuggestController(editor);
controller.acceptSelectedSuggestion();
});
},
handler: handler('acceptSelectedSuggestionOnEnter', c => c.acceptSelectedSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE), KbExpr.has('config.editor.acceptSuggestionOnEnter')),
primary: KeyCode.Enter,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE), KbExpr.has('config.editor.acceptSuggestionOnEnter')),
primary: KeyCode.Enter
});
CommonEditorRegistry.registerEditorCommand('hideSuggestWidget', weight, { primary: KeyCode.Escape, secondary: [KeyMod.Shift | KeyCode.Escape] }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.cancelSuggestWidget();
KeybindingsRegistry.registerCommandDesc({
id: 'hideSuggestWidget',
handler: handler('hideSuggestWidget', c => c.cancelSuggestWidget()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.Escape,
secondary: [KeyMod.Shift | KeyCode.Escape]
});
CommonEditorRegistry.registerEditorCommand('selectNextSuggestion', weight, { primary: KeyCode.DownArrow, secondary: [ KeyMod.Alt | KeyCode.DownArrow ] }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.selectNextSuggestion();
KeybindingsRegistry.registerCommandDesc({
id: 'selectNextSuggestion',
handler: handler('selectNextSuggestion', c => c.selectNextSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.DownArrow,
secondary: [ KeyMod.Alt | KeyCode.DownArrow ]
});
CommonEditorRegistry.registerEditorCommand('selectNextPageSuggestion', weight, { primary: KeyCode.PageDown, secondary: [ KeyMod.Alt | KeyCode.PageDown ] }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.selectNextPageSuggestion();
KeybindingsRegistry.registerCommandDesc({
id: 'selectNextPageSuggestion',
handler: handler('selectNextPageSuggestion', c => c.selectNextPageSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.PageDown,
secondary: [ KeyMod.Alt | KeyCode.PageDown ]
});
CommonEditorRegistry.registerEditorCommand('selectPrevSuggestion', weight, { primary: KeyCode.UpArrow, secondary: [ KeyMod.Alt | KeyCode.UpArrow ] }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.selectPrevSuggestion();
KeybindingsRegistry.registerCommandDesc({
id: 'selectPrevSuggestion',
handler: handler('selectPrevSuggestion', c => c.selectPrevSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.UpArrow,
secondary: [ KeyMod.Alt | KeyCode.UpArrow ]
});
CommonEditorRegistry.registerEditorCommand('selectPrevPageSuggestion', weight, { primary: KeyCode.PageUp, secondary: [ KeyMod.Alt | KeyCode.PageUp ] }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.selectPrevPageSuggestion();
KeybindingsRegistry.registerCommandDesc({
id: 'selectPrevPageSuggestion',
handler: handler('selectPrevPageSuggestion', c => c.selectPrevPageSuggestion()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyCode.PageUp,
secondary: [ KeyMod.Alt | KeyCode.PageUp ]
});
CommonEditorRegistry.registerEditorCommand('toggleSuggestionDetails', weight, { primary: KeyMod.CtrlCmd | KeyCode.Space, mac: { primary: KeyMod.WinCtrl | KeyCode.Space } }, true, CONTEXT_SUGGEST_WIDGET_VISIBLE, (ctx, editor, args) => {
const controller = SuggestController.getSuggestController(editor);
controller.toggleSuggestionDetails();
KeybindingsRegistry.registerCommandDesc({
id: 'toggleSuggestionDetails',
handler: handler('toggleSuggestionDetails', c => c.toggleSuggestionDetails()),
weight,
when: KbExpr.and(KbExpr.has(KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS), KbExpr.has(CONTEXT_SUGGEST_WIDGET_VISIBLE)),
primary: KeyMod.CtrlCmd | KeyCode.Space,
mac: { primary: KeyMod.WinCtrl | KeyCode.Space }
});
EditorBrowserRegistry.registerEditorContribution(SuggestController);
......@@ -16,7 +16,6 @@ import {Position} from 'vs/editor/common/core/position';
export var CONTEXT_SUGGEST_WIDGET_VISIBLE = 'suggestWidgetVisible';
export var CONTEXT_SUGGESTION_SUPPORTS_ACCEPT_ON_KEY = 'suggestionSupportsAcceptOnKey';
export var ACCEPT_SELECTED_SUGGESTION_CMD = 'acceptSelectedSuggestion';
export interface ISuggestResult2 extends ISuggestResult {
support?: ISuggestSupport;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册