vm_map_t *vm_map_new(void) { vm_map_t *map = kmalloc(M_VMMAP, sizeof(vm_map_t), M_ZERO); vm_map_setup(map); *((pmap_t **)&map->pmap) = pmap_new(); return map; }
void remote_ui_init(void) { connected_uis = pmap_new(uint64_t)(); // Add handler for "attach_ui" String method = cstr_as_string("ui_attach"); MsgpackRpcRequestHandler handler = {.fn = remote_ui_attach, .defer = false}; msgpack_rpc_add_method_handler(method, handler); method = cstr_as_string("ui_detach"); handler.fn = remote_ui_detach; msgpack_rpc_add_method_handler(method, handler); method = cstr_as_string("ui_try_resize"); handler.fn = remote_ui_try_resize; msgpack_rpc_add_method_handler(method, handler); } void remote_ui_disconnect(uint64_t channel_id) { UI *ui = pmap_get(uint64_t)(connected_uis, channel_id); if (!ui) { return; } UIData *data = ui->data; // destroy pending screen updates api_free_array(data->buffer); pmap_del(uint64_t)(connected_uis, channel_id); xfree(ui->data); ui_detach(ui); xfree(ui); }
/// Convert a vim object to an `Object` instance, recursively expanding /// Arrays/Dictionaries. /// /// @param obj The source object /// @return The converted value Object vim_to_object(typval_T *obj) { Object rv; // We use a lookup table to break out of cyclic references PMap(ptr_t) *lookup = pmap_new(ptr_t)(); rv = vim_to_object_rec(obj, lookup); // Free the table pmap_free(ptr_t)(lookup); return rv; }
/// Initializes the module void server_init(void) { servers = pmap_new(cstr_t)(); if (!os_getenv(LISTEN_ADDRESS_ENV_VAR)) { char *listen_address = (char *)vim_tempname(); os_setenv(LISTEN_ADDRESS_ENV_VAR, listen_address, 1); free(listen_address); } server_start((char *)os_getenv(LISTEN_ADDRESS_ENV_VAR)); }
void server_init() { servers = pmap_new(cstr_t)(); if (!os_getenv("NEOVIM_LISTEN_ADDRESS")) { char *listen_address = (char *)vim_tempname('s'); os_setenv("NEOVIM_LISTEN_ADDRESS", listen_address, 1); free(listen_address); } server_start((char *)os_getenv("NEOVIM_LISTEN_ADDRESS")); }
void provider_init(void) { registered_providers = pmap_new(cstr_t)(); }