Skip to content

Commit 4230b54

Browse files
committed
Merge commit '122061523a761cd551e928f7a1aadd12ddf89afd' into planger/issues/77
2 parents 4c2f098 + 1220615 commit 4230b54

10 files changed

Lines changed: 34 additions & 15 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@
310310
"type": "number",
311311
"default": 500,
312312
"minimum": 500,
313-
"markdownDescription": "Controls the delay in milliseconds after which a Memory Inspector is refrehsed automatically. Only applies when `#memory-inspector.periodicRefresh#` is enabled."
313+
"markdownDescription": "Controls the delay in milliseconds after which a Memory Inspector is refreshed automatically. Only applies when `#memory-inspector.periodicRefresh#` is enabled."
314314
},
315315
"memory-inspector.groupings.bytesPerMAU": {
316316
"type": "number",

src/common/messaging.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import type { DebugProtocol } from '@vscode/debugprotocol';
1818
import type { NotificationType, RequestType } from 'vscode-messenger-common';
1919
import { URI } from 'vscode-uri';
20-
import { VariablesView } from '../plugin/external-views';
2120
import { DebugRequestTypes } from './debug-requests';
21+
import { VariablesView } from './external-views';
2222
import type { VariableRange, WrittenMemory } from './memory-range';
2323
import { MemoryViewSettings } from './webview-configuration';
2424
import { WebviewContext } from './webview-context';

src/common/webview-context.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import { WebviewIdMessageParticipant } from 'vscode-messenger-common';
1818
import * as manifest from '../common/manifest';
19+
import { Endianness } from './manifest';
1920
import { VariableMetadata } from './memory-range';
2021
import { ReadMemoryArguments } from './messaging';
2122

@@ -26,6 +27,8 @@ export interface WebviewContext {
2627
showVariablesColumn: boolean,
2728
showRadixPrefix: boolean,
2829
hasDebuggerDefaults?: boolean,
30+
endianness: Endianness,
31+
bytesPerMau: number,
2932
activeReadArguments: Required<ReadMemoryArguments>
3033
}
3134

src/plugin/memory-storage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import MemoryMap from 'nrf-intel-hex';
1818
import * as vscode from 'vscode';
1919
import { URI, Utils } from 'vscode-uri';
20+
import { isVariablesContext } from '../common/external-views';
2021
import { IntelHEX } from '../common/intel-hex';
2122
import * as manifest from '../common/manifest';
2223
import {
@@ -26,7 +27,6 @@ import {
2627
import { toHexStringWithRadixMarker } from '../common/memory-range';
2728
import { ApplyMemoryArguments, ApplyMemoryResult, MemoryOptions, StoreMemoryArguments } from '../common/messaging';
2829
import { isWebviewContext } from '../common/webview-context';
29-
import { isVariablesContext } from './external-views';
3030
import { MemoryProvider } from './memory-provider';
3131

3232
export const StoreCommandType = `${manifest.PACKAGE_NAME}.store-file`;

src/plugin/memory-webview-main.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import * as vscode from 'vscode';
1818
import { Messenger } from 'vscode-messenger';
1919
import { WebviewIdMessageParticipant } from 'vscode-messenger-common';
20+
import { isVariablesContext } from '../common/external-views';
2021
import * as manifest from '../common/manifest';
2122
import { VariableRange } from '../common/memory-range';
2223
import {
@@ -46,7 +47,6 @@ import {
4647
import { MemoryDisplaySettings, MemoryDisplaySettingsContribution, MemoryViewSettings, ScrollingBehavior } from '../common/webview-configuration';
4748
import { getVisibleColumns, isWebviewVariableContext, WebviewContext } from '../common/webview-context';
4849
import { AddressPaddingOptions } from '../webview/utils/view-types';
49-
import { isVariablesContext } from './external-views';
5050
import { outputChannelLogger } from './logger';
5151
import { MemoryProvider } from './memory-provider';
5252
import { ApplyCommandType, StoreCommandType } from './memory-storage';
@@ -296,8 +296,8 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider {
296296
const sessionId = session?.id;
297297
return {
298298
sessionId,
299-
canRead: !!this.sessionTracker.hasDebugCapabilitiy(session, 'supportsReadMemoryRequest'),
300-
canWrite: !!this.sessionTracker.hasDebugCapabilitiy(session, 'supportsWriteMemoryRequest'),
299+
canRead: !!this.sessionTracker.hasDebugCapability(session, 'supportsReadMemoryRequest'),
300+
canWrite: !!this.sessionTracker.hasDebugCapability(session, 'supportsWriteMemoryRequest'),
301301
stopped: this.sessionTracker.isStopped(session)
302302
};
303303
}

src/plugin/session-tracker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,23 +158,23 @@ export class SessionTracker implements vscode.DebugAdapterTrackerFactory {
158158
return !!session && !!this.sessionInfo(session).stopped;
159159
}
160160

161-
hasDebugCapabilitiy(session = this.activeSession, capability: DebugCapability): boolean {
161+
hasDebugCapability(session = this.activeSession, capability: DebugCapability): boolean {
162162
return !!session && !!this.sessionInfo(session).debugCapabilities?.[capability];
163163
}
164164

165165
assertDebugCapability(session = this.assertActiveSession(), capability: DebugCapability, action: string = 'execute action'): vscode.DebugSession {
166-
if (!this.hasDebugCapabilitiy(session, capability)) {
166+
if (!this.hasDebugCapability(session, capability)) {
167167
throw new Error(`Cannot ${action}. Session does not have capability '${capability}'.`);
168168
}
169169
return session;
170170
}
171171

172-
hasClientCapabilitiy(session: vscode.DebugSession | undefined, capability: ClientCapability): boolean {
172+
hasClientCapability(session: vscode.DebugSession | undefined, capability: ClientCapability): boolean {
173173
return !!session && !!this.sessionInfo(session).clientCapabilities?.[capability];
174174
}
175175

176176
assertClientCapability(session = this.assertActiveSession(), capability: ClientCapability, action: string = 'execute action'): vscode.DebugSession {
177-
if (!this.hasClientCapabilitiy(session, capability)) {
177+
if (!this.hasClientCapability(session, capability)) {
178178
throw new Error(`Cannot ${action}. Client does not have capability '${capability}'.`);
179179
}
180180
return session;

src/webview/columns/data-column.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { writeMemoryType } from '../../common/messaging';
2323
import type { MemorySizeOptions } from '../components/memory-table';
2424
import { decorationService } from '../decorations/decoration-service';
2525
import { Disposable, FullNodeAttributes } from '../utils/view-types';
26+
import { createGroupVscodeContext } from '../utils/vscode-contexts';
2627
import { characterWidthInContainer, elementInnerWidth } from '../utils/window';
2728
import { messenger } from '../view-messenger';
2829
import { ColumnContribution, TableRenderOptions } from './column-contribution-service';
@@ -87,6 +88,7 @@ export class EditableDataColumnRow extends React.Component<EditableDataColumnRow
8788
data-range={`${startAddress}-${endAddress}`}
8889
key={startAddress.toString(16)}
8990
onDoubleClick={this.setGroupEdit}
91+
{...createGroupVscodeContext(startAddress, toOffset(startAddress, endAddress, this.props.options.bytesPerMau * 8))}
9092
>
9193
{maus}
9294
</span>;

src/webview/components/memory-widget.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,16 @@ export class MemoryWidget extends React.Component<MemoryWidgetProps, MemoryWidge
6969

7070
protected createVscodeContext(): VscodeContext {
7171
const visibleColumns = this.props.columns.filter(candidate => candidate.active).map(column => column.contribution.id);
72+
const { messageParticipant, showRadixPrefix, endianness, bytesPerMau, activeReadArguments, hasDebuggerDefaults } = this.props;
7273
return createAppVscodeContext({
73-
messageParticipant: this.props.messageParticipant,
74-
showRadixPrefix: this.props.showRadixPrefix,
74+
messageParticipant,
75+
showRadixPrefix,
7576
showAsciiColumn: visibleColumns.includes(manifest.CONFIG_SHOW_ASCII_COLUMN),
7677
showVariablesColumn: visibleColumns.includes(manifest.CONFIG_SHOW_VARIABLES_COLUMN),
77-
activeReadArguments: this.props.activeReadArguments,
78-
hasDebuggerDefaults: this.props.hasDebuggerDefaults,
78+
activeReadArguments,
79+
hasDebuggerDefaults,
80+
endianness,
81+
bytesPerMau,
7982
});
8083

8184
}

src/webview/utils/vscode-contexts.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export interface VscodeContext {
2828
export type WebviewSection = 'optionsWidget' | 'advancedOptionsOverlay' | 'memoryTable';
2929

3030
export function createVscodeContext<C extends {}>(context: C): VscodeContext {
31-
return { 'data-vscode-context': JSON.stringify(includeFlatKeys(context)) };
31+
return { 'data-vscode-context': JSON.stringify(includeFlatKeys(context), replacerForBigInt) };
3232
}
3333

3434
function includeFlatKeys(src: object): Record<string, unknown> {
@@ -64,8 +64,19 @@ export function createAppVscodeContext(context: Omit<WebviewContext, 'webviewSec
6464
return createVscodeContext({ ...context, webviewSection: 'app', preventDefaultContextMenuItems: true });
6565
}
6666

67+
export function createGroupVscodeContext(startAddress: BigInt, length: number): VscodeContext {
68+
return createVscodeContext({ memoryData: { group: { startAddress, length } } });
69+
}
70+
6771
export function createVariableVscodeContext(variable: BigIntVariableRange): VscodeContext {
6872
const { name, type, value, isPointer } = variable;
6973
return createVscodeContext({ variable: { name, type, value, isPointer } });
7074
}
7175

76+
function replacerForBigInt(_: string, value: unknown): unknown {
77+
if (typeof value === 'bigint') {
78+
return `0x${value.toString(16)}`;
79+
}
80+
return value;
81+
}
82+

0 commit comments

Comments
 (0)