Refactor `event_loop/threadsafe_function` file into `event_loop::js_function` module
Dependencies
- [2]
3YGYMEXVCreate `event_loop` module - [3]
TDTLSDFGCreate macro for defining `ThreadsafeFunction`s - [4]
NB2MF3MYAdd `OpenWorkspaceFolder` event - [5]
XDFSAPI7Create a tokio runtime directly instead of `#[tokio::main]` - [6]
MGJ23FHFAssign repository URI to source control in `OpenWorkspaceFolder` events - [7]
OUADGWKRCreate fully-initialized `SourceControl` object in `event_loop` - [8]
2ZAM5V35Move event handling into modules - [9]
SLTXBK5GRecursively discover repositories when handling `OpenWorkspaceFolder` event - [10]
TWEUQ64DMove threadsafe function builder logic into function-specific modules
Change contents
- replacement in editors/vscode/src/event_loop/mod.rs at line 13
mod threadsafe_function;mod js_function; - replacement in editors/vscode/src/event_loop/mod.rs at line 28
async fn event_loop(threadsafe_functions: threadsafe_function::ThreadsafeFunctions,mut receiver: UnboundedReceiver<Event>,) {async fn event_loop(js_functions: js_function::Functions, mut receiver: UnboundedReceiver<Event>) { - replacement in editors/vscode/src/event_loop/mod.rs at line 47
event::open_workspace_folder::handle(raw_uri,&mut repositories,&threadsafe_functions,).awaitevent::open_workspace_folder::handle(raw_uri, &mut repositories, &js_functions).await - replacement in editors/vscode/src/event_loop/mod.rs at line 64
let threadsafe_functions = threadsafe_function::ThreadsafeFunctions::get(env, vscode_object)?;let js_functions = js_function::Functions::get(env, vscode_object)?; - replacement in editors/vscode/src/event_loop/mod.rs at line 76
std::thread::spawn(move || runtime.block_on(event_loop(threadsafe_functions, receiver)));std::thread::spawn(move || runtime.block_on(event_loop(js_functions, receiver))); - file addition: js_function[2.138]
- file move: threadsafe_function.rs → mod.rs
- replacement in editors/vscode/src/event_loop/js_function/mod.rs at line 5
pub struct ThreadsafeFunctions {mod initialize_source_control;pub struct Functions { - replacement in editors/vscode/src/event_loop/js_function/mod.rs at line 12
impl ThreadsafeFunctions {impl Functions { - edit in editors/vscode/src/event_loop/js_function/mod.rs at line 48[7.1049]→[7.1049:1673](∅→∅),[7.1673]→[10.80:393](∅→∅),[10.393]→[7.1770:2511](∅→∅),[7.1770]→[7.1770:2511](∅→∅),[6.1401]→[4.1525:1533](∅→∅),[7.2511]→[4.1525:1533](∅→∅),[4.1525]→[4.1525:1533](∅→∅)
mod initialize_source_control {use napi::bindgen_prelude::{FnArgs, FunctionCallContext};use crate::vscode_sys;pub type Arguments = (vscode_sys::reference::UriRef, String, String, String);pub type Return = (vscode_sys::reference::SourceControlRef,vscode_sys::reference::SourceControlResourceGroupRef,vscode_sys::reference::SourceControlResourceGroupRef,);pub type Prototype = napi::threadsafe_function::ThreadsafeFunction<FnArgs<Arguments>,Return,FnArgs<Arguments>,napi::Status,false,false,0,>;pub fn build(env: &napi::Env) -> Result<Prototype, napi::Error> {env.create_function_from_closure("initialize_source_control", callback)?.build_threadsafe_function().build()}fn callback(function_call_context: FunctionCallContext) -> Result<Return, napi::Error> {let (repository_uri_ref, pijul_label, changes_label, untracked_label): Arguments =function_call_context.args()?;let source_control = vscode_sys::scm::create_source_control(function_call_context.env,"pijul",&pijul_label,&repository_uri_ref.get_inner(function_call_context.env)?,)?;let unrecorded_changes = source_control.create_resource_group("changes", &changes_label)?;let untracked_paths =source_control.create_resource_group("untracked", &untracked_label)?;Ok((source_control.create_ref()?,unrecorded_changes.create_ref()?,untracked_paths.create_ref()?,))}} - file addition: initialize_source_control.rs[0.435]
use napi::bindgen_prelude::{FnArgs, FunctionCallContext};use crate::vscode_sys;pub type Arguments = (vscode_sys::reference::UriRef, String, String, String);pub type Return = (vscode_sys::reference::SourceControlRef,vscode_sys::reference::SourceControlResourceGroupRef,vscode_sys::reference::SourceControlResourceGroupRef,);pub type Prototype = napi::threadsafe_function::ThreadsafeFunction<FnArgs<Arguments>,Return,FnArgs<Arguments>,napi::Status,false,false,0,>;pub fn build(env: &napi::Env) -> Result<Prototype, napi::Error> {env.create_function_from_closure("initialize_source_control", callback)?.build_threadsafe_function().build()}fn callback(function_call_context: FunctionCallContext) -> Result<Return, napi::Error> {let (repository_uri_ref, pijul_label, changes_label, untracked_label): Arguments =function_call_context.args()?;let source_control = vscode_sys::scm::create_source_control(function_call_context.env,"pijul",&pijul_label,&repository_uri_ref.get_inner(function_call_context.env)?,)?;let unrecorded_changes = source_control.create_resource_group("changes", &changes_label)?;let untracked_paths = source_control.create_resource_group("untracked", &untracked_label)?;Ok((source_control.create_ref()?,unrecorded_changes.create_ref()?,untracked_paths.create_ref()?,))} - replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 7
use crate::event_loop::threadsafe_function::ThreadsafeFunctions;use crate::event_loop::js_function::Functions; - replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 9
#[tracing::instrument(skip(repositories, threadsafe_functions))]#[tracing::instrument(skip(repositories, js_functions))] - replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 13
threadsafe_functions: &ThreadsafeFunctions,js_functions: &Functions, - replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 85
let repository_uri = match threadsafe_functions.uri_file(repository_path.to_string()).await{let repository_uri = match js_functions.uri_file(repository_path.to_string()).await { - replacement in editors/vscode/src/event_loop/event/open_workspace_folder.rs at line 93
let (source_control, unrecorded_changes, untracked_paths) = match threadsafe_functionslet (source_control, unrecorded_changes, untracked_paths) = match js_functions