           + ',' + Math.floor(e.clientY / @char_height) \
           + '>'
 
+      if config.blink_cursor
+        pause_blink()
+
     document.addEventListener 'mouseup', (e) =>
       return if not @mouse_enabled
       e.preventDefault()

          + ',' + Math.floor(e.clientY / @char_height) \
          + '>'

    window.addEventListener 'resize', (e) =>
      if not @resize_timer
        @resize_timer = setTimeout =>

  kn += 'A-' if e.altKey
  kn += button + '>'
  kn

# borrowed from underscore@acf826fa42ba6
debounce = (func, wait, immediate) ->
  timeout = undefined
  args = undefined
  context = undefined
  timestamp = undefined
  result = undefined

  later = ->
    last = Date.now() - timestamp
    if last < wait and last >= 0
      timeout = setTimeout(later, wait - last)
    else
      timeout = null
      if !immediate
        result = func.apply(context, args)
        if !timeout
          context = args = null
    return

  ->
    context = this
    args = arguments
    timestamp = Date.now()
    callNow = immediate and !timeout
    if !timeout
      timeout = setTimeout(later, wait)
    if callNow
      result = func.apply(context, args)
      context = args = null
    result

# visualize neovim's abstract-ui
class UI extends EventEmitter
