daleken/
daleken/data/notes/
daleken/data/player/
daleken/data/system/poses/
daleken/doc/Homepage/images/
daleken/log/
; Daleken Area File Format mode.

(defvar daleken-area-mode-syntax-table nil
  "This is the syntax used for Daleken area files.")
(if daleken-area-mode-syntax-table ()
  (setq daleken-area-mode-syntax-table (make-syntax-table))
  (modify-syntax-entry ?- "_" daleken-area-mode-syntax-table)

  (modify-syntax-entry ?( "(" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?) ")" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?{ "(" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?} ")" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?\[ "(" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?\] ")" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?< "(" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?> ")" daleken-area-mode-syntax-table)

  (modify-syntax-entry ?\n ">   " daleken-area-mode-syntax-table)
  (modify-syntax-entry ?\f ">   " daleken-area-mode-syntax-table)
  (modify-syntax-entry ?\# "<   " daleken-area-mode-syntax-table)

  (modify-syntax-entry ?\\ "\\" daleken-area-mode-syntax-table)
  (modify-syntax-entry ?& "\\" daleken-area-mode-syntax-table)

  (modify-syntax-entry ?\" "\"" daleken-area-mode-syntax-table))

(defvar daleken-area-mode-abbrev-table nil
  "Abbrev table in use in Daleken-Area-mode buffers.")
(define-abbrev-table 'daleken-area-mode-abbrev-table ())

(defconst daleken-area-font-lock-keywords
  (list
   "^[ \t]*\\(eof;?\\|end;?\\)"
   '("[&\\\\]." 0 'font-lock-comment-face t)
   '("\\(@\\)\\([0-9]+\\|([^)]+)\\)" 1 'font-lock-keyword-face)
   '("(" (0 nil) ("<\\([^>]*\\)>" nil nil (1 'font-lock-constant-face)))
   '("^[ \t]*-\\([a-zA-Z]+\\)[ \t]+" 1 'font-lock-keyword-face)
   '("^[ \t]*\\([a-zA-Z]+\\)[ \t]+{" 1 'font-lock-variable-name-face)
   '("^[ \t]*\\([a-zA-Z]+\\)[ \t]+" 1 'font-lock-function-name-face)
))

(defun reload () ""
  (interactive)
  (kill-buffer (current-buffer))
  (load-file "~/daleken-area-mode.el")
  (find-file "~/mud/data/area/moranth.are")
  (font-lock-fontify-buffer))

(defun daleken-area-mode ()
  "Major mode for editing Daleken Area files."
  (interactive)
  (kill-all-local-variables)
  (require 'cc-mode)
  (c-initialize-cc-mode)
  (use-local-map c-mode-map)
  (setq major-mode 'daleken-area-mode)
  (setq mode-name "Daleken-Area")
  (setq local-abbrev-table daleken-area-mode-abbrev-table)
  (set-syntax-table daleken-area-mode-syntax-table)
  (make-local-variable 'paragraph-start)
  (setq paragraph-start (concat "$\\|" page-delimiter))
  (make-local-variable 'paragraph-separate)
  (setq paragraph-separate paragraph-start)
  (make-local-variable 'paragraph-ignore-fill-prefix)
  (setq paragraph-ignore-fill-prefix t)
  (make-local-variable 'indent-line-function)
  (setq indent-line-function 'c-indent-line)
  (make-local-variable 'require-final-newline)
  (setq require-final-newline t)
  (make-local-variable 'comment-start)
  (setq comment-start "#")
  (make-local-variable 'comment-end)
  (setq comment-end "")
  (make-local-variable 'comment-column)
  (setq comment-column 32)
  (make-local-variable 'comment-start-skip)
  (setq comment-start-skip "#+ *")
  (make-local-variable 'comment-indent-function)
  (setq comment-indent-function 'c-comment-indent)
  (make-local-variable 'parse-sexp-ignore-comments)
  (setq parse-sexp-ignore-comments t)
  (make-local-variable 'font-lock-defaults)
  (setq font-lock-defaults '(daleken-area-font-lock-keywords nil nil ((?_ . "w"))))
  (run-hooks 'daleken-area-mode-hook))

(defun darea-mode () "Alias for daleken-area-mode."
  (interactive) (daleken-area-mode))

(provide 'daleken-area-mode)