Remove calls to `ExtensionState::get()` in event handlers

finchie
Jan 2, 2026, 12:31 PM
WHONMLLS7UOWCW7YQMY5J6Q3ZF34HF6RFD5NOZIU2UBTUVEXNF3QC

Dependencies

  • [2] WFWTKCJN Create initial Visual Studio Code extension
  • [3] 72K45XKD Refactor inline credit to improve hover messages
  • [4] 6AUGQLIK Add basic panic handling
  • [5] NB2MF3MY Add `OpenWorkspaceFolder` event
  • [6] M5RW5PN4 Add `OpenTextEditor` event
  • [7] QY4DF3NM Add `ChangeEditorContents` event
  • [8] 3TWMKU4M Add `RequestInlineCredit` event
  • [9] VKCHFDMC Create simple `FileSystemWatcher`
  • [10] 3RNQI5RX Refactor `provide_file_decoration` to return a `Promise` resolved by `event_loop`
  • [11] POA32CUW Add `uri` module
  • [12] XRFRJHZM Add `ChangedFilesystemContents` event
  • [13] GQ52YLWH Remove unnecessary debug logs
  • [14] ISLSD6AR Use `UriAbsoluteString` instead of `String` for `Event::OpenWorkspaceFolder`
  • [15] 57DXWD6G Handle file rename/move events in VS Code extension

Change contents

  • edit in editors/vscode/src/lib.rs at line 18
    [2.109307][2.109307:109332]()
    use camino::Utf8PathBuf;
  • edit in editors/vscode/src/lib.rs at line 127
    [7.906][4.2630:2682](),[4.2630][4.2630:2682](),[4.2682][2.114263:114804](),[2.114263][2.114263:114804](),[2.114863][2.114863:115657](),[2.115657][8.0:361](),[8.361][2.116042:116043](),[2.116042][2.116042:116043](),[2.116043][8.362:432](),[8.432][2.116191:116198](),[3.818][2.116191:116198](),[2.116191][2.116191:116198]()
    let mut program_state = ExtensionState::get()?;
    if let Some((repository_path, open_repository)) = program_state
    .repositories
    .get_open_repository_mut(env, &document_uri)?
    {
    let absolute_document_path = Utf8PathBuf::from(document_uri.get_fs_path()?);
    tracing::debug!(?absolute_document_path);
    let relative_document_path = absolute_document_path
    .strip_prefix(&repository_path)
    .map_err(|error| napi::Error::from_reason(format!("Failed to strip prefix {repository_path} from {absolute_document_path}: {error}")))?;
    for change_event in change_events {
    let character_offset = change_event.get_range_offset()?;
    let characters_replaced = change_event.get_range_length()?;
    let replacement_text = change_event.get_text()?;
    open_repository
    .repository
    .update_open_file(
    relative_document_path,
    character_offset as usize,
    characters_replaced as usize,
    &replacement_text,
    )
    .map_err(|error| {
    napi::Error::from_reason(format!(
    "Unable to update open file {relative_document_path} ({absolute_document_path}): {error}"
    ))
    })?;
    }
    // // Re-render the inline credit annotation
    // let text_editor = open_repository
    // .get_text_editor(env, relative_document_path)?
    // .ok_or_else(|| {
    // napi::Error::from_reason(format!(
    // "no open text editor for {absolute_document_path}"
    // ))
    // })?;
    // inline_credit::render(env, &program_state, &text_editor)?;
    }
  • replacement in editors/vscode/src/lib.rs at line 152
    [2.116911][2.116911:116932]()
    env: &napi::Env,
    [2.116911]
    [2.116932]
    _env: &napi::Env,
  • edit in editors/vscode/src/lib.rs at line 155
    [2.117015][2.117015:117067]()
    let mut program_state = ExtensionState::get()?;
  • edit in editors/vscode/src/lib.rs at line 159
    [2.117212][2.117212:117319](),[2.117319][5.333:334]()
    program_state
    .repositories
    .open_workspace_folder(env, added_workspace)?;
  • replacement in editors/vscode/src/lib.rs at line 168
    [2.117376][2.117376:117481]()
    program_state
    .repositories
    .close_workspace_folder(removed_workspace)?;
    [2.117376]
    [2.117481]
    // TODO
  • replacement in editors/vscode/src/lib.rs at line 177
    [2.117611][2.117611:117632]()
    env: &napi::Env,
    [2.117611]
    [2.117632]
    _env: &napi::Env,
  • edit in editors/vscode/src/lib.rs at line 180
    [2.117718][2.117718:117772](),[2.117772][6.0:1]()
    let mut extension_state = ExtensionState::get()?;
  • replacement in editors/vscode/src/lib.rs at line 190
    [2.117773][2.117773:117873]()
    extension_state
    .repositories
    .register_text_editors(env, visible_text_editors)
    [2.117773]
    [2.117873]
    Ok(())