replacement in editors/vscode/src/vscode_sys/reference.rs at line 5
− EventEmitter, FileDecoration, SourceControl, SourceControlResourceGroup, TextEditor,
− TextEditorDecorationType, Uri,
+ EventEmitter, FileDecoration, QuickDiffProvider, SourceControl, SourceControlResourceGroup,
+ TextEditor, TextEditorDecorationType, Uri,
edit in editors/vscode/src/vscode_sys/reference.rs at line 11
+ object_reference!(QuickDiffProviderRef: QuickDiffProvider);
edit in editors/vscode/src/lib.rs at line 15
[3.730]→[2.109259:109306](∅→∅),
[2.109259]→[2.109259:109306](∅→∅) −
− use std::sync::{Mutex, MutexGuard, OnceLock};
edit in editors/vscode/src/lib.rs at line 20
− use crate::repository::OpenRepositories;
edit in editors/vscode/src/lib.rs at line 28
[5.94]→[2.109515:109592](∅→∅),
[2.109515]→[2.109515:109592](∅→∅) −
− static EXTENSION_STATE: OnceLock<Mutex<ExtensionState>> = OnceLock::new();
−
edit in editors/vscode/src/lib.rs at line 29
[2.109632]→[2.109632:109657](∅→∅),
[4.2144]→[2.109730:110110](∅→∅),
[2.109730]→[2.109730:110110](∅→∅) −
− struct ExtensionState {
− repositories: OpenRepositories,
− }
−
− impl ExtensionState {
− fn get() -> Result<MutexGuard<'static, Self>, napi::Error> {
− EXTENSION_STATE
− .get()
− .ok_or_else(|| napi::Error::from_reason("Extension state is not set"))?
− .lock()
− .map_err(|_error| napi::Error::from_reason("Extension state mutex has been poisoned"))
− }
− }
replacement in editors/vscode/src/lib.rs at line 80
[2.113857]→[2.113857:113878](∅→∅) replacement in editors/vscode/src/lib.rs at line 225
[2.118517]→[17.390:468](∅→∅) − event_loop::start(env, &vscode_object, decoration_change_event_emitter)?;
+ let mut file_decoration_provider =
+ vscode_sys::FileDecorationProvider::new(env, provide_file_decoration)?;
+ file_decoration_provider.set_on_did_change_file_decorations(decoration_change_event)?;
+ vscode_sys::window::register_file_decoration_provider(
+ env,
+ &extension_context,
+ file_decoration_provider,
+ )?;
replacement in editors/vscode/src/lib.rs at line 234
[6.115]→[2.118517:118569](∅→∅),
[2.118517]→[2.118517:118569](∅→∅) − let mut repositories = OpenRepositories::new();
+ let mut quick_diff_provider = vscode_sys::QuickDiffProvider::new(env)?;
+ quick_diff_provider.set_provide_original_resource(env, provide_original_resource)?;
replacement in editors/vscode/src/lib.rs at line 237
[2.118570]→[2.118570:118651](∅→∅),
[2.118651]→[2.118651:118719](∅→∅) − for workspace_folder in vscode_sys::workspace::get_workspace_folders(env)? {
− repositories.open_workspace_folder(env, workspace_folder)?;
+ event_loop::start(
+ env,
+ &vscode_object,
+ decoration_change_event_emitter,
+ quick_diff_provider,
+ )?;
edit in editors/vscode/src/lib.rs at line 244
+ for workspace_folder in vscode_sys::workspace::get_workspace_folders(env)? {
replacement in editors/vscode/src/lib.rs at line 252
[2.118809]→[2.118809:118878](∅→∅),
[2.118878]→[17.469:528](∅→∅) − repositories.register_text_editors(env, visible_text_editors)?;
−
− let extension_state = ExtensionState { repositories };
+ for text_editor in visible_text_editors {
+ let document_uri = text_editor.get_document()?.get_uri()?;
+ let uri = uri::from_vscode(&document_uri)?;
replacement in editors/vscode/src/lib.rs at line 256
[2.119338]→[2.119338:119528](∅→∅) − EXTENSION_STATE
− .set(Mutex::new(extension_state))
− .map_err(|_existing_object| {
− napi::Error::from_reason("Extension state has already been set")
− })?;
+ event_loop::send(Event::OpenTextEditor {
+ uri,
+ text_editor: text_editor.create_ref()?,
+ });
+ }
edit in editors/vscode/src/lib.rs at line 262
[2.119529]→[4.2580:2619](∅→∅),
[4.2619]→[2.119564:119644](∅→∅),
[2.119564]→[2.119564:119644](∅→∅),
[2.119644]→[4.2620:2711](∅→∅),
[4.2711]→[2.119644:119787](∅→∅),
[2.119644]→[2.119644:119787](∅→∅) − let mut file_decoration_provider =
− vscode_sys::FileDecorationProvider::new(env, provide_file_decoration)?;
− file_decoration_provider.set_on_did_change_file_decorations(decoration_change_event)?;
− vscode_sys::window::register_file_decoration_provider(
− env,
− &extension_context,
− file_decoration_provider,
− )?;
−
edit in editors/vscode/src/lib.rs at line 271
[2.120083]→[2.120083:120551](∅→∅) − let mut quick_diff_provider = vscode_sys::QuickDiffProvider::new(env)?;
− quick_diff_provider.set_provide_original_resource(env, provide_original_resource)?;
−
− let program_state = ExtensionState::get()?;
− for (_repository_path, open_repository) in program_state.repositories.iter_repositories() {
− let mut source_control = open_repository.source_control.get_inner(env)?;
−
− source_control.set_quick_diff_provider(quick_diff_provider)?;
− }
−
edit in editors/vscode/src/event_loop/mod.rs at line 33
+ quick_diff_provider: Rc<vscode_sys::reference::QuickDiffProviderRef>,
edit in editors/vscode/src/event_loop/mod.rs at line 92
+ quick_diff_provider: vscode_sys::reference::QuickDiffProviderRef,
edit in editors/vscode/src/event_loop/mod.rs at line 106
+ quick_diff_provider: Rc::new(quick_diff_provider),
edit in editors/vscode/src/event_loop/mod.rs at line 192
+ quick_diff_provider: vscode_sys::QuickDiffProvider,
edit in editors/vscode/src/event_loop/mod.rs at line 196
+ let quick_diff_provider_ref = quick_diff_provider.create_ref()?;
edit in editors/vscode/src/event_loop/mod.rs at line 213
+ quick_diff_provider_ref,
replacement in editors/vscode/src/event_loop/js_function/mod.rs at line 99
[7.1272]→[11.92:158](∅→∅) − repository_uri_ref: crate::vscode_sys::reference::UriRef,
+ repository_uri_ref: vscode_sys::reference::UriRef,
+ quick_diff_provider_ref: &Rc<vscode_sys::reference::QuickDiffProviderRef>,
edit in editors/vscode/src/event_loop/js_function/mod.rs at line 107
+ quick_diff_provider_ref: Rc::clone(quick_diff_provider_ref),
edit in editors/vscode/src/event_loop/js_function/initialize_source_control.rs at line 1
edit in editors/vscode/src/event_loop/js_function/initialize_source_control.rs at line 10
+ pub quick_diff_provider_ref: Rc<vscode_sys::reference::QuickDiffProviderRef>,
edit in editors/vscode/src/event_loop/js_function/initialize_source_control.rs at line 42
+ quick_diff_provider_ref,
replacement in editors/vscode/src/event_loop/js_function/initialize_source_control.rs at line 48
[10.1522]→[10.1522:1587](∅→∅) − let source_control = vscode_sys::scm::create_source_control(
+ let mut source_control = vscode_sys::scm::create_source_control(
edit in editors/vscode/src/event_loop/js_function/initialize_source_control.rs at line 54
+
+ let quick_diff_provider = quick_diff_provider_ref.get_inner(function_call_context.env)?;
+ source_control.set_quick_diff_provider(quick_diff_provider)?;
edit in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 91
+ &extension_state.quick_diff_provider,