]> gitweb.michael.orlitzky.com - nagios-mode.git/blobdiff - nagios-mode.el
Whitespace fixes.
[nagios-mode.git] / nagios-mode.el
index 377400172a2cf08b2123314612205d95d2a52be1..71cc5a008f9480cbdf11a33ce0970e4198008284 100644 (file)
@@ -41,7 +41,7 @@
   )
 
 
-(defun beginning-of-line-pos()
+(defun nagios-beginning-of-line-pos()
   ;; Return the point position corresponding to the beginning
   ;; of the current line.
   (save-excursion
@@ -50,7 +50,7 @@
   )
 )
 
-(defun end-of-line-pos()
+(defun nagios-end-of-line-pos()
   ;; Return the point position corresponding to the end
   ;; of the current line.
   (save-excursion
   )
 )
 
-(defun point-offset()
+(defun nagios-point-offset()
   ;; How far are we from the beginning of the line?
-  (- (point) (beginning-of-line-pos))
+  (- (point) (nagios-beginning-of-line-pos))
 )
 
-(defun first-char-offset()
+(defun nagios-first-char-offset()
   ;; How far is the first character on this line
   ;; from the beginning of the line?
   (save-excursion
@@ -73,9 +73,9 @@
   )
 )
 
-(defun first-char-pos()
+(defun nagios-first-char-pos()
   ;; What's the position of the first character on this line?
-  (+ (beginning-of-line-pos) (first-char-offset))
+  (+ (nagios-beginning-of-line-pos) (nagios-first-char-offset))
 )
 
 (defun nagios-indent-to(indent-column)
 
     ;; And store the offset of the first character (with respect to the
     ;; beginning of the line) in orig-first-char-offset.
-    (let ((orig-first-char-offset (first-char-offset)))
+    (let ((orig-first-char-offset (nagios-first-char-offset)))
 
       ;; Delete any leading whitespace, and move the point to the
       ;; beginning of the line.
-      (delete-region (beginning-of-line-pos) (first-char-pos))
+      (delete-region (nagios-beginning-of-line-pos) (nagios-first-char-pos))
       (beginning-of-line)
 
       ;; Now insert indent-column spaces.
 
       ;; The text on the current line just moved left/right some amount;
       ;; call it text-delta. We want to move the point that same distance.
-      (let ((text-delta (- (first-char-offset) orig-first-char-offset)))
+      (let ((text-delta (- (nagios-first-char-offset) orig-first-char-offset)))
        (goto-char (+ orig-point text-delta))
       )
 
       ;; The point should never wind up to the left of indent-column, so
       ;; if it's there, move it over to indent-column.
-      (if (< (point-offset) indent-column)
-         (goto-char (+ (beginning-of-line-pos) indent-column))
+      (if (< (nagios-point-offset) indent-column)
+         (goto-char (+ (nagios-beginning-of-line-pos) indent-column))
       )
     )
   )
 )
 
 
+(defun nagios-char-is-commented(pos)
+  "True if the character at position pos is commented, nil otherwise."
+  (save-excursion
+    (goto-char pos)
+    (re-search-backward "#" (nagios-beginning-of-line-pos) t)
+  )
+)
+
+(defun nagios-char-is-commented-and-valid(pos)
+  "True if the character at position pos is commented and non-nil.
+   Nil otherwise."
+  (if (eq nil pos)
+      nil
+      (nagios-char-is-commented pos)
+  )
+)
+
 
-(defun last-opening-brace()
-  ;; Get the position of the last opening brace, with
-  ;; respect to the current point.
+(defun nagios-last-opening-brace()
+  "Returns the position of the last opening brace, with
+   respect to the current point. Ignores braces which
+   are commented out."
   (save-excursion
     (let ((lob (re-search-backward "{" nil t)))
+
+      (while (nagios-char-is-commented-and-valid lob)
+       (goto-char lob)
+       (setq lob (re-search-backward "{" nil t))
+      )
+
       (if lob
          lob
          -1)
   )
 )
 
-(defun last-closing-brace()
-  ;; Get the position of the last closing brace, with
-  ;; respect to the current point.
+
+(defun nagios-last-closing-brace()
+  "Get the position of the last closing brace, with
+   respect to the current point. Ignores braces which
+   are commented out."
   (save-excursion
     (let ((lcb (re-search-backward "}" nil t)))
+
+      (while (nagios-char-is-commented-and-valid lcb)
+       (goto-char lcb)
+       (setq lcb (re-search-backward "}" nil t))
+      )
+
       (if lcb
          lcb
          -1)
 
   ;; If the last brace seen in the buffer is an opening brace, we're
   ;; in a block. Otherwise, we aren't.
-  (if (>= (last-closing-brace) (last-opening-brace))
+  (if (>= (nagios-last-closing-brace) (nagios-last-opening-brace))
       nil
       t)
 )
 
 
-(defun brace-on-line()
+(defun nagios-brace-on-line()
   ;; Is there a curly brace on this line?
   (save-excursion
     (beginning-of-line)
-    (re-search-forward "[{}]" (end-of-line-pos) t)
+    (re-search-forward "[{}]" (nagios-end-of-line-pos) t)
   )
 )
 
        )
 
     ;; Set the indentation level to 0 if we find either brace on this
-    ;; line.
-    (if (brace-on-line)
-       (setq indent 0)
+    ;; line and.
+    (if (and (nagios-brace-on-line)
+            (not (nagios-char-is-commented (nagios-brace-on-line))))
+       0
+        indent
     )
-
-    indent
   )
 )
 
     (read-kbd-macro "}")
     'nagios-insert-right-brace-and-indent)
   )
-  
+
 
 
 (defconst nagios-directives
   (make-local-variable 'syntax-begin-function)
 
   (set-syntax-table nagios-mode-syntax-table)
-  
+
   (setq mode-name             "nagios"
        major-mode            'nagios-mode
        indent-line-function  'nagios-indent-line
        comment-start         "#"
        comment-start-skip    "#\|; +"
        comment-end           ""
-       
+
        ;; Since comments and strings do not span multiple lines,
        ;; the syntax parser can safely start parsing at the beginning
        ;; of any line.