branch: elpa/lua-mode
commit bb9330f81af5e18d1d2b32794e7c4812989c1761
Author: immerrr <[email protected]>
Commit: immerrr <[email protected]>
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.