diff --git a/package.json b/package.json index 37bc645..1969593 100644 --- a/package.json +++ b/package.json @@ -267,7 +267,7 @@ "Do not automatically refresh when the debugger stops" ], "default": "on", - "description": "Refresh Memory Inspectors when the debugger stops" + "description": "Refresh Memory Inspector windows when the debugger stops" }, "memory-inspector.periodicRefresh": { "type": "string", @@ -282,13 +282,13 @@ "Do not automatically refresh after the configured delay" ], "default": "off", - "description": "Refresh Memory Inspectors after the configured delay" + "markdownDescription": "Refresh Memory Inspectors after the configured `#memory-inspector.periodicRefreshInterval#`." }, "memory-inspector.periodicRefreshInterval": { "type": "number", "default": 500, "minimum": 500, - "markdownDescription": "Controls the delay in milliseconds after which a Memory Inspector is refrehsed automatically. Only applies when `#memory-inspector.periodicRefresh#` is set to `on`." + "markdownDescription": "Controls the delay in milliseconds after which a Memory Inspector is refrehsed automatically. Only applies when `#memory-inspector.periodicRefresh#` is enabled." }, "memory-inspector.groupings.bytesPerMAU": { "type": "number", diff --git a/src/common/messaging.ts b/src/common/messaging.ts index c7b38a1..9b23854 100644 --- a/src/common/messaging.ts +++ b/src/common/messaging.ts @@ -45,11 +45,6 @@ export interface SessionContext { stopped?: boolean; } -export interface ViewState { - active: boolean; - visible: boolean; -} - // Notifications export const readyType: NotificationType = { method: 'ready' }; export const setMemoryViewSettingsType: NotificationType> = { method: 'setMemoryViewSettings' }; @@ -57,7 +52,6 @@ export const resetMemoryViewSettingsType: NotificationType = { method: 're export const setTitleType: NotificationType = { method: 'setTitle' }; export const memoryWrittenType: NotificationType = { method: 'memoryWritten' }; export const sessionContextChangedType: NotificationType = { method: 'sessionContextChanged' }; -export const viewStateChangedType: NotificationType = { method: 'viewStateChanged' }; // Requests export const setOptionsType: RequestType = { method: 'setOptions' }; diff --git a/src/plugin/memory-provider.ts b/src/plugin/memory-provider.ts index ef3cf65..10b3e75 100644 --- a/src/plugin/memory-provider.ts +++ b/src/plugin/memory-provider.ts @@ -39,18 +39,10 @@ export class MemoryProvider { } public activate(context: vscode.ExtensionContext): void { - const createDebugAdapterTracker = (session: vscode.DebugSession): Required => { + const createDebugAdapterTracker = (session: vscode.DebugSession): vscode.ProviderResult => { const handlerForSession = this.adapterRegistry.getHandlerForSession(session.type); const contributedTracker = handlerForSession?.initializeAdapterTracker?.(session); - - return ({ - onWillStartSession: () => contributedTracker?.onWillStartSession?.(), - onWillStopSession: () => contributedTracker?.onWillStopSession?.(), - onDidSendMessage: message => contributedTracker?.onDidSendMessage?.(message), - onError: error => contributedTracker?.onError?.(error), - onExit: (code, signal) => contributedTracker?.onExit?.(code, signal), - onWillReceiveMessage: message => contributedTracker?.onWillReceiveMessage?.(message) - }); + return contributedTracker; }; context.subscriptions.push(vscode.debug.registerDebugAdapterTrackerFactory('*', { createDebugAdapterTracker })); } @@ -68,7 +60,7 @@ export class MemoryProvider { const offset = response?.offset ? (args.offset ?? 0) + response.offset : args.offset; const count = response?.bytesWritten ?? stringToBytesMemory(args.data).length; // if our custom handler is active, let's fire the event ourselves - this.sessionTracker['fireSessionEvent'](session, 'memory-written', { memoryReference: args.memoryReference, offset, count }); + this.sessionTracker.fireSessionEvent(session, 'memory-written', { memoryReference: args.memoryReference, offset, count }); }; return sendRequest(session, 'writeMemory', args).then(response => { diff --git a/src/plugin/memory-webview-main.ts b/src/plugin/memory-webview-main.ts index 6f53163..9439ca6 100644 --- a/src/plugin/memory-webview-main.ts +++ b/src/plugin/memory-webview-main.ts @@ -39,8 +39,6 @@ import { showAdvancedOptionsType, StoreMemoryArguments, storeMemoryType, - ViewState, - viewStateChangedType, WebviewSelection, WriteMemoryArguments, WriteMemoryResult, @@ -191,12 +189,11 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { `; } - protected setWebviewMessageListener(panel: vscode.WebviewPanel, initialOptions?: MemoryOptions): void { + protected setWebviewMessageListener(panel: vscode.WebviewPanel, options?: MemoryOptions): void { const participant = this.messenger.registerWebviewPanel(panel); - let memoryOptions = initialOptions; const disposables = [ - this.messenger.onNotification(readyType, () => this.initialize(participant, panel, memoryOptions), { sender: participant }), - this.messenger.onRequest(setOptionsType, newOptions => { memoryOptions = { ...memoryOptions, ...newOptions }; }, { sender: participant }), + this.messenger.onNotification(readyType, () => this.initialize(participant, panel, options), { sender: participant }), + this.messenger.onRequest(setOptionsType, newOptions => { options = { ...options, ...newOptions }; }, { sender: participant }), this.messenger.onRequest(logMessageType, message => outputChannelLogger.info('[webview]:', message), { sender: participant }), this.messenger.onRequest(readMemoryType, request => this.readMemory(request), { sender: participant }), this.messenger.onRequest(writeMemoryType, request => this.writeMemory(request), { sender: participant }), @@ -207,13 +204,11 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { this.messenger.onRequest(applyMemoryType, () => this.applyMemory(), { sender: participant }), this.sessionTracker.onSessionEvent(event => this.handleSessionEvent(participant, event)) ]; - panel.onDidChangeViewState(newState => this.setViewState(participant, { active: newState.webviewPanel.active, visible: newState.webviewPanel.visible })); panel.onDidDispose(() => disposables.forEach(disposable => disposable.dispose())); } protected async initialize(participant: WebviewIdMessageParticipant, panel: vscode.WebviewPanel, options?: MemoryOptions): Promise { this.setSessionContext(participant, this.createContext()); - this.setViewState(participant, { active: panel.active, visible: panel.visible }); this.setInitialSettings(participant, panel.title); this.refresh(participant, options); } @@ -234,10 +229,6 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { this.messenger.sendNotification(sessionContextChangedType, webviewParticipant, context); } - protected setViewState(webviewParticipant: WebviewIdMessageParticipant, state: ViewState): void { - this.messenger.sendNotification(viewStateChangedType, webviewParticipant, state); - } - protected getMemoryViewSettings(messageParticipant: WebviewIdMessageParticipant, title: string): MemoryViewSettings { const memoryInspectorConfiguration = vscode.workspace.getConfiguration(manifest.PACKAGE_NAME); const bytesPerMau = memoryInspectorConfiguration.get(manifest.CONFIG_BYTES_PER_MAU, manifest.DEFAULT_BYTES_PER_MAU); diff --git a/src/plugin/session-tracker.ts b/src/plugin/session-tracker.ts index 1d3b680..3ca95b4 100644 --- a/src/plugin/session-tracker.ts +++ b/src/plugin/session-tracker.ts @@ -107,7 +107,7 @@ export class SessionTracker implements vscode.DebugAdapterTrackerFactory { this._onSessionEvent.fire({ event: 'active', session: session ? this.sessionInfo(session) : undefined }); } - protected fireSessionEvent>(session: vscode.DebugSession, event: K, data: SessionEvents[K]['data']): void { + fireSessionEvent>(session: vscode.DebugSession, event: K, data: SessionEvents[K]['data']): void { this._onSessionEvent.fire({ event, session: this.sessionInfo(session), data }); } diff --git a/src/webview/components/options-widget.tsx b/src/webview/components/options-widget.tsx index 568d2dc..13ccd66 100644 --- a/src/webview/components/options-widget.tsx +++ b/src/webview/components/options-widget.tsx @@ -53,7 +53,6 @@ export interface OptionsWidgetProps interface OptionsWidgetState { isTitleEditing: boolean; - isEnablingPeriodicRefresh: boolean; } const enum InputId { @@ -104,7 +103,7 @@ export class OptionsWidget extends React.Component this.props.fetchMemory(this.props.configuredReadArguments), }; - this.state = { isTitleEditing: false, isEnablingPeriodicRefresh: false }; + this.state = { isTitleEditing: false }; } protected validate = (values: OptionsForm) => { @@ -132,11 +131,6 @@ export class OptionsWidget extends React.Component

Refresh

-
+
Refresh On Stop
- + -
+
{ this.state = { messageParticipant: { type: 'webview', webviewId: '' }, title: 'Memory', - viewState: DEFAULT_VIEW_STATE, sessionContext: DEFAULT_SESSION_CONTEXT, memory: undefined, effectiveAddressLength: 0, @@ -132,7 +123,6 @@ class App extends React.Component<{}, MemoryAppState> { messenger.onRequest(setOptionsType, options => this.setOptions(options)); messenger.onNotification(memoryWrittenType, writtenMemory => this.memoryWritten(writtenMemory)); messenger.onNotification(sessionContextChangedType, sessionContext => this.sessionContextChanged(sessionContext)); - messenger.onNotification(viewStateChangedType, viewState => this.viewStateChanged(viewState)); messenger.onNotification(setMemoryViewSettingsType, config => { if (config.visibleColumns) { for (const column of columnContributionService.getColumns()) { @@ -167,11 +157,6 @@ class App extends React.Component<{}, MemoryAppState> { if (current.refreshOnStop === 'on' && hasChangedTo(sessionContextChange, 'stopped', true)) { this.fetchMemory(); } - // activate the code below if you want to refresh the memory when the view becomes active (focussed) - // const viewStateChange: Change = { from: from.viewState, to: current.viewState }; - // if (hasChangedTo(viewStateChange, 'active', true)) { - // this.fetchMemory(); - // } hoverService.setMemoryState(this.state); } @@ -231,10 +216,6 @@ class App extends React.Component<{}, MemoryAppState> { this.setState({ sessionContext }); } - protected viewStateChanged(viewState: ViewState): void { - this.setState({ viewState }); - } - public render(): React.ReactNode { return { } finally { this.setState({ isMemoryFetching: false }); } - } protected getEffectiveAddressLength(memory?: Memory): number {