Change:
To be verified with: : : set the new config options start debugging The hover provider should be invoked.

Discussion:
showInStatusBar: 'never' | 'always' | 'onFirstSessionStart'; internalConsoleOptions: 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart'; extensionHostDebugAdapter: boolean; <ins> enableAllHovers: boolean; </ins> } export interface IGlobalConfig {

default: 'openOnFirstSessionStart', description: nls.localize('openDebug', "Controls whether debug view should be open on debugging session start.") }, <ins> 'debug.enableAllHovers': { type: 'boolean', description: nls.localize({ comment: ['This is the description for a setting'], key: 'enableAllHovers' }, "Controls if the non debug hovers should be enabled while debugging. If true the hover providers will be called to provide a hover. Regular hovers will not be shown even if this setting is true."), default: false }, </ins> 'launch': { type: 'object', description: nls.localize({ comment: ['This is the description for a setting'], key: 'launch' }, "Global debug launch configuration. Should be used as an alternative to 'launch.json' that is shared across workspaces"),

import { ContextSubMenu } from 'vs/base/browser/contextmenu'; import { memoize } from 'vs/base/common/decorators'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; <ins> import { getHover } from 'vs/editor/contrib/hover/getHover'; </ins> const HOVER_DELAY = 300; const LAUNCH_JSON_REGEX = /launch.json$/;

private toDispose: lifecycle.IDisposable[]; private hoverWidget: DebugHoverWidget; <ins> private nonDebugHoverPosition: Position; </ins> private hoverRange: Range; private breakpointHintDecoration: string[];

this.toDispose.push(this.editor.onMouseDown((e: IEditorMouseEvent) => this.onEditorMouseDown(e))); this.toDispose.push(this.editor.onMouseMove((e: IEditorMouseEvent) => this.onEditorMouseMove(e))); this.toDispose.push(this.editor.onMouseLeave((e: IEditorMouseEvent) => { <ins> this.provideNonDebugHoverScheduler.cancel(); </ins> const hoverDomNode = this.hoverWidget.getDomNode(); if (!hoverDomNode) { return;

@memoize private get showHoverScheduler(): RunOnceScheduler { <del> return new RunOnceScheduler(() => this.showHover(this.hoverRange, false), HOVER_DELAY); </del> <ins> const scheduler = new RunOnceScheduler(() => this.showHover(this.hoverRange, false), HOVER_DELAY); this.toDispose.push(scheduler); return scheduler; </ins> } @memoize private get hideHoverScheduler(): RunOnceScheduler { <del> return new RunOnceScheduler(() => this.hoverWidget.hide(), HOVER_DELAY); </del> <ins> const scheduler = new RunOnceScheduler(() => this.hoverWidget.hide(), HOVER_DELAY); this.toDispose.push(scheduler); return scheduler; } @memoize private get provideNonDebugHoverScheduler(): RunOnceScheduler { const scheduler = new RunOnceScheduler(() => { getHover(this.editor.getModel(), this.nonDebugHoverPosition); }, HOVER_DELAY); this.toDispose.push(scheduler); return scheduler; </ins> } private hideHoverWidget(): void {

this.hideHoverScheduler.schedule(); } this.showHoverScheduler.cancel(); <ins> this.provideNonDebugHoverScheduler.cancel(); </ins> } // hover business

return; } <ins> if (!this.configurationService.getValue<IDebugConfiguration>('debug').enableAllHovers) { this.nonDebugHoverPosition = mouseEvent.target.position; this.provideNonDebugHoverScheduler.schedule(); } </ins> const targetType = mouseEvent.target.type; const stopKey = env.isMacintosh ? 'metaKey' : 'ctrlKey';