

(defvar c-styles '(gnu-style my-style))
(defvar current-style nil)
(defvar c-mode-hook nil)

(setq c-mode-hook (cons '(lambda nil (and current-style (funcall current-style))) 
			c-mode-hook))



(defun choose-c-style (&optional style)
  (interactive)
  (or style
      (setq style 
	    (intern 
	     (completing-read 
	      "C style: "
	      (mapcar (function (lambda (x) (cons (symbol-name x) x))) c-styles)
	      nil
	      t
	      nil))))
  (setq current-style style)
  (if (memq major-mode '(c-mode c++-mode))
      (funcall current-style)))

(defun gnu-style ()
  (setq c-brace-offset 0)
  (setq c-continued-brace-offset 0)
  (setq c-brace-imaginary-offset 0)
  (setq c-indent-level 2)
  (setq c-continued-statement-offset 2))


(defun my-style ()
  (setq c-brace-offset 0)
  (setq c-continued-brace-offset 0)
  (setq c-brace-imaginary-offset 0)
  (setq c-indent-level 4)
  (setq c-continued-statement-offset 4))
