Emit events on file decoration change

finchie
Dec 15, 2025, 3:03 PM
T4NQUSRPQAIACUZLVDPXMNISBHKMD73A22H5SGQWIDQZD675VAZAC

Dependencies

  • [2] WFWTKCJN Create initial Visual Studio Code extension
  • [3] 72K45XKD Refactor inline credit to improve hover messages
  • [4] YKBMKWDP Refactor event handling to support both namespaces and objects
  • [5] VKCHFDMC Create simple `FileSystemWatcher`

Change contents

  • replacement in extensions/vscode/src/vscode_sys/reference.rs at line 4
    [2.58033][2.58033:58127]()
    use super::{SourceControl, SourceControlResourceGroup, TextEditor, TextEditorDecorationType};
    [2.58033]
    [2.58127]
    use super::{
    EventEmitter, SourceControl, SourceControlResourceGroup, TextEditor, TextEditorDecorationType,
    };
  • edit in extensions/vscode/src/vscode_sys/reference.rs at line 8
    [2.58128]
    [2.58128]
    object_reference!(EventEmitterRef: EventEmitter);
  • replacement in extensions/vscode/src/vscode_sys/mod.rs at line 15
    [2.58796][2.58796:58883](),[2.58883][5.301:384]()
    class_wrapper, empty_function_caller, field_getter, field_setter, function_caller,
    function_setter, interface_builder, object_event_handler, static_class_method,
    [2.58796]
    [2.58944]
    class_wrapper, class_wrapper_empty, empty_function_caller, field_getter, field_setter,
    function_caller, function_setter, interface_builder, object_event_handler, static_class_method,
  • edit in extensions/vscode/src/vscode_sys/mod.rs at line 89
    [2.60957]
    [2.60957]
    class_wrapper_empty!(EventEmitter);
    field_getter! {
    EventEmitter {
    // TODO: this should be a typed function
    "event": get_event -> bindgen_prelude::Unknown<'env>;
    }
    }
    function_caller! {
    EventEmitter {
    "fire":
    fire(
    data: bindgen_prelude::Object,
    ) -> ();
    }
    }
  • edit in extensions/vscode/src/vscode_sys/mod.rs at line 182
    [2.62886]
    [2.62886]
    }
    }
    field_setter! {
    FileDecorationProvider {
    "onDidChangeFileDecorations": set_on_did_change_file_decorations(bindgen_prelude::Unknown);
  • edit in extensions/vscode/src/vscode_sys/macros/mod.rs at line 11
    [2.77551]
    [4.3266]
    pub(super) use class::wrapper::class_wrapper_empty;
    pub(super) use class::wrapper::class_wrapper_inner;
  • edit in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 3
    [2.86717]
    [2.86717]
  • replacement in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 5
    [2.86746][2.86746:86821]()
    ($class_name:ident($($argument_name:ident: $argument_type:ty),*)) => {
    [2.86746]
    [2.86821]
    ($class_name:ident($($argument_name:ident: $argument_type:ty),+)) => {
    crate::vscode_sys::macros::class_wrapper_inner! {
    ::napi::bindgen_prelude::FnArgs<($($argument_type,)*)>,
    ::napi::bindgen_prelude::FnArgs::from(($($argument_name,)*)),
    $class_name($($argument_name: $argument_type),+)
    }
    };
    }
    macro_rules! class_wrapper_empty {
    ($class_name:ident) => {
    crate::vscode_sys::macros::class_wrapper_inner! {
    (),
    (),
    $class_name()
    }
    };
    }
    macro_rules! class_wrapper_inner {
    ($constructor_args_type:ty, $constructor_args_initializer:expr, $class_name:ident($($argument_name:ident: $argument_type:ty),*)) => {
  • replacement in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 38
    [2.87297][2.87297:87373]()
    ::napi::bindgen_prelude::FnArgs<($($argument_type,)*)>,
    [2.87297]
    [2.87373]
    $constructor_args_type,
  • replacement in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 43
    [2.87582][2.87582:87701]()
    constructor_prototype.new_instance(::napi::bindgen_prelude::FnArgs::from(($($argument_name,)*)))?;
    [2.87582]
    [2.87701]
    constructor_prototype.new_instance($constructor_args_initializer)?;
  • replacement in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 104
    [2.90067][2.90067:90261]()
    let constructor: bindgen_prelude::Function<bindgen_prelude::FnArgs<($($argument_type,)*)>, bindgen_prelude::Object> = vscode_object.get_named_property(stringify!($class_name))?;
    [2.90067]
    [2.90261]
    let constructor: bindgen_prelude::Function<$constructor_args_type, bindgen_prelude::Object> = vscode_object.get_named_property(stringify!($class_name))?;
  • edit in extensions/vscode/src/vscode_sys/macros/class/wrapper.rs at line 121
    [2.90642]
    pub(crate) use class_wrapper_empty;
    pub(crate) use class_wrapper_inner;
  • edit in extensions/vscode/src/lib.rs at line 35
    [2.109730]
    [2.109730]
    decoration_change_event_emitter: vscode_sys::reference::EventEmitterRef,
  • edit in extensions/vscode/src/lib.rs at line 273
    [5.813]
    [5.813]
    let decoration_change_event_emitter = extension_state
    .decoration_change_event_emitter
    .get_inner(env)?;
  • edit in extensions/vscode/src/lib.rs at line 297
    [5.1607]
    [5.1607]
    decoration_change_event_emitter.fire(uri.inner)?;
  • edit in extensions/vscode/src/lib.rs at line 334
    [3.947]
    [2.118947]
    let decoration_change_event_emitter = vscode_sys::EventEmitter::new(env)?;
    let decoration_change_event = decoration_change_event_emitter.get_event()?;
  • edit in extensions/vscode/src/lib.rs at line 340
    [2.119047]
    [2.119047]
    decoration_change_event_emitter: decoration_change_event_emitter.create_ref()?,
  • replacement in extensions/vscode/src/lib.rs at line 354
    [2.119529][2.119529:119564]()
    let file_decoration_provider =
    [2.119529]
    [2.119564]
    let mut file_decoration_provider =
  • edit in extensions/vscode/src/lib.rs at line 356
    [2.119644]
    [2.119644]
    file_decoration_provider.set_on_did_change_file_decorations(decoration_change_event)?;