]> gitweb.michael.orlitzky.com - nagios-mode.git/blobdiff - nagios-mode.el
Remove the nagios-comments and nagios-string constants.
[nagios-mode.git] / nagios-mode.el
index 6b1bd3beac87315bcb43ce67fdcdb3271af18e5e..291b0eb0c006f7e89f9134122043d691c2779f9f 100644 (file)
 
 
 
-;; Syntax Highlighting Patterns
-
-(defconst nagios-comments
-  (eval-when-compile
-    (regexp-alt-raw
-     '("#+.*"
-       ";+.*")))
-  )
-
-
 (defconst nagios-directives
   (eval-when-compile
     (concat "^[ \t\r\n]*"
     (regexp-opt
      '("active_checks_enabled" "address" "alias" "check_command"
        "check_freshness" "check_interval" "check_period" "checks_enabled"
-       "command_line" "command_name" "contact_groups" "contact_name"
-       "contactgroup_name" "contacts" "dependent_host_name"
-       "dependent_service_description" "email" "event_handler"
-       "event_handler_enabled" "execution_failure_criteria"
+       "command_line" "command_name" "contactgroups" "contact_groups"
+       "contactgroup_members" "contact_name" "contactgroup_name" "contacts"
+       "dependent_host_name" "dependent_service_description" "email"
+       "event_handler" "event_handler_enabled" "execution_failure_criteria"
        "failure_prediction_enabled" "first_notification"
-       "flap_detection_enabled" "freshness_threshold" "friday"
-       "high_flap_threshold" "host_name" "host_notification_commands"
+       "first_notification_delay" "flap_detection_enabled" "freshness_threshold"
+       "friday" "high_flap_threshold" "host_name" "host_notification_commands"
        "host_notification_options" "host_notification_period"
        "host_notifications_enabled" "hostgroup_name" "hostgroups"
        "is_volatile" "last_notification" "low_flap_threshold"
 
 (defvar nagios-font-lock-keywords
   (list
-
    (cons nagios-special font-lock-keyword-face)
    (cons nagios-directives font-lock-variable-name-face)
    (cons nagios-macros font-lock-constant-face)
-   (cons nagios-definitions '(1 font-lock-function-name-face))
-
-  ;; And comments take precedence over everything else.
-   (cons nagios-comments '(0 font-lock-comment-delimiter-face t)))
+   (cons nagios-definitions '(1 font-lock-function-name-face)))
 
   "Rules for highlighting Nagios configuration files."
   )
 
 
 
+(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.