From 637d90be6847051d20a4cf3b704d599c877a97d3 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Thu, 8 Jan 2015 11:09:06 +0000 Subject: Modes; more changes... - Simplify InsertMode Trigger/Blocker (yet again). - Reduce badge flicker for singletons. --- lib/utils.coffee | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib') diff --git a/lib/utils.coffee b/lib/utils.coffee index 661f7e84..a7bfc440 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -152,6 +152,24 @@ Utils = # locale-sensitive uppercase detection hasUpperCase: (s) -> s.toLowerCase() != s + # Utility class. This can help different software components to interact without having to share much logic + # and/or state. See InsertModeTrigger for an example. + # suppressedResult is the value to be returned when a function call is suppressed. + Suppressor: class Suppressor + constructor: (@suppressedResult = null)-> + @count = 0 + + suppress: -> @count += 1 + unsuppress: -> @count -= 1 + + runSuppresed: (func) -> + @suppress() + func() + @unsuppress() + + unlessSuppressed: (func) -> + if 0 < @count then @suppressedResult else func() + # 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