Пример #1
0
Object provider_call(char *method, Array args)
{
  Feature *f = pmap_get(cstr_t)(registered_providers, method);

  if (!f || !channel_exists(f->channel_id)) {
    char buf[256];
    snprintf(buf,
             sizeof(buf),
             "Provider for method \"%s\" is not available",
             method);
    vim_report_error(cstr_as_string(buf));
    api_free_array(args);
    return NIL;
  }

  Error err = ERROR_INIT;
  Object result = NIL = channel_send_call(f->channel_id, method, args, &err);

  if (err.set) {
    vim_report_error(cstr_as_string(err.msg));
    api_free_object(result);
    return NIL;
  }
  
  return result;
}
Пример #2
0
void api_free_array(Array value)
{
  for (size_t i = 0; i < value.size; i++) {
    api_free_object(value.items[i]);
  }

  free(value.items);
}
Пример #3
0
static void ui_bridge_cursor_styleset_event(void **argv)
{
  UI *ui = UI(argv[0]);
  Object *styles = (Object *)argv[1];

  ui->cursor_style_set(ui, styles->data.dictionary);
  api_free_object(*styles);
  xfree(styles);
}
Пример #4
0
void api_free_dictionary(Dictionary value)
{
  for (size_t i = 0; i < value.size; i++) {
    api_free_string(value.items[i].key);
    api_free_object(value.items[i].value);
  }

  free(value.items);
}
Пример #5
0
static void ui_bridge_mode_info_set_event(void **argv)
{
  UI *ui = UI(argv[0]);
  bool *enabled = argv[1];
  Object *modes = argv[2];
  ui->mode_info_set(ui, *enabled, modes->data.array);
  xfree(enabled);
  api_free_object(*modes);
  xfree(modes);
}