LINUX.ORG.RU

История изменений

Исправление xaizek, (текущая версия) :

Обработка ввода – песня на сотни строк:

А как по-другому?

Массивом структур, каждая их которых описывает сочетание. В Vim тоже есть if-else, но там на верхнем уровне (самом большом, т.к. для первого символа) используется таблица. Пример из Vifm:

	{WK_d WK_p,        {{&cmd_dp}, .descr = "put current file"}},
	{WK_D,             {{&cmd_D_selector}, FOLLOWED_BY_SELECTOR, .descr = "remove files permanently"}},
	{WK_d,             {{&cmd_d_selector}, FOLLOWED_BY_SELECTOR, .descr = "remove files"}},
	{WK_e,             {{&cmd_e}, .descr = "explore file contents"}},
	{WK_f,             {{&cmd_f}, FOLLOWED_BY_MULTIKEY, .descr = "char-search forward"}},
	{WK_g WK_A,        {{&cmd_gA}, .descr = "(re)calculate size"}},

Просто без чего-то подобного пользовательские сочетания клавишь реализовать всё равно не получится. И странно, что пишут клон Vim, не уделив внимания его системе ввода как его главной особенности.

Исходная версия xaizek, :

Обработка ввода – песня на сотни строк:

А как по-другому?

Массивом структур, каждая их которых описывает сочетание. В Vim тоже есть if-else, но там на верхнем уровне (самом большом, т.к. для первого символа) используется таблица. Пример из Vifm:

	{WK_d WK_p,        {{&cmd_dp}, .descr = "put current file"}},
	{WK_D,             {{&cmd_D_selector}, FOLLOWED_BY_SELECTOR, .descr = "remove files permanently"}},
	{WK_d,             {{&cmd_d_selector}, FOLLOWED_BY_SELECTOR, .descr = "remove files"}},
	{WK_e,             {{&cmd_e}, .descr = "explore file contents"}},
	{WK_f,             {{&cmd_f}, FOLLOWED_BY_MULTIKEY, .descr = "char-search forward"}},
	{WK_g WK_A,        {{&cmd_gA}, .descr = "(re)calculate size"}},

Просто без чего-то подобного пользовательские сочетания клавишь реализовать всё равно не получится.