From cae527bedaf1641fff25c691524d51b1025a885e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 22 Sep 2014 05:46:46 +0200 Subject: Make idle timeout configurable per mode --- config.def.h | 2 ++ vis.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/config.def.h b/config.def.h index 1d7c9ab..a774a1d 100644 --- a/config.def.h +++ b/config.def.h @@ -642,6 +642,7 @@ static Mode vis_modes[] = { .leave = vis_mode_insert_leave, .input = vis_mode_insert_input, .idle = vis_mode_insert_idle, + .idle_timeout = 3, }, [VIS_MODE_REPLACE] = { .name = "--REPLACE--", @@ -650,6 +651,7 @@ static Mode vis_modes[] = { .leave = vis_mode_replace_leave, .input = vis_mode_replace_input, .idle = vis_mode_insert_idle, + .idle_timeout = 3, }, }; diff --git a/vis.c b/vis.c index e3ffb45..881ec81 100644 --- a/vis.c +++ b/vis.c @@ -74,6 +74,7 @@ struct Mode { the return value determines whether parent modes will be searched */ void (*input)(const char*, size_t); /* called whenever a key is not found in this mode and all its parent modes */ void (*idle)(void); /* called whenever a certain idle time i.e. without any user input elapsed */ + time_t idle_timeout; /* idle time in seconds after which the registered function will be called */ }; typedef struct { @@ -1354,7 +1355,7 @@ int main(int argc, char *argv[]) { editor_update(vis); doupdate(); - idle.tv_sec = 3; + idle.tv_sec = mode->idle_timeout; int r = select(1, &fds, NULL, NULL, timeout); if (r == -1 && errno == EINTR) continue; -- cgit v1.2.3