[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/nix-mode 9ab56cd6c9 035/500: Refactor indenting
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/nix-mode 9ab56cd6c9 035/500: Refactor indenting |
Date: |
Sat, 29 Jan 2022 08:26:33 -0500 (EST) |
branch: elpa/nix-mode
commit 9ab56cd6c9d3f34fa8c1b1fa991e9ae7f896369c
Author: Matthew Bauer <mjbauer95@gmail.com>
Commit: Matthew Bauer <mjbauer95@gmail.com>
Refactor indenting
---
nix-mode.el | 64 ++++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 51 insertions(+), 13 deletions(-)
diff --git a/nix-mode.el b/nix-mode.el
index 95c5afdc1d..6ea8a238f6 100644
--- a/nix-mode.el
+++ b/nix-mode.el
@@ -150,22 +150,60 @@ If a close brace `}' ends an antiquote, the next
character begins a string."
(0 (ignore (nix-syntax-propertize-close-brace)))))
start end))
-(defun nix-indent-level ()
- "Get current indent level."
+(defun nix-indent-level-parens (p1)
+ "Find indent level based on parens."
+ (save-excursion
+ (beginning-of-line)
+ (let ((p2 (nth 1 (syntax-ppss))))
+ (if p2 (progn
+ (goto-char p2)
+ (backward-char)
+ (let ((l1 (line-number-at-pos p1))
+ (l2 (line-number-at-pos p2)))
+ (+ (if (eq l1 l2) 0 1) (nix-indent-level-parens p2))))
+ 0))))
+
+(defun nix-indent-level-is-closing ()
+ "Go forward from beginning of line."
+ (save-excursion
+ (beginning-of-line)
+ (skip-chars-forward "[:space:]")
+ (or
+ (looking-at ")")
+ (looking-at "}")
+ (looking-at "''")
+ (looking-at ","))))
+
+(defun nix-indent-level-is-hanging ()
+ "Is hanging?"
(save-excursion
(beginning-of-line)
(skip-chars-forward "[:space:]")
- (let ((baseline (+
- (* tab-width (nth 0 (syntax-ppss)))
- (if (nth 3 (syntax-ppss)) tab-width 0))))
- (cond
- ;; ((looking-at "})") (- baseline (* 2 tab-width)))
- ((looking-at "[]})]") (- baseline tab-width))
- ((looking-at "''") (- baseline tab-width))
- ((looking-at ", ") (- baseline tab-width))
- ;; ((nix-inside-args) (- baseline tab-width))
- ;; ((nix-inside-let) (+ baseline tab-width))
- (t baseline)))))
+ (unless (or
+ (looking-at "}")
+ (looking-at ")"))
+ (forward-line -1)
+ (end-of-line)
+ (skip-chars-backward "\n[:space:]")
+ (while (nth 4 (syntax-ppss))
+ (goto-char (nth 8 (syntax-ppss)))
+ (skip-chars-backward "\n[:space:]"))
+ (forward-char -1)
+ (unless (or
+ (and (looking-at "/") (looking-back "*"))
+ (looking-at ";")
+ (looking-at ":")
+ (looking-at "{")
+ (looking-at "(")
+ (looking-at ","))
+ t))))
+
+(defun nix-indent-level ()
+ "Get current indent level."
+ (* tab-width (+
+ (nix-indent-level-parens (point))
+ (if (nix-indent-level-is-closing) -1
+ (if (nix-indent-level-is-hanging) 1 0)))))
(defun nix-indent-line ()
"Indent current line in a Nix expression."
- [nongnu] elpa/nix-mode aa47e0c5ae 302/500: Fix indentation of lambdas starting at bol., (continued)
- [nongnu] elpa/nix-mode aa47e0c5ae 302/500: Fix indentation of lambdas starting at bol., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode e744c602fd 304/500: Replace regex operations with faster alternatives in the lexer., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 8721f63650 310/500: Merge pull request #79 from j-piecuch/smie, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 5fcdd667de 312/500: Make smie-indent-line the default indent function, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode b902e15c1f 003/500: Create nix-mode.el, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 1e74e5021a 002/500: Create LICENSE, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 616c368898 007/500: Add two spaces after period., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7292d8971c 021/500: Refactor indenting, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 7f69c71f8d 019/500: Fixup mode map., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 32929d9aed 024/500: Indent relative for string, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 9ab56cd6c9 035/500: Refactor indenting,
ELPA Syncer <=
- [nongnu] elpa/nix-mode 65d0b6471f 039/500: Add more font lock constants., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 5e61391ca1 047/500: Merge branch 'lets', ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode ddf091708b 353/500: Merge pull request #87 from conao3/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode abf54fb448 354/500: Emacs 25 is now the minimum version required, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode de6ef0d0c7 355/500: Give "-" the "symbol" character class, since it is a legal symbol constituent, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 28e83dd56b 360/500: Don’t overwrite smie-indent-exps & smie-indent-close, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode 9f24153d67 367/500: Remove redundant case in tokenizer., ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode b4518ae3ee 374/500: fixed a typo, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode d13d70b37d 377/500: Merge pull request #102 from yilinwei/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/nix-mode a00b3f776d 384/500: Merge pull request #103 from yilinwei/patch-1, ELPA Syncer, 2022/01/29