提交 cabc10fc 编写于 作者: I isidor

debug: adopt completions api

上级 4bdd4e2d
......@@ -9,6 +9,8 @@ import Event from 'vs/base/common/event';
import severity from 'vs/base/common/severity';
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
import editor = require('vs/editor/common/editorCommon');
import {Position} from 'vs/editor/common/core/position';
import {ISuggestion} from 'vs/editor/common/modes';
import {Source} from 'vs/workbench/parts/debug/common/debugSource';
import {Range} from 'vs/editor/common/core/range';
import {RawContextKey, ContextKeyExpr} from 'vs/platform/contextkey/common/contextkey';
......@@ -19,6 +21,7 @@ export const DEBUG_SERVICE_ID = 'debugService';
export const CONTEXT_IN_DEBUG_MODE = new RawContextKey<boolean>('inDebugMode', false);
export const CONTEXT_NOT_IN_DEBUG_MODE:ContextKeyExpr = CONTEXT_IN_DEBUG_MODE.toNegated();
export const EDITOR_CONTRIBUTION_ID = 'editor.contrib.debug';
export const DEBUG_SCHEME = 'debug';
// raw
......@@ -414,6 +417,7 @@ export interface IDebugService {
continue(threadId: number): TPromise<void>;
pause(threadId: number): TPromise<any>;
restartFrame(frameId: number): TPromise<any>;
completions(text: string, position: Position): TPromise<ISuggestion[]>;
}
// Editor interfaces
......
......@@ -5,14 +5,14 @@
import uri from 'vs/base/common/uri';
import paths = require('vs/base/common/paths');
import {IModel} from 'vs/workbench/parts/debug/common/debug';
import {IModel, DEBUG_SCHEME} from 'vs/workbench/parts/debug/common/debug';
export class Source {
public uri: uri;
public available: boolean;
private static INTERNAL_URI_PREFIX = 'debug://internal/';
private static INTERNAL_URI_PREFIX = `${DEBUG_SCHEME}://internal/`;
constructor(public raw: DebugProtocol.Source, available = true) {
this.uri = raw.path ? uri.file(paths.normalize(raw.path)) : uri.parse(Source.INTERNAL_URI_PREFIX + raw.name);
......
......@@ -17,6 +17,8 @@ import severity from 'vs/base/common/severity';
import {TPromise} from 'vs/base/common/winjs.base';
import aria = require('vs/base/browser/ui/aria/aria');
import editorbrowser = require('vs/editor/browser/editorBrowser');
import {ISuggestion} from 'vs/editor/common/modes';
import {Position} from 'vs/editor/common/core/position';
import {IContextKeyService, IContextKey} from 'vs/platform/contextkey/common/contextkey';
import {IMarkerService} from 'vs/platform/markers/common/markers';
import {ILifecycleService} from 'vs/platform/lifecycle/common/lifecycle';
......@@ -947,6 +949,23 @@ export class DebugService implements debug.IDebugService {
return this.session.restartFrame({ frameId });
}
public completions(text: string, position: Position): TPromise<ISuggestion[]> {
if (!this.session) {
return TPromise.as([]);
}
return this.session.completions({
frameId: this.viewModel.getFocusedStackFrame().frameId,
text,
column: position.column,
line: position.lineNumber
}).then(response => response.body.targets.map(item => ({
label: item.label,
insertText: item.text || item.label,
type: 'property'
})), err => []);
}
private lazyTransitionToRunningState(threadId?: number): void {
let setNewFocusedStackFrameScheduler: RunOnceScheduler;
......
......@@ -274,6 +274,10 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
return this.send('restartFrame', args);
}
public completions(args: DebugProtocol.CompletionsArguments): TPromise<DebugProtocol.CompletionsResponse> {
return this.send('completions', args);
}
public disconnect(restart = false, force = false): TPromise<DebugProtocol.DisconnectResponse> {
if (this.stopServerPending && force) {
return this.stopServer();
......
......@@ -6,6 +6,8 @@
import Event from 'vs/base/common/event';
import severity from 'vs/base/common/severity';
import {TPromise} from 'vs/base/common/winjs.base';
import {ISuggestion} from 'vs/editor/common/modes';
import {Position} from 'vs/editor/common/core/position';
import debug = require('vs/workbench/parts/debug/common/debug');
import {Source} from 'vs/workbench/parts/debug/common/debugSource';
......@@ -134,6 +136,10 @@ export class MockDebugService implements debug.IDebugService {
public restartFrame(frameId: number): TPromise<any> {
return TPromise.as(null);
}
public completions(text: string, position: Position): TPromise<ISuggestion[]> {
return TPromise.as([]);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册