use napi::bindgen_prelude;
use napi::bindgen_prelude::JsObjectValue;
use super::macros::{
namespace_event_handler, namespace_field_getter, namespace_function, register_provider,
};
use super::{
FileSystemWatcher, TextDocument, TextDocumentChangeEvent, TextDocumentContentProvider, Uri,
WorkspaceFolder, WorkspaceFoldersChangeEvent,
};
namespace_event_handler! {
"workspace" {
"onDidChangeTextDocument": on_did_change_text_document(TextDocumentChangeEvent);
"onDidChangeWorkspaceFolders": on_did_change_workspace_folders(WorkspaceFoldersChangeEvent);
}
}
namespace_field_getter! {
"workspace" {
"textDocuments": get_text_documents -> Vec<TextDocument<'env>>;
"workspaceFolders": get_workspace_folders -> Vec<WorkspaceFolder<'env>>;
}
}
namespace_function! {
"workspace" {
"createFileSystemWatcher":
create_file_system_watcher(
glob_pattern: &str,
) -> FileSystemWatcher<'env>;
"getWorkspaceFolder":
get_workspace_folder(
uri: &Uri,
) -> Option<WorkspaceFolder<'env>>;
}
}
register_provider!(
"workspace",
"registerTextDocumentContentProvider",
register_text_document_content_provider(scheme: &str, provider: TextDocumentContentProvider<'env>)
);