     @scopedConfigSubscriptions = subscriptions = new CompositeDisposable
 
     scopeDescriptor = @getRootScopeDescriptor()
-
-    oldConfigSettings = @configSettings
-    @configSettings =
-      scrollPastEnd: @config.get('editor.scrollPastEnd', scope: scopeDescriptor)
-      softWrap: @config.get('editor.softWrap', scope: scopeDescriptor)
-      softWrapAtPreferredLineLength: @config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor)
-      softWrapHangingIndent: @config.get('editor.softWrapHangingIndent', scope: scopeDescriptor)
-      preferredLineLength: @config.get('editor.preferredLineLength', scope: scopeDescriptor)
-
-    subscriptions.add @config.onDidChange 'editor.softWrap', scope: scopeDescriptor, ({newValue}) =>
-      @configSettings.softWrap = newValue
-      @updateWrappedScreenLines()
-
-    subscriptions.add @config.onDidChange 'editor.softWrapHangingIndent', scope: scopeDescriptor, ({newValue}) =>
-      @configSettings.softWrapHangingIndent = newValue
-      @updateWrappedScreenLines()
-
-    subscriptions.add @config.onDidChange 'editor.softWrapAtPreferredLineLength', scope: scopeDescriptor, ({newValue}) =>
-      @configSettings.softWrapAtPreferredLineLength = newValue
-      @updateWrappedScreenLines() if @isSoftWrapped()
-
-    subscriptions.add @config.onDidChange 'editor.preferredLineLength', scope: scopeDescriptor, ({newValue}) =>
-      @configSettings.preferredLineLength = newValue
-      @updateWrappedScreenLines() if @isSoftWrapped() and @config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor)
-
-    subscriptions.add @config.observe 'editor.scrollPastEnd', scope: scopeDescriptor, (value) =>
-      @configSettings.scrollPastEnd = value
-
-    @updateWrappedScreenLines() if oldConfigSettings? and not _.isEqual(oldConfigSettings, @configSettings)
+    subscriptions.add @config.onDidChange 'editor.tabLength', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.invisibles', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.showInvisibles', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.showIndentGuide', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.softWrap', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.softWrapHangingIndent', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.softWrapAtPreferredLineLength', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+    subscriptions.add @config.onDidChange 'editor.preferredLineLength', scope: scopeDescriptor, @resetDisplayLayer.bind(this)
+
+    @resetDisplayLayer()
 
   serialize: ->
     deserializer: 'DisplayBuffer'

      previousWidthInChars = @editorWidthInChars
      @editorWidthInChars = editorWidthInChars
      if editorWidthInChars isnt previousWidthInChars and @isSoftWrapped()
        @updateWrappedScreenLines()

  # Returns the editor width in characters for soft wrap.
  getEditorWidthInChars: ->

      @grammarRegistry, @packageManager, @assert
    })
    @buffer = @tokenizedBuffer.buffer
    @displayLayer = @buffer.addDisplayLayer()
    @displayLayer.setTextDecorationLayer(@tokenizedBuffer)
    @charWidthsByScope = {}
    @defaultMarkerLayer = @displayLayer.addMarkerLayer()
