X-Git-Url: http://gitweb.michael.orlitzky.com/?p=nagios-mode.git;a=blobdiff_plain;f=nagios-mode.el;fp=nagios-mode.el;h=5745f10482fb7334e1d54f4aaa11ee6634b940c3;hp=7ae478dee6b7c8ed532104c1e6ba0e6d08e5fc26;hb=a515f52d47af90f1db1cb3b01a968027154f962c;hpb=823c37d1da15133dc49060b55798922fda346842 diff --git a/nagios-mode.el b/nagios-mode.el index 7ae478d..5745f10 100644 --- a/nagios-mode.el +++ b/nagios-mode.el @@ -49,10 +49,18 @@ ) ) +(defun end-of-line-pos() + ;; Return the point position corresponding to the end + ;; of the current line. + (save-excursion + (end-of-line) + (point) + ) +) + (defun pos-offset() ;; How far are we from the beginning of the line? (- (point) (beginning-of-line-pos)) - ) ) (defun first-char-offset() @@ -72,7 +80,7 @@ "Indent the current line to column indent-column." ;; Store the point in orig-pos. - (let ((orig-pos (point))) + (let ((orig-point (point))) ;; And store the offset of the first character (with respect to the ;; beginning of the line) in orig-first-char-offset. @@ -90,7 +98,7 @@ ;; 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 (- (first-char-offset) orig-first-char-offset))) (goto-char (+ orig-point text-delta)) ) ) @@ -134,32 +142,34 @@ ) +(defun brace-on-line() + ;; Is there a curly brace on this line? + (save-excursion + (re-search-forward "[{}]" (end-of-line-pos) t) + ) +) (defun nagios-calculate-indent() "Calculate the level of indentation." ;; We're either inside a block, or we aren't. - (setq indent 0) - - (if (nagios-in-block) - (setq indent nagios-indent-level)) - - (setq pos (point)) - (end-of-line) - (setq eol (point)) - (beginning-of-line) - (setq bol (point)) - - ;; Set the indentation level to 0 if we find either brace on this - ;; line. - (if (re-search-forward "[{}]" eol t) - (setq indent 0)) - - (goto-char pos) + ;; Initialize the indent variable to either nagios-indent-level + ;; or 0 depending on whether or not we're in a block. + (let ((indent (if (nagios-in-block) + (setq indent nagios-indent-level) + 0) + ) + ) - indent - ) + ;; Set the indentation level to 0 if we find either brace on this + ;; line. + (if (brace-on-line) + (setq indent 0) + ) + indent + ) +) ;; Keymaps