;; $Id$ -*- emacs-lisp -*-

;; This file was contributed by Mats Lidell

;; Here's a sample .emacs file that might help you along the way.

;; First comes a setup that is ideal when you are only working with curl. Just
;; select the next few lines, paste it into your .emacs and change the path to
;; the tools folder. (If you are using more than one style. Look further down
;; the this file.)

(load-file "<YOUR-PATH-TO-CURL>/tools/curl-style.el")
(add-hook 'c-mode-common-hook 'curl-c-mode-common-hook)

;; If you are using more than one style in maybe more than one project the
;; example below might help out. It uses a predicate hook pair to select the
;; right hook to use.

(defvar my-style-selective-mode-hook nil
  "Holds a list of predicate and hooks pairs. (list (PREDICATE . HOOK)
...) It is used by my-mode-selective-mood-hook-function for choosing
the right hook to run.")

(defun my-style-selective-mode-hook-function ()
  "Run each PREDICATE in `my-style-selective-mode-hook' to see if the 
HOOK in the pair should be executed. If the PREDICATE evaluate to non
nil HOOK is executed and the rest of the hooks are ignored."
  (let ((h my-style-selective-mode-hook))
    (while (not (eval (caar h)))
      (setq h (cdr h)))
    (funcall (cdar h))))

;;; Example configuration.
;; Add the selective hook to the c-mode-common-hook
(add-hook 'c-mode-common-hook 'my-style-selective-mode-hook-function)

;; Add your own hooks and predicates. The predicate should evaluate to
;; non nil if the hook in the pair is supposed to be evaluated. In the
;; example a part of the path is used to select what style to
;; use. Choose what is appropriate for you.
(add-hook 'my-style-selective-mode-hook 
	  '((string-match "curl" (buffer-file-name)) . curl-c-mode-common-hook))
(add-hook 'my-style-selective-mode-hook 
	  '((string-match "other" (buffer-file-name)) . other-c-mode-common-hook))
;; Make sure the default style is appended.
(add-hook 'my-style-selective-mode-hook '(t . my-c-mode-common-hook) t)
