[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/nix-mode bf027132d0 341/500: Merge pull request #83 from j
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/nix-mode bf027132d0 341/500: Merge pull request #83 from j-piecuch/smie-tweaks |
Date: |
Sat, 29 Jan 2022 08:27:19 -0500 (EST) |
branch: elpa/nix-mode
commit bf027132d04a6b16aa49606b7e7ea7d7913cd9d4
Merge: e820157994 2bb0a0c1f4
Author: Elis Hirwing <elis@hirwing.se>
Commit: GitHub <noreply@github.com>
Merge pull request #83 from j-piecuch/smie-tweaks
Improve indentation of let expressions
---
nix-mode.el | 28 ++++++++++++++-------------
tests/nix-mode-tests.el | 4 ++++
tests/testcases/smie-let.nix | 45 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 64 insertions(+), 13 deletions(-)
diff --git a/nix-mode.el b/nix-mode.el
index 4fa219ce14..6e354cc19e 100644
--- a/nix-mode.el
+++ b/nix-mode.el
@@ -433,15 +433,21 @@ STRING-TYPE type of string based off of Emacs syntax
table types"
(`(:after . ,(guard (string-match-p nix-smie-indent-tokens-re
token)))
(nix-smie--indent-anchor))
- (`(:after . "in")
- (cond
- ((bolp) '(column . 0))
- ((<= (line-beginning-position)
- (save-excursion
- (forward-word)
- (smie-backward-sexp t)
- (point)))
- (smie-rule-parent))))
+ (`(,_ . "in")
+ (let ((bol (line-beginning-position)))
+ (forward-word)
+ ;; Go back to the corresponding "let".
+ (smie-backward-sexp t)
+ (pcase kind
+ (:before
+ (if (smie-rule-hanging-p)
+ (nix-smie--indent-anchor 0)
+ `(column . ,(current-column))))
+ (:after
+ (cond
+ ((bolp) '(column . 0))
+ ((<= bol (point))
+ `(column . ,(current-column))))))))
(`(:after . "nonsep-;")
(forward-char)
(backward-sexp)
@@ -453,10 +459,6 @@ STRING-TYPE type of string based off of Emacs syntax table
types"
(nix-smie--indent-anchor)))
(`(:after . ",")
(smie-rule-parent tab-width))
- (`(:before . "in")
- (forward-word)
- (smie-backward-sexp t)
- (nix-smie--indent-anchor 0))
(`(:before . ",")
;; The parent is either the enclosing "{" or some previous ",".
;; In both cases this is what we want to align to.
diff --git a/tests/nix-mode-tests.el b/tests/nix-mode-tests.el
index 2a58e0d67c..f3e4a77b98 100644
--- a/tests/nix-mode-tests.el
+++ b/tests/nix-mode-tests.el
@@ -197,5 +197,9 @@ Related issue: https://github.com/NixOS/nix-mode/issues/72"
"Proper indentation of closing parentheses."
(with-nix-mode-test ("smie-close-parens.nix" :indent 'smie-indent-line)))
+(ert-deftest nix-mode-test-let-smie ()
+ "Proper indentation of let expressions."
+ (with-nix-mode-test ("smie-let.nix" :indent 'smie-indent-line)))
+
(provide 'nix-mode-tests)
;;; nix-mode-tests.el ends here
diff --git a/tests/testcases/smie-let.nix b/tests/testcases/smie-let.nix
new file mode 100644
index 0000000000..ab21db86b4
--- /dev/null
+++ b/tests/testcases/smie-let.nix
@@ -0,0 +1,45 @@
+let
+ foo = 42;
+ bar = let foo = 42; in
+ let bar = 42; in
+ 42;
+ baz = 42;
+in
+let foo = 42; in
+let foo = 42;
+ bar = 42;
+in
+let foo = let
+ bar = 42;
+ in
+ 42;
+ bar = 42;
+in
+let
+ foo = let
+ bar = 42;
+ in
+ 42;
+ bar = 42;
+in
+let foo = 42;
+in
+{
+ foo = let
+ bar = 42;
+ in
+ 42;
+
+ foo = let bar = 42;
+ in 42;
+
+ foo = let bar = 42; in
+ 42;
+
+ foo =
+ let
+ foo = 42;
+ bar = 42;
+ in
+ 42;
+}
- [nongnu] elpa/nix-mode 218c885d78 414/500: Merge pull request #116 from taku0/update-install-nix-action, (continued)
- [nongnu] elpa/nix-mode 218c885d78 414/500: Merge pull request #116 from taku0/update-install-nix-action, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode d6e895969b 400/500: Set the 'LD_LIBRARY_PATH' environment variable for mkShell, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode c041115673 301/500: Fix failing test., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 01c53b7ff1 289/500: Merge pull request #66 from etu/add-travis-badge, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 1d31733ef8 311/500: Add more function documentation, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode be06d675b8 315/500: Run tests for nix-indent-line and smie-indent-line, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode a33ccd4fd7 322/500: Add more issue test cases, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode ce8f523eb6 330/500: Set the indent function to the value passed in in with-nix-mode-test, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 023a471576 329/500: Remove unnecessary while loop., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 82d26d496a 335/500: Fix easy-menu name, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode bf027132d0 341/500: Merge pull request #83 from j-piecuch/smie-tweaks,
ELPA Syncer <=
- [nongnu] elpa/nix-mode 5b5961780f 358/500: Merge pull request #90 from purcell/dash-syntax, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode aa1fa07344 342/500: Fix handling of keywords in identifiers, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7d681ff81b 357/500: Merge pull request #91 from purcell/relative-executable-paths, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 47ec698474 422/500: Add version to invocation of define-obsolete-function-alias, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode e32c6bf7ad 415/500: Merge pull request #115 from taku0/ffap-in-string, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 30587b2205 411/500: Merge pull request #114 from TristanCacqueray/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 471a90ac96 394/500: Release 1.4.5, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode fe00d5930b 423/500: Merge pull request #119 from NixOS/derived-nix-drv-mode, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7e081a560b 427/500: nix-drv-mode.el: make regexp more selective, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 91e1a05ea6 399/500: Merge pull request #107 from rossabaker/check-for-proc, ELPA Syncer, 2022/01/29