diff --git a/nixide-sys/libnixide-c/nixide_api_main.cc b/nixide-sys/libnixide-c/nixide_api_main.cc index 5e6fd92..2035bfc 100644 --- a/nixide-sys/libnixide-c/nixide_api_main.cc +++ b/nixide-sys/libnixide-c/nixide_api_main.cc @@ -7,7 +7,7 @@ extern "C" { -nix_err nixide_register_plugin(nix_c_context * context, char * plugin) +nix_err nix_register_plugin(nix_c_context * context, char * plugin) { if (context) context->last_err_code = NIX_OK; diff --git a/nixide-sys/libnixide-c/nixide_api_main.h b/nixide-sys/libnixide-c/nixide_api_main.h index 0962cf5..76046b9 100644 --- a/nixide-sys/libnixide-c/nixide_api_main.h +++ b/nixide-sys/libnixide-c/nixide_api_main.h @@ -8,7 +8,7 @@ extern "C" { #endif // NOTE: all plugins should be registered BEFORE `nix_init_plugins` is run -nix_err nixide_register_plugin(nix_c_context * context, char * plugin); +nix_err nix_register_plugin(nix_c_context * context, char * plugin); #ifdef __cplusplus } // extern "C" diff --git a/nixide/src/plugins.rs b/nixide/src/plugins.rs index 216235f..f9f7e8c 100644 --- a/nixide/src/plugins.rs +++ b/nixide/src/plugins.rs @@ -1,5 +1,6 @@ use crate::NixideResult; use crate::errors::ErrorContext; +use crate::stdext::AsCPtr as _; use crate::util::wrap; use crate::util::wrappers::AsInnerPtr as _; @@ -8,3 +9,10 @@ pub fn load_plugins() -> NixideResult<()> { sys::nix_init_plugins(ctx.as_ptr()); }) } + +pub fn register_plugin>(path: S) -> NixideResult<()> { + let path_ptr = path.as_ref().into_c_ptr()?; + wrap::nix_fn!(|ctx: &ErrorContext| unsafe { + sys::nix_register_plugin(ctx.as_ptr(), path_ptr); + }) +}