branch: elpa/haskell-ts-mode
commit 5fc77d428ddace423c0106a8fdf17f7b0a2c6abc
Author: Pranshu Sharma <[email protected]>
Commit: Pranshu Sharma <[email protected]>

    Imenu changes
    
    imenu now detects newtype + type decleratoins as well.  The type
    declarations used to be inside a recurisve imenu thing, but I removed
    it because haskell doesn't allow functions and types to have same name
    in first place.
---
 haskell-ts-mode.el | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/haskell-ts-mode.el b/haskell-ts-mode.el
index fba6dc07e84..e417435dda1 100644
--- a/haskell-ts-mode.el
+++ b/haskell-ts-mode.el
@@ -470,6 +470,7 @@ when `haskell-ts-prettify-words' is non-nil.")
      (text "string")))
   "`treesit-thing-settings' for `haskell-ts-mode'.")
 
+;; TODO make into a currying function
 (defmacro haskell-ts-imenu-name-function (check-func)
   `(lambda (node)
      (let ((nn (treesit-node-child node 0 node)))
@@ -529,9 +530,12 @@ when `haskell-ts-prettify-words' is non-nil.")
                      ,(haskell-ts-imenu-name-function 
#'haskell-ts-imenu-func-node-p))
                 ("Signatures.." haskell-ts-imenu-sig-node-p nil
                  ,(haskell-ts-imenu-name-function 
#'haskell-ts-imenu-sig-node-p))
-                ("Data..." haskell-ts-imenu-data-type-p nil
-                 (lambda (node)
-                   (treesit-node-text (treesit-node-child node 1))))))
+                (nil haskell-ts-imenu-data-type-p nil
+                     (lambda (node)
+                       (treesit-node-text (treesit-node-child node 1) t)))
+                (nil haskell-ts-imenu-typealias-type-p nil
+                     (lambda (node)
+                       (treesit-node-text (treesit-node-child node 1) t)))))
   ;; font-lock
   (setq-local treesit-font-lock-level haskell-ts-font-lock-level)
   (setq-local treesit-font-lock-settings haskell-ts-font-lock)
@@ -583,7 +587,10 @@ when `haskell-ts-prettify-words' is non-nil.")
   (haskell-ts-imenu-node-p "signature" node))
 
 (defun haskell-ts-imenu-data-type-p (node)
-  (haskell-ts-imenu-node-p "data_type" node))
+  (haskell-ts-imenu-node-p "data_type\\|newtype" node))
+
+(defun haskell-ts-imenu-typealias-type-p (node)
+  (haskell-ts-imenu-node-p "type_synomym" node))
 
 (defun haskell-ts-defun-name (node)
   (treesit-node-text (treesit-node-child node 0)))

Reply via email to