bool editor_window_split(Win *original) { Win *win = window_new_file(original->editor, original->file); if (!win) return false; win->file = original->file; win->file->refcount++; view_syntax_set(win->view, view_syntax_get(original->view)); view_cursor_to(win->view, view_cursor_get(original->view)); editor_draw(win->editor); return true; }
bool vis_window_split(Win *original) { Win *win = window_new_file(original->vis, original->file); if (!win) return false; for (size_t i = 0; i < LENGTH(win->modes); i++) { if (original->modes[i].bindings) win->modes[i].bindings = map_new(); if (win->modes[i].bindings) map_copy(win->modes[i].bindings, original->modes[i].bindings); } win->file = original->file; win->file->refcount++; view_syntax_set(win->view, view_syntax_get(original->view)); view_options_set(win->view, view_options_get(original->view)); view_cursor_to(win->view, view_cursor_get(original->view)); vis_draw(win->vis); return true; }