X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=nagios-mode.el;h=e486edc5b4f93e290a418926017b03976e2e3278;hb=36e47cd9620f76fe2b69b0e2604e5448353b0047;hp=b9c5faaba8054a478f8418388a4e00acc6954250;hpb=c6ae78ead8bae7b798c843ed0cffd466e69060e4;p=nagios-mode.git diff --git a/nagios-mode.el b/nagios-mode.el index b9c5faa..e486edc 100644 --- a/nagios-mode.el +++ b/nagios-mode.el @@ -74,33 +74,39 @@ +(defun last-opening-brace() + ;; Get the position of the last opening brace, with + ;; respect to the current point. + (save-excursion + (let ((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. + (save-excursion + (let ((lcb (re-search-backward "}" nil t))) + (if lcb + lcb + -1) + ) + ) +) + (defun nagios-in-block() "Determine if the point is inside of a {} block." - (setq pos (point)) - - ;; Get the position of the last opening and closing braces, with - ;; respect to the current point - (setq last-opening-brace (re-search-backward "{" nil t)) - (goto-char pos) - - (setq last-closing-brace (re-search-backward "}" nil t)) - (goto-char pos) - - ;; If either is nil (not found) just set it to -1, so the comparison - ;; doesn't die. - (if (not last-opening-brace) - (setq last-opening-brace -1)) - - (if (not last-closing-brace) - (setq last-closing-brace -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 (>= (last-closing-brace) (last-opening-brace)) nil - t) - ) + t) +) @@ -153,26 +159,6 @@ -;; Regular Expression Transformations - -(defun regexp-alt-raw(element-list) - "Takes a list of elements, and returns the string '\\(element1\\|element2...\\)'" - - ;; This is necessary since regexp-opt does not accept regular - ;; expressions as arguments. We use regexp-opt when we can, of - ;; course. - - (let ((regexp "\\(")) - (mapcar (lambda(elem) - (setq regexp (concat regexp "\\(" elem "\\)" "\\|"))) - element-list) - (concat (substring regexp 0 -2) ; Cut the last "\\|" - "\\)") - ) - ) - - - (defconst nagios-directives (eval-when-compile (concat "^[ \t\r\n]*" @@ -663,27 +649,32 @@ (concat "^[ \t\r\n]*" - (regexp-alt-raw - '("define command" - "define contact" - "define contactgroup" - "define host" - "define hostdependency" - "define hostescalation" - "define hostextinfo" - "define hostgroup" - "define hostgroupescalation" - "define null" - "define service" - "define servicedependency" - "define serviceescalation" - "define serviceextinfo" - "define servicegroup" - "define timeperiod")) - - ;; These can be "terminated" by either an opening curly - ;; brace, or a space. - "\\({\\| \\)") + "\\(" ;; Stick parenthesis around whatever comes out + ;; of regexp-opt. We use this to match a + ;; subexpression during font-lock. + (regexp-opt + '("define command" + "define contact" + "define contactgroup" + "define host" + "define hostdependency" + "define hostescalation" + "define hostextinfo" + "define hostgroup" + "define hostgroupescalation" + "define null" + "define service" + "define servicedependency" + "define serviceescalation" + "define serviceextinfo" + "define servicegroup" + "define timeperiod")) + ;; This closes the parentheses that we opened + "\\)" ;; before regexp-opt. + + ;; These can be "terminated" by either an opening curly + ;; brace, or a space. + "\\({\\| \\)") ) )