Win *window_new_file(Vis *vis, File *file) { Win *win = calloc(1, sizeof(Win)); if (!win) return NULL; win->vis = vis; win->file = file; win->jumplist = ringbuf_alloc(31); win->view = view_new(file->text, vis->lua); win->ui = vis->ui->window_new(vis->ui, win->view, file, UI_OPTION_STATUSBAR); if (!win->jumplist || !win->view || !win->ui) { window_free(win); return NULL; } file->refcount++; view_tabwidth_set(win->view, vis->tabwidth); if (vis->windows) vis->windows->prev = win; win->next = vis->windows; vis->windows = win; vis->win = win; vis->ui->window_focus(win->ui); for (size_t i = 0; i < LENGTH(win->modes); i++) win->modes[i].parent = &vis_modes[i]; if (!file->internal && vis->event && vis->event->win_open) vis->event->win_open(vis, win); return win; }
Win *window_new_file(Vis *vis, File *file, enum UiOption options) { Win *win = calloc(1, sizeof(Win)); if (!win) return NULL; win->vis = vis; win->file = file; win->jumplist = ringbuf_alloc(31); win->event.data = win; win->event.draw = window_draw; win->horizon = 1 << 15; win->view = view_new(file->text, &win->event); win->ui = vis->ui->window_new(vis->ui, win->view, file, options); if (!win->jumplist || !win->view || !win->ui) { window_free(win); return NULL; } file->refcount++; view_tabwidth_set(win->view, vis->tabwidth); if (vis->windows) vis->windows->prev = win; win->next = vis->windows; vis->windows = win; vis->win = win; vis->ui->window_focus(win->ui); for (size_t i = 0; i < LENGTH(win->modes); i++) win->modes[i].parent = &vis_modes[i]; if (!file->internal && vis->event && vis->event->win_open) vis->event->win_open(vis, win); return win; }
void editor_tabwidth_set(Editor *ed, int tabwidth) { if (tabwidth < 1 || tabwidth > 8) return; for (Win *win = ed->windows; win; win = win->next) view_tabwidth_set(win->view, tabwidth); ed->tabwidth = tabwidth; }
static Win *window_new_file(Editor *ed, File *file) { Win *win = calloc(1, sizeof(Win)); if (!win) return NULL; win->editor = ed; win->file = file; win->events = (ViewEvent) { .data = win, .selection = window_selection_changed, }; win->jumplist = ringbuf_alloc(31); win->view = view_new(file->text, &win->events); win->ui = ed->ui->window_new(ed->ui, win->view, file->text); if (!win->jumplist || !win->view || !win->ui) { window_free(win); return NULL; } view_tabwidth_set(win->view, ed->tabwidth); if (ed->windows) ed->windows->prev = win; win->next = ed->windows; ed->windows = win; ed->win = win; ed->ui->window_focus(win->ui); return win; }
Win *window_new_file(Vis *vis, File *file) { Win *win = calloc(1, sizeof(Win)); if (!win) return NULL; win->vis = vis; win->file = file; win->jumplist = ringbuf_alloc(31); win->view = view_new(file->text, vis->lua); win->ui = vis->ui->window_new(vis->ui, win->view, file, UI_OPTION_STATUSBAR); if (!win->jumplist || !win->view || !win->ui) { window_free(win); return NULL; } file->refcount++; view_tabwidth_set(win->view, vis->tabwidth); if (text_size(file->text) > LARGE_FILE) { enum UiOption opt = view_options_get(win->view); opt |= UI_OPTION_LARGE_FILE; opt &= ~UI_OPTION_LINE_NUMBERS_ABSOLUTE; view_options_set(win->view, opt); } if (vis->windows) vis->windows->prev = win; win->next = vis->windows; vis->windows = win; vis->win = win; vis->ui->window_focus(win->ui); for (size_t i = 0; i < LENGTH(win->modes); i++) win->modes[i].parent = &vis_modes[i]; if (vis->event && vis->event->win_open) vis->event->win_open(vis, win); return win; }