branch: elpa/nginx-mode
commit 0dd70cf398dd6de6282dbbcff86ccf27c0d4e3ed
Author: Tom Willemse <[email protected]>
Commit: Tom Willemse <[email protected]>
Fix indentation of closing braces
The ‘nginx-indent-block’ function would get confused by braces in comments.
Here
is an example of how indentation could go wrong:
server {
# some comment with {
# ...
}
After this change the example is correctly indented:
server {
# some comment with {
# ...
}
---
nginx-mode.el | 22 +++-------------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/nginx-mode.el b/nginx-mode.el
index b01367c596..d63733250a 100644
--- a/nginx-mode.el
+++ b/nginx-mode.el
@@ -76,24 +76,8 @@
"If point is in a block, return the indentation of the first line of that
block (the line containing the opening brace). Used to set the indentation
of the closing brace of a block."
- (save-excursion
- (save-match-data
- (let ((opoint (point))
- (apoint (search-backward "{" nil t)))
- (when apoint
- ;; This is a bit of a hack and doesn't allow for strings. We really
- ;; want to parse by sexps at some point.
- (let ((close-braces (count-matches "}" apoint opoint))
- (open-braces 0))
- (while (and apoint (> close-braces open-braces))
- (setq apoint (search-backward "{" nil t))
- (when apoint
- (setq close-braces (count-matches "}" apoint opoint))
- (setq open-braces (1+ open-braces)))))
- (if apoint
- (current-indentation)
- nil))))))
-
+ (* (syntax-ppss-depth (syntax-ppss))
+ nginx-indent-level))
(defun nginx-comment-line-p ()
"Return non-nil iff this line is a comment."
@@ -116,7 +100,7 @@ of the closing brace of a block."
;; This line contains a closing brace and we're at the inner
;; block, so we should indent it matching the indentation of
;; the opening brace of the block.
- (setq cur-indent block-indent))
+ (setq cur-indent (- block-indent nginx-indent-level)))
(t
;; Otherwise, we did not start on a block-ending-only line.
(save-excursion