static void remote_ui_highlight_set(UI *ui, int id) { Array args = ARRAY_DICT_INIT; UIData *data = ui->data; if (data->hl_id == id) { return; } data->hl_id = id; Dictionary hl = hlattrs2dict(syn_attr2entry(id), ui->rgb); ADD(args, DICTIONARY_OBJ(hl)); push_call(ui, "highlight_set", args); }
static Array translate_contents(UI *ui, Array contents) { Array new_contents = ARRAY_DICT_INIT; for (size_t i = 0; i < contents.size; i++) { Array item = contents.items[i].data.array; Array new_item = ARRAY_DICT_INIT; int attr = (int)item.items[0].data.integer; if (attr) { Dictionary rgb_attrs = hlattrs2dict(syn_attr2entry(attr), ui->rgb); ADD(new_item, DICTIONARY_OBJ(rgb_attrs)); } else { ADD(new_item, DICTIONARY_OBJ((Dictionary)ARRAY_DICT_INIT)); } ADD(new_item, copy_object(item.items[1])); ADD(new_contents, ARRAY_OBJ(new_item)); } return new_contents; }
static void remote_ui_cmdline_show(UI *ui, Array args) { Array new_args = ARRAY_DICT_INIT; Array contents = args.items[0].data.array; Array new_contents = ARRAY_DICT_INIT; for (size_t i = 0; i < contents.size; i++) { Array item = contents.items[i].data.array; Array new_item = ARRAY_DICT_INIT; int attr = (int)item.items[0].data.integer; if (attr) { Dictionary rgb_attrs = hlattrs2dict(syn_attr2entry(attr), ui->rgb); ADD(new_item, DICTIONARY_OBJ(rgb_attrs)); } else { ADD(new_item, DICTIONARY_OBJ((Dictionary)ARRAY_DICT_INIT)); } ADD(new_item, copy_object(item.items[1])); ADD(new_contents, ARRAY_OBJ(new_item)); } ADD(new_args, ARRAY_OBJ(new_contents)); for (size_t i = 1; i < args.size; i++) { ADD(new_args, copy_object(args.items[i])); } push_call(ui, "cmdline_show", new_args); }