     
     /// A reference to the NSLayoutManager.
     open fileprivate(set) var layoutManager: NSLayoutManager!
+    
+    /// A preset wrapper around textViewEdgeInsets.
+    open var textViewEdgeInsetsPreset = EdgeInsetsPreset.none {
+        didSet {
+            textViewEdgeInsets = EdgeInsetsPresetToValue(preset: textViewEdgeInsetsPreset)
+        }
+    }
+    
+    /// A reference to textViewEdgeInsets.
+    @IBInspectable
+    open var textViewEdgeInsets = EdgeInsets.zero {
+        didSet {
+            layoutSubviews()
+        }
+    }
     
     /// Reference to the TextView.
     open fileprivate(set) var textView: TextView!

}

open class Editor: View {
    /// TextStorage instance that is observed while editing.
    open fileprivate(set) var textStorage: TextStorage!
    

    public var uniqueMatches: [String] {
        var seen = [String: Bool]()
        return matches.filter { nil == seen.updateValue(true, forKey: $0) }
    }
    
    open override func layoutSubviews() {
        super.layoutSubviews()
        guard willLayout else {
            return
        }
        
        textView.frame = CGRect(x: textViewEdgeInsets.left, y: textViewEdgeInsets.top, width: width - textViewEdgeInsets.left - textViewEdgeInsets.right, height: height - textViewEdgeInsets.top - textViewEdgeInsets.bottom)
    }
    
    /**
