   (setq comment-end "")
   (set (make-local-variable 'fill-paragraph-function)
        'espresso-c-fill-paragraph)
+
+  ;; Parse cache
+  (add-hook 'before-change-functions #'espresso--flush-caches t t)
+
+  ;; Frameworks
+  (espresso--update-quick-match-re)
 
   ;; Imenu
   (setq imenu-case-fold-search nil)

  :type 'boolean
  :group 'espresso)

;;; KeyMap

(defvar espresso-mode-map nil
  "Keymap used in Espresso mode.")

(unless espresso-mode-map
  (setq espresso-mode-map (make-sparse-keymap)))

(when espresso-auto-indent-flag
  (mapc (lambda (key)
	  (define-key espresso-mode-map key 'espresso-insert-and-indent))
	'("{" "}" "(" ")" ":" ";" ",")))

(defun espresso-insert-and-indent (key)
  "Runs the command bound to KEY in the global keymap, and if

  (interactive (list (this-command-keys)))
  (call-interactively (lookup-key (current-global-map) key))
  (let ((syntax (save-restriction (widen) (syntax-ppss))))
    (and (not (nth 8 syntax))
         espresso-auto-indent-flag
         (indent-according-to-mode))))

;;; Syntax table and parsing

