branch: elpa/nix-mode
commit 5e61391ca124d79f4fa51ff105527ac7deddfdb7
Merge: 76ad5882f0 76df9f3e6b
Author: Matthew Bauer <[email protected]>
Commit: Matthew Bauer <[email protected]>
Merge branch 'lets'
---
nix-mode.el | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/nix-mode.el b/nix-mode.el
index 7c02a1a20c..37bc17e999 100644
--- a/nix-mode.el
+++ b/nix-mode.el
@@ -168,6 +168,23 @@ If a close brace `}' ends an antiquote, the next character
begins a string."
n)
+(defun nix-indent-level-let ()
+ (save-excursion
+ (setq lets 0)
+ (setq ins 0)
+ (beginning-of-line)
+ (while (not (eq (point) (point-min)))
+ (forward-line -1)
+ (cond
+ ((and
+ (looking-at "[:space:]*let")
+ (not (looking-at ".*in")))
+ (setq lets (1+ lets)))
+ ((looking-at "[:space:]*in")
+ (setq ins (1+ ins)))))
+
+ (- lets ins)))
+
(defun nix-indent-level-is-closing ()
"Go forward from beginning of line."
(save-excursion
@@ -215,6 +232,7 @@ If a close brace `}' ends an antiquote, the next character
begins a string."
"Get current indent level."
(* tab-width (+
(nix-indent-level-parens)
+ (nix-indent-level-let)
(if (nix-indent-level-is-closing) -1
(if (nix-indent-level-is-hanging) 1 0)))))