emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/haskell-tng-mode 4ec6259 185/385: prefer the lexer


From: ELPA Syncer
Subject: [nongnu] elpa/haskell-tng-mode 4ec6259 185/385: prefer the lexer
Date: Tue, 5 Oct 2021 23:59:28 -0400 (EDT)

branch: elpa/haskell-tng-mode
commit 4ec62598a70980645af1c3d471fbb36be85d62d7
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>

    prefer the lexer
---
 haskell-tng-smie.el | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/haskell-tng-smie.el b/haskell-tng-smie.el
index 641c30d..d640e3a 100644
--- a/haskell-tng-smie.el
+++ b/haskell-tng-smie.el
@@ -215,7 +215,8 @@ information, to aid in the creation of new rules."
                                 (or (smie-backward-sexp)
                                     (bobp))))))
                (next (save-excursion
-                       (car (smie-indent-forward-token)))))
+                       (car (smie-indent-forward-token))))
+               (prevline (haskell-tng-smie:prev-line-tokens)))
 
           (when haskell-tng-smie:debug
             (with-current-buffer haskell-tng-smie:debug
@@ -237,8 +238,7 @@ information, to aid in the creation of new rules."
             "|")
 
            ((and (member parent '("::" "=>"))
-                 (not (haskell-tng-smie:search-prev-line
-                       (rx (>= 2 (+ anything) "->")))))
+                 (< (--count (equal it "=>") prevline) 2))
             "=>")
 
            ((equal parent "deriving")
@@ -454,13 +454,18 @@ Inspired by `smie-indent--parent', which can only be used 
in
         (cons tok (haskell-tng-smie:ancestors (- n 1)))
       (list tok))))
 
-(defun haskell-tng-smie:search-prev-line (regexp)
+(defun haskell-tng-smie:prev-line-tokens ()
   "Search forward on the previous non-empty line"
   (save-excursion
     (beginning-of-line)
     (forward-comment (- (point)))
     (beginning-of-line)
-    (re-search-forward regexp (line-end-position) t)))
+    (let ((eol (line-end-position))
+          tokens)
+      (while (< (point) eol)
+        (when-let (tok (smie-indent-forward-token))
+          (push (car tok) tokens)))
+      (reverse tokens))))
 
 ;; SMIE wishlist, in order of desirability:
 ;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]