Create simple `FileSystemWatcher`
Dependencies
- [2]
WFWTKCJNCreate initial Visual Studio Code extension - [3]
YKBMKWDPRefactor event handling to support both namespaces and objects
Change contents
- replacement in extensions/vscode/src/vscode_sys/workspace.rs at line 8
TextDocument, TextDocumentChangeEvent, TextDocumentContentProvider, Uri, WorkspaceFolder,WorkspaceFoldersChangeEvent,FileSystemWatcher, TextDocument, TextDocumentChangeEvent, TextDocumentContentProvider, Uri,WorkspaceFolder, WorkspaceFoldersChangeEvent, - edit in extensions/vscode/src/vscode_sys/workspace.rs at line 28
"createFileSystemWatcher":create_file_system_watcher(glob_pattern: &str,) -> FileSystemWatcher<'env>; - replacement in extensions/vscode/src/vscode_sys/mod.rs at line 16
function_setter, interface_builder, static_class_method,function_setter, interface_builder, object_event_handler, static_class_method, - edit in extensions/vscode/src/vscode_sys/mod.rs at line 179
}}interface_builder! {FileSystemWatcher {}}object_event_handler! {FileSystemWatcher {"onDidChange": on_did_change(Uri);"onDidCreate": on_did_create(Uri);"onDidDelete": on_did_delete(Uri); - edit in extensions/vscode/src/lib.rs at line 268
#[tracing::instrument(skip_all)]pub fn handle_fs_watcher_event(env: &napi::Env, uri: vscode_sys::Uri) -> Result<(), napi::Error> {let mut extension_state = crate::ExtensionState::get()?;if let Some((repository_path, open_repository)) = extension_state.repositories.get_open_repository_mut(env, &uri)?{let absolute_file_path = Utf8PathBuf::from(uri.get_fs_path()?);let relative_file_path = absolute_file_path.strip_prefix(&repository_path).map_err(|error| {napi::Error::from_reason(format!("Failed to strip prefix {repository_path} from {absolute_file_path}: {error}"))})?.to_path_buf(); - edit in extensions/vscode/src/lib.rs at line 287
open_repository.repository.update_path_state(relative_file_path).map_err(|error| {napi::Error::from_reason(format!("Failed to update path state: {error:?}"))})?;open_repository.update_resource_states(env, &repository_path)?;}Ok(())} - edit in extensions/vscode/src/lib.rs at line 383
let file_system_watcher = vscode_sys::workspace::create_file_system_watcher(env, "**")?;file_system_watcher.on_did_change(env, handle_fs_watcher_event)?;file_system_watcher.on_did_create(env, handle_fs_watcher_event)?;file_system_watcher.on_did_delete(env, handle_fs_watcher_event)?;