anchor.diff:      :accessor      height
       :documentation
       "The height (number of visible lines) of the textarea. The area can be scrolled vertically.")
  +
  +   (style
  +    :initarg       :style
  +    :initform      nil
  +    :type          (or null cons)
  +    :documentation
  +    "A plist containing four styles: :foreground, :background, :selected-foreground, :selected-background.")
   
      (insert-mode-p
       :initarg       :insert-mode
  
positive.code: (defmethod clear ((area textarea) &key)
    "Clear the textarea by overwriting the underlying window with #\space.
  
  If the underlying window has a background char, the background will
  be used to clear the window."
    (with-accessors ((pos element-position) (width width) (height height) (win window)) area
      (setf (cursor-position win) pos)
      ;; return to the start of the area after the clearing
      (save-excursion win
        (loop for i from 0 to (1- height) do
          (loop for j from 0 to (1- width) do
            (goto win pos (list i j))
            ;; adding a simple space inherits the attributes and colors from the background char of the window.
            (add win #\space))))))
  
  (defmethod update-cursor-position ((area textarea))
    (with-accessors ((pos element-position) (win window) (dptr display-pointer)
  
negative.code:     (refresh win)))
  
  (defmethod draw ((area textarea))
    (with-accessors ((pos element-position) (width width) (height height) (inbuf buffer)
                     (selected selectedp) (dptr display-pointer) (win window) (style style)) area
      (clear area)
      (let ((fg-style (if selected (getf style :selected-foreground) (getf style :foreground)))
            (y 0)
            (x 0))
        ;; start at (0 0)
        (goto win pos (list y x))
  