Пример #1
0
static const char *prompt_backspace(Vis *vis, const char *keys, const Arg *arg) {
	Win *prompt = vis->win;
	Text *txt = prompt->file->text;
	size_t size = text_size(txt);
	size_t pos = view_cursor_get(prompt->view);
	char c;
	if (pos == size && (pos == 1 || (size >= 2 && text_byte_get(txt, size-2, &c) && c == '\n'))) {
		prompt_restore(prompt);
		prompt_hide(prompt);
	} else {
		vis_operator(vis, VIS_OP_DELETE);
		vis_motion(vis, VIS_MOVE_CHAR_PREV);
	}
	return keys;
}
Пример #2
0
Файл: main.c Проект: SUMPaul/vis
static const char *replace(Vis *vis, const char *keys, const Arg *arg) {
	if (!keys[0])
		return NULL;
	const char *next = vis_keys_next(vis, keys);
	if (!next)
		return NULL;
	size_t len = next - keys;
	char key[len+1];
	memcpy(key, keys, len);
	key[len] = '\0';
	vis_operator(vis, VIS_OP_REPLACE);
	vis_motion(vis, VIS_MOVE_NOP);
	vis_keys_inject(vis, next, key);
	vis_keys_inject(vis, next+len, "<Escape>");
	return next;
}
Пример #3
0
Файл: main.c Проект: SUMPaul/vis
static const char *operator_filter(Vis *vis, const char *keys, const Arg *arg) {
	vis_operator(vis, VIS_OP_FILTER, arg->s);
	return keys;
}
Пример #4
0
Файл: main.c Проект: SUMPaul/vis
static const char *operator(Vis *vis, const char *keys, const Arg *arg) {
	vis_operator(vis, arg->i);
	return keys;
}