[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode 8c2e3f7 157/385: better symid indentation
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode 8c2e3f7 157/385: better symid indentation |
Date: |
Tue, 5 Oct 2021 23:59:21 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit 8c2e3f76a0791e1adcb941414b3403ec40dd4df4
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
better symid indentation
---
haskell-tng-smie.el | 30 ++++++++++++++++++++++--------
test/src/indentation.hs | 11 +++++++++--
test/src/indentation.hs.append.indent | 32 +++++++++++++++++++++++---------
test/src/indentation.hs.insert.indent | 30 ++++++++++++++++++++++--------
test/src/indentation.hs.layout | 13 ++++++++++---
test/src/indentation.hs.lexer | 13 ++++++++++---
test/src/indentation.hs.reindent | 30 ++++++++++++++++++++++--------
test/src/indentation.hs.sexps | 15 +++++++++++----
test/src/indentation.hs.syntax | 11 +++++++++--
9 files changed, 138 insertions(+), 47 deletions(-)
diff --git a/haskell-tng-smie.el b/haskell-tng-smie.el
index 0d7ba97..8b2f647 100644
--- a/haskell-tng-smie.el
+++ b/haskell-tng-smie.el
@@ -92,6 +92,8 @@
(id "<-" id)
(id "->" id)
)
+ (lambdas
+ ("\\" id))
(logic
("if" id "then" id "else" id))
@@ -157,7 +159,7 @@ information, to aid in the creation of new rules."
(when-let (grand (caddr (smie-indent--grandparent)))
(with-current-buffer haskell-tng-smie:debug
(insert (format " GRAND: %S\n" grand))))
- (when-let (prev (caddr (smie-indent--previous-line-start)))
+ (when-let (prev (caddr (smie-indent--prev-line-start)))
(with-current-buffer haskell-tng-smie:debug
(insert (format " PREV: %S\n" prev)))))
@@ -176,7 +178,7 @@ information, to aid in the creation of new rules."
((or (smie-rule-parent-p "|")
(and (smie-rule-parent-p "=")
(smie-rule-grandparent-p "data"))
- (smie-rule-previous-line-start-p "|"))
+ (smie-rule-prev-line-start-p "|"))
"|")
((save-excursion
@@ -198,15 +200,17 @@ information, to aid in the creation of new rules."
(:list-intro
(pcase arg
- ((or "<-" "$") t)
+ ((or "<-" "$" "SYMID") t)
("=" (not (smie-rule-parent-p "data")))
))
(:after
(pcase arg
- ((or "let" "do" "of" "=" "in" "$" "->") 2)
+ ((or "let" "do" "of" "=" "in" "->" "\\") 2)
("\\case" 2) ;; LambdaCase
("where" (if (smie-rule-parent-p "module") 0 2))
+ ((or "$" "SYMID")
+ (if (smie-rule-hanging-p) 2 (smie-rule-parent)))
))
(:before
@@ -221,7 +225,7 @@ information, to aid in the creation of new rules."
;;
;; blah = bloo where
;; bloo = blu
- ((or "{" "where" "let" "do" "case" "$" "->")
+ ((or "{" "where" "let" "do" "case" "->" "$" "SYMID")
;; TODO { here should only be for WLDOs
(smie-rule-parent))
("\\case" ;; LambdaCase
@@ -230,6 +234,8 @@ information, to aid in the creation of new rules."
(if (smie-rule-parent-p "=")
(smie-rule-parent-column)
(smie-rule-separator method)))
+ (_ (when (smie-rule-parent-p "$" "SYMID")
+ (smie-rule-parent)))
))
))
@@ -241,6 +247,10 @@ information, to aid in the creation of new rules."
haskell-tng-smie:debug-newline)
"Users with custom newlines should add their command.")
+;; TODO newline and indent at the beginning of a line should be the same as
+;; newline and indent at the end of the previous line. Newline in the middle of
+;; a line is trickier.
+
(defvar-local haskell-tng-smie:indentations nil)
(defun haskell-tng-smie:indent-cycle ()
"When invoked more than once, returns an alternative indentation level."
@@ -384,7 +394,7 @@ use the column indentation as the parent. Note that
"Like `smie-rule-parent-p' but for the parent's parent."
(member (nth 2 (smie-indent--grandparent)) grandparents))
-(defun smie-indent--previous-line-start ()
+(defun smie-indent--prev-line-start ()
"Like `smie-indent--parent' but for the previous line's first
token."
(save-excursion
@@ -393,9 +403,13 @@ use the column indentation as the parent. Note that
(tok (funcall smie-forward-token-function)))
(list nil pos tok))))
-(defun smie-rule-previous-line-start-p (&rest tokens)
+(defun smie-rule-prev-line-start-p (&rest tokens)
"Like `smie-rule-parent-p' but for the parent's parent."
- (member (nth 2 (smie-indent--previous-line-start)) tokens))
+ (member (nth 2 (smie-indent--prev-line-start)) tokens))
+
+(defun smie-prev-token-p (&rest tokens)
+ "Like `smie-rule-prev-p' but doesn't filter based on the grammar table."
+ (member (save-excursion (funcall smie-backward-token-function)) tokens))
(provide 'haskell-tng-smie)
;;; haskell-tng-smie.el ends here
diff --git a/test/src/indentation.hs b/test/src/indentation.hs
index b981d2f..2b0db4e 100644
--- a/test/src/indentation.hs
+++ b/test/src/indentation.hs
@@ -53,8 +53,10 @@ implicit_let foo bar =
in rar
case_of wibble = case wibble of
- Nothing -> ""
- Just fish -> fish
+ Nothing ->
+ ""
+ Just fish ->
+ fish
lambda_case = \case
Nothing -> ""
@@ -66,6 +68,11 @@ dollars f Nothing = f $
dollars f (Just a) = f $ \s ->
a
+not_dollars = do
+ db' <- liftIO $ readMVar db
+ shouldGoHere <$>
+ here
+
data Wibble = Wibble Int
| Wobble Int
| Vibble Int
diff --git a/test/src/indentation.hs.append.indent
b/test/src/indentation.hs.append.indent
index 3c3e1db..1392bd9 100644
--- a/test/src/indentation.hs.append.indent
+++ b/test/src/indentation.hs.append.indent
@@ -108,12 +108,16 @@ v 1 2
v 1 2
case_of wibble = case wibble of
1 v
- Nothing -> ""
-1 v
- Just fish -> fish
-1 v
+ Nothing ->
+2 1 v
+ ""
+2 v 1
+ Just fish ->
+2 1 v
+ fish
+2 v 1
-1 v
+1 v 2
lambda_case = \case
1 v
Nothing -> ""
@@ -125,15 +129,25 @@ lambda_case = \case
dollars f Nothing = f $
1 v
"" ""
-1 v
+v 1
""
-1 v
+v 1
dollars f (Just a) = f $ \s ->
1 v
a
-2 1 v
+v 1
+
+v 1
+not_dollars = do
+1 v
+ db' <- liftIO $ readMVar db
+2 v 1
+ shouldGoHere <$>
+2 1 v 3
+ here
+2 v 1 3
-1 2 v
+1 v 2 3
data Wibble = Wibble Int
v
| Wobble Int
diff --git a/test/src/indentation.hs.insert.indent
b/test/src/indentation.hs.insert.indent
index ea7776d..f7eedd9 100644
--- a/test/src/indentation.hs.insert.indent
+++ b/test/src/indentation.hs.insert.indent
@@ -108,12 +108,16 @@ v 1 2
v 1 2
case_of wibble = case wibble of
1 v
- Nothing -> ""
-1 v
- Just fish -> fish
-1 v
+ Nothing ->
+2 1 v
+ ""
+2 v 1
+ Just fish ->
+2 1 v
+ fish
+2 v 1
-1 v
+1 v 2
lambda_case = \case
1 v
Nothing -> ""
@@ -127,13 +131,23 @@ dollars f Nothing = f $
"" ""
1 v
""
-1 v
+v 1
dollars f (Just a) = f $ \s ->
1 v
a
-2 1 v
+v 1
+
+v 1
+not_dollars = do
+1 v
+ db' <- liftIO $ readMVar db
+2 v 1
+ shouldGoHere <$>
+2 1 v 3
+ here
+2 v 1 3
-1 2 v
+1 v 2 3
data Wibble = Wibble Int
1 v
| Wobble Int
diff --git a/test/src/indentation.hs.layout b/test/src/indentation.hs.layout
index 7014959..b7767cd 100644
--- a/test/src/indentation.hs.layout
+++ b/test/src/indentation.hs.layout
@@ -53,8 +53,10 @@ module Indentation where
}in rar
;case_of wibble = case wibble of
- {Nothing -> ""
- ;Just fish -> fish
+ {Nothing ->
+ ""
+ ;Just fish ->
+ fish
};lambda_case = \case
{Nothing -> ""
@@ -66,7 +68,12 @@ module Indentation where
;dollars f (Just a) = f $ \s ->
a
-;data Wibble = Wibble Int
+;not_dollars = do
+ {db' <- liftIO $ readMVar db
+ ;shouldGoHere <$>
+ here
+
+};data Wibble = Wibble Int
| Wobble Int
| Vibble Int
}
\ No newline at end of file
diff --git a/test/src/indentation.hs.lexer b/test/src/indentation.hs.lexer
index 8e81755..5ff22ed 100644
--- a/test/src/indentation.hs.lexer
+++ b/test/src/indentation.hs.lexer
@@ -53,8 +53,10 @@ let { VARID = VARID
} in VARID
; VARID VARID = case VARID of
-{ CONID -> §
-; CONID VARID -> VARID
+{ CONID ->
+§
+; CONID VARID ->
+VARID
} ; VARID = \case
{ CONID -> §
@@ -66,7 +68,12 @@ let { VARID = VARID
; VARID VARID « CONID VARID » = VARID $ \ VARID ->
VARID
-; data CONID = CONID CONID
+; VARID = do
+{ VARID <- VARID $ VARID VARID
+; VARID SYMID
+VARID
+
+} ; data CONID = CONID CONID
| CONID CONID
| CONID CONID
}
diff --git a/test/src/indentation.hs.reindent b/test/src/indentation.hs.reindent
index 2a22693..b6181e0 100644
--- a/test/src/indentation.hs.reindent
+++ b/test/src/indentation.hs.reindent
@@ -108,13 +108,17 @@ v 1 2
v 1 2
case_of wibble = case wibble of
-1 v
- Nothing -> ""
-v 1
- Just fish -> fish
-1 v
+1 v 2
+ Nothing ->
+2 1 v
+ ""
+v 2 1
+ Just fish ->
+2 1 v
+ fish
+2 v 1
-v 1
+v 1 2
lambda_case = \case
1 v
Nothing -> ""
@@ -132,9 +136,19 @@ v 1
dollars f (Just a) = f $ \s ->
1 v
a
-2 1 v
+v 1
+
+v 1
+not_dollars = do
+1 v 2
+ db' <- liftIO $ readMVar db
+v 1 3 2
+ shouldGoHere <$>
+2 1 v 3
+ here
+2 v 1 3
-v 2 1
+v 2 3 4 1
data Wibble = Wibble Int
1 v
| Wobble Int
diff --git a/test/src/indentation.hs.sexps b/test/src/indentation.hs.sexps
index 73ea076..32ad8d7 100644
--- a/test/src/indentation.hs.sexps
+++ b/test/src/indentation.hs.sexps
@@ -53,8 +53,10 @@
)in) (rar)
((case_of) (wibble) = ((case (wibble) (of)
- ((Nothing) -> ("")
- ((Just) (fish) -> (fish))
+ ((Nothing) ->
+ ("")
+ ((Just) (fish) ->
+ (fish))
)(lambda_case) = (\(case
((Nothing) -> ("")
@@ -66,7 +68,12 @@
((dollars) (f) ((Just) (a)) = (f) $ (\)(s) ->
(a)
-(data (Wibble) = (Wibble) (Int)
+((not_dollars) = (do
+ ((db') <- (liftIO) $ (readMVar) (db)
+ ((shouldGoHere) <$>
+ (here))
+
+)data (Wibble) = (Wibble) (Int)
| (Wobble) (Int)
- | (Vibble) (Int))))))))))))
+ | (Vibble) (Int)))))))))))))
)))
\ No newline at end of file
diff --git a/test/src/indentation.hs.syntax b/test/src/indentation.hs.syntax
index ede9586..115fdcb 100644
--- a/test/src/indentation.hs.syntax
+++ b/test/src/indentation.hs.syntax
@@ -53,8 +53,10 @@ wwwwwwwwwwww www www _>
ww www>
>
wwwwwww wwwwww _ wwww wwwwww ww>
- wwwwwww __ "">
- wwww wwww __ wwww>
+ wwwwwww __>
+ "">
+ wwww wwww __>
+ wwww>
>
wwwwwwwwwww _ _wwww>
wwwwwww __ "">
@@ -66,6 +68,11 @@ wwwwwww w wwwwwww _ w _>
wwwwwww w (wwww w) _ w _ _w __>
w>
>
+wwwwwwwwwww _ ww>
+ www __ wwwwww _ wwwwwwww ww>
+ wwwwwwwwwwww ___>
+ wwww>
+>
wwww wwwwww _ wwwwww www>
_ wwwwww www>
_ wwwwww www>
- [nongnu] elpa/haskell-tng-mode a0f777e 166/385: Revert "duplicate ; tokens to be used as terminators", (continued)
- [nongnu] elpa/haskell-tng-mode a0f777e 166/385: Revert "duplicate ; tokens to be used as terminators", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2320b89 167/385: alternative to smie-rules-* in :elem and :list-intro, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 60d8c20 149/385: indent "case of", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7f9afd2 159/385: list indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6e70344 165/385: duplicate ; tokens to be used as terminators, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ab5252b 169/385: rearrange alts, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e1aba33 168/385: fix a layout bug in lists and records, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2c6c772 150/385: better WLDO indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3f54673 155/385: don't fontify toplevel, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 32175c0 158/385: thots, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 8c2e3f7 157/385: better symid indentation,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode bc5c827 160/385: tuple indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e0acc42 156/385: better tasty error detection, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode c211672 174/385: indentation for hanging type definition, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ef7f335 171/385: note stack compatibility, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 86bcd98 175/385: constraint indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e1c0f0a 179/385: allow indentation option to be tested, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 1cceb64 182/385: cleaner tests, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode b1122e4 188/385: allow users to use unsupported build tools, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode bd4ff6f 192/385: standardise on naming convention:, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3b5ac7f 190/385: package-lint, ELPA Syncer, 2021/10/06