Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
daa20d7
Activate breakpoints for R
lionel- Dec 8, 2025
29335a1
Add `DebugSession::setSessionSuppressToolbar()`
lionel- Dec 9, 2025
1137a39
Switch to permanent DAP session and suppress toolbar when inactive
lionel- Dec 8, 2025
66ec157
Send `SetBreakpoints` on all saves
lionel- Dec 13, 2025
c3edc39
Send breakpoints before evaluation when document is dirty
lionel- Dec 13, 2025
0f7a480
Allow verifying breakpoints in dirty documents
lionel- Dec 13, 2025
1bf92bc
Simplify changes needed for verification feature
lionel- Jan 16, 2026
96444b3
Even simpler approach
lionel- Jan 16, 2026
e384749
Reconnect DAP immediately to maintain permanent session
lionel- Dec 13, 2025
8537664
Let server drive the reconnection
lionel- Dec 13, 2025
1508dde
Maintain a single DAP connection for all R sessions
lionel- Dec 16, 2025
c5c266f
Handle reconnections from the frontend side
lionel- Dec 16, 2025
659a464
Simplify `DapComm` with static factory pattern
lionel- Dec 16, 2025
aafe144
Add some logging
lionel- Dec 17, 2025
a0d23a8
Delete DAP comm after disposal
lionel- Dec 17, 2025
42cbc67
Debounce `stop_debug` handling
lionel- Jan 14, 2026
4221d8e
Add context key for debug toolbar visibility
lionel- Jan 14, 2026
ad14a17
Show welcome view if there is no foreground debug sessions
lionel- Jan 14, 2026
0d9c0d5
Update Welcome view message for R debugger
lionel- Jan 14, 2026
a6c58f1
Depend on Ark's breakpoint branch
lionel- Jan 15, 2026
3003c85
Update e2e tests
lionel- Jan 16, 2026
f443414
Fix interaction between debug sessions and console history
lionel- Jan 16, 2026
6027773
Do not focus debug pane when a background session comes online
lionel- Jan 16, 2026
8dad315
Adjust test to ensure there is a foreground debug session
lionel- Jan 16, 2026
c2a7d0f
Consistently focus debug pane when background session comes to foregr…
lionel- Jan 16, 2026
b44fab2
Don't veto exthost restart in case of background debug sessions
lionel- Jan 16, 2026
d08b43f
Remove unnecessary getter
lionel- Jan 22, 2026
6885cab
Address code review
lionel- Jan 22, 2026
61d078f
Bump Ark to 0.1.224
lionel- Jan 22, 2026
b45c814
More robust call stack tests
lionel- Jan 22, 2026
6d9e321
Disable exthost restart test on Windows
lionel- Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions extensions/positron-python/src/client/positron-supervisor.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -373,27 +373,25 @@ export type CommBackendMessage =
* Disposing the `DapComm` automatically disposes of the nested `Comm`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What pulls up the welcome screen?

Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the welcome view but not the streamlined one. I suggested in #10769 (review) to look up the language of the active console when there is no opened editor, to avoid this.

*/
export interface DapComm {
/** The `targetName` passed to the constructor. */
/** The `targetName` passed to `create()`. */
readonly targetName: string;

/** The `debugType` passed to the constructor. */
/** The `debugType` passed to `create()`. */
readonly debugType: string;

/** The `debugName` passed to the constructor. */
/** The `debugName` passed to `create()`. */
readonly debugName: string;

/**
* The comm for the DAP.
* Use it to receive messages or make notifications and requests.
* Defined after `createServerComm()` has been called.
*/
readonly comm?: Comm;
readonly comm: Comm;

/**
* The port on which the DAP server is listening.
* Defined after `createServerComm()` has been called.
*/
readonly serverPort?: number;
readonly port: number;

/**
* Handle a message received via `this.comm.receiver`.
Expand All @@ -416,6 +414,12 @@ export interface DapComm {
*/
handleMessage(msg: any): Promise<boolean>;

/** Connect to the DAP server. */
connect(): Promise<void>;

/** Disconnect from the DAP server. */
disconnect(): Promise<void>;

/**
* Dispose of the underlying comm.
* Must be called if the DAP comm is no longer in use.
Expand Down
11 changes: 9 additions & 2 deletions extensions/positron-r/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -700,12 +700,19 @@
"when": "isRPackage"
}
],
"breakpoints": [
{
"language": "r"
}
],
"debuggers": [
{
"type": "ark",
"label": "R Debugger",
"languages": ["r"],
"supportsUiLaunch": false
"supportsUiLaunch": false,
"sendBreakpointsOnAllSaves": true,
"verifyBreakpointsInDirtyDocuments": true
}
],
"notebookRenderer": [
Expand Down Expand Up @@ -955,7 +962,7 @@
},
"positron": {
"binaryDependencies": {
"ark": "0.1.223"
"ark": "0.1.224"
},
"minimumRVersion": "4.2.0",
"minimumRenvVersion": "1.0.9"
Expand Down
2 changes: 1 addition & 1 deletion extensions/positron-r/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,6 @@
"r.walkthrough.migrateFromRStudio.workspaces.description": " \n[Open an existing folder](command:workbench.action.files.openFolder)",
"r.walkthrough.migrateFromRStudio.formatting.title": "Formatting your R code",
"r.walkthrough.migrateFromRStudio.formatting.description": " \n[Configure Air to format on save](command:r.walkthrough.formatOnSave)",
"r.welcome.views.debugger.content": "Positron currently provides limited debugging support for R code, but you can use R's native debugging features in Positron.\n[Learn more](https://positron.posit.co/guide-r.html#debugging)"
"r.welcome.views.debugger.content": "Positron provides first-class debugging support for R\n[Learn more](https://positron.posit.co/guide-r.html#debugging)"

}
18 changes: 11 additions & 7 deletions extensions/positron-r/src/positron-supervisor.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -381,27 +381,25 @@ export type CommBackendMessage =
* Disposing the `DapComm` automatically disposes of the nested `Comm`.
*/
export interface DapComm {
/** The `targetName` passed to the constructor. */
/** The `targetName` passed to `create()`. */
readonly targetName: string;

/** The `debugType` passed to the constructor. */
/** The `debugType` passed to `create()`. */
readonly debugType: string;

/** The `debugName` passed to the constructor. */
/** The `debugName` passed to `create()`. */
readonly debugName: string;

/**
* The comm for the DAP.
* Use it to receive messages or make notifications and requests.
* Defined after `createServerComm()` has been called.
*/
readonly comm?: Comm;
readonly comm: Comm;

/**
* The port on which the DAP server is listening.
* Defined after `createServerComm()` has been called.
*/
readonly serverPort?: number;
readonly port: number;

/**
* Handle a message received via `this.comm.receiver`.
Expand All @@ -424,6 +422,12 @@ export interface DapComm {
*/
handleMessage(msg: any): Promise<boolean>;

/** Connect to the DAP server. */
connect(): Promise<void>;

/** Disconnect from the DAP server. */
disconnect(): Promise<void>;

/**
* Dispose of the underlying comm.
* Must be called if the DAP comm is no longer in use.
Expand Down
4 changes: 2 additions & 2 deletions extensions/positron-r/src/session-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,11 +165,11 @@ export class RSessionManager implements vscode.Disposable {
* the safer `activateConsoleSession()`.
*/
private async activateSession(session: RSession, reason: string): Promise<void> {
await session.activateLsp(reason);
await session.activateServices(reason);
}

private async deactivateSession(session: RSession, reason: string): Promise<void> {
await session.deactivateLsp(reason);
await session.deactivateServices(reason);
}

/**
Expand Down
Loading