From c4735264f46fdc62020c81bd8ff6f67ebd1dad9a Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 21 Jan 2015 19:35:24 +0000 Subject: Edit mode: first working visual mode. --- lib/utils.coffee | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib/utils.coffee') diff --git a/lib/utils.coffee b/lib/utils.coffee index 661f7e84..f8eb5457 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -152,6 +152,20 @@ Utils = # locale-sensitive uppercase detection hasUpperCase: (s) -> s.toLowerCase() != s + # Allow a function call to be suppressed. Use Utils.suppress.unlessSuppressed to call a function, unless it + # is suppressed via the given key. Use Utils.suppressor.suppress to call a function while suppressing the + # given key. + suppressor: do -> + suppressed = {} + + suppress: (key, func) -> + suppressed[key] = if suppressed[key]? then suppressed[key] + 1 else 1 + func() + suppressed[key] -= 1 + + unlessSuppressed: (key, func) -> + func() unless suppressed[key]? and 0 < suppressed[key] + # This creates a new function out of an existing function, where the new function takes fewer arguments. This # allows us to pass around functions instead of functions + a partial list of arguments. Function::curry = -> -- cgit v1.2.3