; 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)