Exemple #1
0
static void ui_window_draw_status(UiWin *w) {
	UiCursesWin *win = (UiCursesWin*)w;
	if (!win->winstatus)
		return;
	UiCurses *uic = win->ui;
	Vis *vis = uic->vis;
	bool focused = uic->selwin == win;
	const char *filename = vis_file_name(win->file);
	const char *status = vis_mode_status(vis);
	wattrset(win->winstatus, focused ? A_REVERSE|A_BOLD : A_REVERSE);
	mvwhline(win->winstatus, 0, 0, ' ', win->width);
	mvwprintw(win->winstatus, 0, 0, "%s %s %s %s",
	          focused && status ? status : "",
	          filename ? filename : "[No Name]",
	          text_modified(vis_file_text(win->file)) ? "[+]" : "",
	          vis_macro_recording(vis) ? "recording": "");

	char buf[4*32] = "", *msg = buf;
	int cursor_count = view_cursors_count(win->view);
	if (cursor_count > 1) {
		Cursor *c = view_cursors_primary_get(win->view);
		int cursor_number = view_cursors_number(c) + 1;
		msg += sprintf(msg, "[%d/%d] ", cursor_number, cursor_count);
	}

	if (!(win->options & UI_OPTION_LARGE_FILE)) {
		CursorPos pos = view_cursor_getpos(win->view);
		msg += sprintf(msg, "%zd, %zd", pos.line, pos.col);
	}

	if (buf[0])
		mvwaddstr(win->winstatus, 0, win->width - (msg - buf) - 1, buf);
}
Exemple #2
0
static const char *cursors_clear(Vis *vis, const char *keys, const Arg *arg) {
	View *view = vis_view(vis);
	if (view_cursors_count(view) > 1)
		view_cursors_clear(view);
	else
		view_cursors_selection_clear(view_cursor(view));
	return keys;
}
Exemple #3
0
static const char *redo(Vis *vis, const char *keys, const Arg *arg) {
	size_t pos = text_redo(vis_text(vis));
	if (pos != EPOS) {
		View *view = vis_view(vis);
		if (view_cursors_count(view) == 1)
			view_cursor_to(view, pos);
		/* redraw all windows in case some display the same file */
		vis_draw(vis);
	}
	return keys;
}