anchor.diff:    (setf (variable-value 'enable-syntax-highlight) t)
     (setf (variable-value 'calc-indent-function) 'calc-indent)
     (setf (variable-value 'indent-tabs-mode) t)
  +  (setf (variable-value 'beginning-of-defun-function) 'c-beginning-of-defun)
  +  (setf (variable-value 'end-of-defun-function) 'c-end-of-defun)
     (run-hooks *c-mode-hook*))
   
   (define-key *c-mode-keymap* "}" 'c-electric-brace)
  
positive.code:   (:import-from
     :lem.language-mode
     :language-mode
     :indent)
    (:export :*c-mode-hook*))
  (in-package :lem-c-mode)
  
  
negative.code:   (insert-character (current-point) #\})
    (indent))
  
  (defun move-to-match-line (point n regex)
    (let ((step (if (plusp n) 1 -1)))
      (dotimes (_ (abs n))
        (when (start-line-p point)
          (unless (line-offset point step)
            (return-from move-to-match-line)))
        (loop
          (when (ppcre:scan regex (line-string point))
            (return))
          (unless (line-offset point step)
            (return-from move-to-match-line))))))
  
  (defun c-beginning-of-defun (point n)
    (move-to-match-line point (- n) (ppcre:create-scanner "^\\w[^=(]*")))
  
  (defun c-end-of-defun (point n)
    (if (minusp n)
        (c-beginning-of-defun point (- n))
        (search-forward-regexp point "^\\}")))
  
  (defvar *indent-line-function* nil)
  
  