     @stylesheet.parentNode.removeChild @stylesheet
     @stylesheet = null
 
-  updateGlobalCursorStyle: (globalConfig) =>
+  updateGlobalCursorStyle: (@globalConfig) =>
     @updateCursorStyleForScope globalConfig, [atom.workspace], ''
     for own scopeName, editors of @configObserver.editorsForObservedScopes()
       scopedConfig = @configObserver.configForScope scopeName
       @updateCursorStyleForScope scopedConfig, editors, scopeName
 
   updateCursorStyleForScope: (scopedConfig, editors, scopeName) =>
+    if scopedConfig isnt @globalConfig and equals scopedConfig, @globalConfig, scopeName
+      return
     scopedConfig = @prepareConfig scopedConfig
     @updateStylesheet scopeName, scopedConfig
     for editor in editors

    @stylesheet.sheet.insertRule """
      #{@selectorForScope scopeName} {
        #{primaryColor.property}: #{primaryColor.toRGBAString()};
        #{if pulseDuration then "transition-duration: #{pulseDuration};" else ''}
        #{if cursorThickness then "border-width: #{cursorThickness};" else ''}
      }
    """, @cssRulesIndexes[scopeName]


'use strict'
PackageConfigObserver = require 'atom-package-config-observer'

equals = (obj, ref) ->
  if obj is ref
    return true
  for own key, val of obj
    if typeof val is 'object'
      if not equals ref[key], val
        return false
    else if ref[key] isnt val
      return false
  return true

class BlockCursor
  config:
