From bb9330f81af5e18d1d2b32794e7c4812989c1761 Mon Sep 17 00:00:00 2001 From: immerrr Date: Sun, 18 Sep 2011 19:22:54 +0400 Subject: [PATCH] Fix string contents indentation (issue #6) --- lua-mode.el | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lua-mode.el b/lua-mode.el index de9d4bd..57ccd20 100644 --- a/lua-mode.el +++ b/lua-mode.el @@ -450,19 +450,16 @@ Return the amount the indentation changed by." ;; save point as a distance to eob - it's invariant w.r.t indentation (pos (- (point-max) (point)))) (back-to-indentation) - (if (and (not lua-indent-string-contents) (lua-string-p)) - (goto-char (- (point-max) pos)) ;; just restore point position - - (setq indent (max 0 (- (lua-calculate-indentation nil) - (lua-calculate-unindentation)))) - (when (not (equal indent (current-column))) - (delete-region (line-beginning-position) (point)) - (indent-to indent)) - ;; If initial point was within line's indentation, - ;; position after the indentation. Else stay at same point in text. - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos))) - indent))) + (setq indent (max 0 (- (lua-calculate-indentation nil) + (lua-calculate-unindentation)))) + (when (not (equal indent (current-column))) + (delete-region (line-beginning-position) (point)) + (indent-to indent)) + ;; If initial point was within line's indentation, + ;; position after the indentation. Else stay at same point in text. + (if (> (- (point-max) pos) (point)) + (goto-char (- (point-max) pos))) + indent)) (defun lua-find-regexp (direction regexp &optional limit ignore-p) "Searches for a regular expression in the direction specified. @@ -666,7 +663,10 @@ previous one even though it looked like an end-of-statement." (let ((line-end (line-end-position))) (save-excursion (beginning-of-line) - (re-search-forward lua-cont-bol-regexp line-end t)))) + ;; if first character of the line is inside string, it's a continuation + ;; if strings aren't supposed to be indented, `lua-calculate-indentation' won't even let + ;; the control inside this function + (or (lua-comment-or-string-p) (re-search-forward lua-cont-bol-regexp line-end t))))) (defun lua-is-continuing-statement-p (&optional parse-start) "Return non-nil if the line continues a statement. @@ -860,8 +860,8 @@ In usual case returns an integer: the column to indent to." ;; if bol is inside a string, suppress any indentation ;; or all of the whitespace will go into the literal - (when (lua-string-p) - (throw 'indent 0)) + (when (and (lua-string-p) (not lua-indent-string-contents) + (throw 'indent 0))) (setq shift-amt (if (lua-is-continuing-statement-p) lua-indent-level 0)) (if (bobp) ; If we're at the beginning of the buffer, no change.