From 7c2ffd3fef3f9131ee448a5f40d91835c8bd814d Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Thu, 20 Jun 2024 23:18:28 +0900 Subject: Make transform*, --info-command, and execute-silent cancellable Users can press CTRL-C after 1 second to terminate the command. Close #3883 --- src/util/util.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/util/util.go') diff --git a/src/util/util.go b/src/util/util.go index ec5a1ea0..c8301363 100644 --- a/src/util/util.go +++ b/src/util/util.go @@ -144,12 +144,22 @@ func IsTty(file *os.File) bool { return isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd) } +// RunOnce runs the given function only once +func RunOnce(f func()) func() { + once := Once(true) + return func() { + if once() { + f() + } + } +} + // Once returns a function that returns the specified boolean value only once func Once(nextResponse bool) func() bool { state := nextResponse return func() bool { prevState := state - state = false + state = !nextResponse return prevState } } -- cgit v1.2.3