Use `UriAbsoluteString` instead of `String` for `Event::OpenWorkspaceFolder`

finchie
Jan 2, 2026, 3:58 AM
ISLSD6ARVOX4GNOZZXHPN2KKGXX7LRUSWC4D5H5YVWNQPKCTGRSQC

Dependencies

  • [2] WFWTKCJN Create initial Visual Studio Code extension
  • [3] NB2MF3MY Add `OpenWorkspaceFolder` event
  • [4] MGJ23FHF Assign repository URI to source control in `OpenWorkspaceFolder` events
  • [5] 2ZAM5V35 Move event handling into modules
  • [6] SLTXBK5G Recursively discover repositories when handling `OpenWorkspaceFolder` event
  • [7] IDY5SNLO Update source control resource states in event loop
  • [8] 3RNQI5RX Refactor `provide_file_decoration` to return a `Promise` resolved by `event_loop`
  • [9] QY4Z5ZXZ Refactor `event_loop/threadsafe_function` file into `event_loop::js_function` module
  • [*] 3YGYMEXV Create `event_loop` module

Change contents

  • replacement in editors/vscode/src/lib.rs at line 236
    [3.396][3.396:527]()
    let added_uri = added_workspace_uri.to_string()?;
    event_loop::send(Event::OpenWorkspaceFolder { uri: added_uri });
    [3.396]
    [2.117319]
    let added_uri = uri::from_vscode(&added_workspace_uri)?;
    event_loop::send(Event::OpenWorkspaceFolder {
    workspace_uri: added_uri,
    });
  • edit in editors/vscode/src/lib.rs at line 396
    [2.118719]
    [3.558]
    let vscode_uri = workspace_folder.get_uri()?;
    let workspace_uri = uri::from_vscode(&vscode_uri)?;
  • replacement in editors/vscode/src/lib.rs at line 400
    [3.559][3.559:724]()
    let workspace_uri = workspace_folder.get_uri()?;
    let uri = workspace_uri.to_string()?;
    event_loop::send(Event::OpenWorkspaceFolder { uri });
    [3.559]
    [2.118719]
    event_loop::send(Event::OpenWorkspaceFolder { workspace_uri });
  • replacement in editors/vscode/src/event_loop/mod.rs at line 109
    [3.1823][4.1467:1532]()
    Event::OpenWorkspaceFolder { uri: raw_uri } => {
    [3.1823]
    [7.379]
    Event::OpenWorkspaceFolder { workspace_uri } => {
  • replacement in editors/vscode/src/event_loop/mod.rs at line 111
    [7.437][7.437:470]()
    raw_uri,
    [7.437]
    [8.1267]
    workspace_uri,
  • replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 5
    [5.441][5.441:480]()
    use iri_string::types::UriAbsoluteStr;
    [5.441]
    [7.5228]
    use iri_string::types::UriAbsoluteString;
  • replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 13
    [5.668][7.5314:5335]()
    raw_uri: String,
    [5.668]
    [8.4814]
    workspace_uri: UriAbsoluteString,
  • edit in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 18
    [5.796][7.5378:5430](),[7.5430][5.847:1017](),[5.847][5.847:1017]()
    let uri = match UriAbsoluteStr::new(&raw_uri) {
    Ok(valid_uri) => valid_uri,
    Err(error) => {
    tracing::error!(message = "Invalid URI", ?raw_uri, ?error);
    return;
    }
    };
  • replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 19
    [5.1083][5.1083:1192]()
    if uri.scheme_str() != "file" {
    tracing::info!(message = "Skipping unhandled URI scheme", ?uri);
    [5.1083]
    [5.1192]
    if workspace_uri.scheme_str() != "file" {
    tracing::info!(message = "Skipping unhandled URI scheme", ?workspace_uri);
  • replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 24
    [5.1215][5.1215:1275]()
    let workspace_path = Utf8PathBuf::from(uri.path_str());
    [5.1215]
    [6.0]
    let workspace_path = Utf8PathBuf::from(workspace_uri.path_str());
  • replacement in editors/vscode/src/event_loop/event/mod.rs at line 21
    [8.5033][8.5033:5054]()
    uri: String,
    [8.5033]
    [8.5054]
    workspace_uri: UriAbsoluteString,