-;; Syntax Highlighting Patterns
-
-(defconst nagios-comments
- (eval-when-compile
- (regexp-alt-raw
- '("#+.*"
- ";+.*")))
- )
-
-
(defconst nagios-directives
(eval-when-compile
(concat "^[ \t\r\n]*"
-(defconst nagios-string
- (eval-when-compile
- "\\(\".*?\"\\)"))
-
-
;; The One True Font Locking Variable
(defvar nagios-font-lock-keywords
(list
-
- ;; Font lock the comments first.
- (cons nagios-comments font-lock-comment-delimiter-face)
-
- ;; Strings have the highest priority. For now, this is broken,
- ;; but I guess I would rather have strings miscolored within
- ;; comments than the other way around.
- (cons nagios-string '(0 font-lock-string-face t))
-
(cons nagios-special font-lock-keyword-face)
(cons nagios-directives font-lock-variable-name-face)
(cons nagios-macros font-lock-constant-face)
+(defvar nagios-mode-syntax-table nil
+ "Syntax table used in nagios-mode buffers.")
+(if nagios-mode-syntax-table
+ nil
+ (setq nagios-mode-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?# "< b" nagios-mode-syntax-table) ;; Comment style 1
+ (modify-syntax-entry ?\; "< b" nagios-mode-syntax-table) ;; Comment style 2
+ (modify-syntax-entry ?\n "> b" nagios-mode-syntax-table) ;; End comment
+ )
+
+
;; Main Mode Function
(defun nagios-mode()
"Major mode for editing Nagios configuration files."
(interactive)
-
- ;; Initializing. This is actually important to cover
- ;; up some Emacs stupidity. Font locking won't occur
- ;; without it.
(kill-all-local-variables)
-
- ;; Set up indentation handling using the functions
- ;; defined earlier.
+ (make-local-variable 'font-lock-defaults)
+ (make-local-variable 'comment-start)
+ (make-local-variable 'comment-end)
(make-local-variable 'indent-line-function)
- (setq indent-line-function 'nagios-indent-line)
+
+ (set-syntax-table nagios-mode-syntax-table)
- ;; Configure font locking. Set the defaults to something
- ;; sensible, defined earlier.
- (make-local-variable 'font-lock-defaults)
- (setq font-lock-defaults '(nagios-font-lock-keywords t t))
+ (setq mode-name "nagios"
+ major-mode 'nagios-mode
+ indent-line-function 'nagios-indent-line
+ font-lock-defaults '(nagios-font-lock-keywords)
+ comment-start "#"
+ comment-end ""
+ )
;; Keyboard Mapping
(use-local-map nagios-mode-map)
-
- ;; Rock and roll.
- (setq mode-name "nagios"
- major-mode 'nagios-mode)
;; I don't /think/ I need to define this before attempting
;; to run it. Users can define it if they want.